Thanks, that change makes it look a bit tidier - I'll send a v2 and wait to see what Jason thinks.
On 5 January 2018 at 16:06, Lionel Landwerlin <lionel.g.landwer...@intel.com > wrote: > This makes sense to me, it would be good to have Jason's opinion. > I have a suggestion below. > > Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com> > > Thanks! > > > On 05/01/18 11:20, Alex Smith wrote: > >> This was never enabled in secondary buffers because hiz_enabled was >> never set to true for those. >> >> If the app provides a framebuffer in the inheritance info when beginning >> a secondary buffer, we can determine if HiZ is enabled and therefore >> allow the PMA optimization to be enabled within the command buffer. >> >> This improves performance by ~13% on an internal benchmark on Skylake. >> >> Signed-off-by: Alex Smith <asm...@feralinteractive.com> >> --- >> src/intel/vulkan/genX_cmd_buffer.c | 22 +++++++++++++++++++++- >> 1 file changed, 21 insertions(+), 1 deletion(-) >> >> diff --git a/src/intel/vulkan/genX_cmd_buffer.c >> b/src/intel/vulkan/genX_cmd_buffer.c >> index 0bd3874db7..2036151249 100644 >> --- a/src/intel/vulkan/genX_cmd_buffer.c >> +++ b/src/intel/vulkan/genX_cmd_buffer.c >> @@ -977,11 +977,31 @@ genX(BeginCommandBuffer)( >> anv_render_pass_from_handle(pBeginInfo->pInheritanceInfo->r >> enderPass); >> cmd_buffer->state.subpass = >> &cmd_buffer->state.pass->subpasses[pBeginInfo->pInheritance >> Info->subpass]; >> - cmd_buffer->state.framebuffer = NULL; >> + >> + /* This is optional in the inheritance info. */ >> + cmd_buffer->state.framebuffer = >> + anv_framebuffer_from_handle(pBeginInfo->pInheritanceInfo->f >> ramebuffer); >> result = genX(cmd_buffer_setup_attachments)(cmd_buffer, >> >> cmd_buffer->state.pass, NULL); >> + /* Record that HiZ is enabled if we can. */ >> + if (cmd_buffer->state.framebuffer) { >> > > You might be able to knock a few lines below by reusing > anv_cmd_buffer_get_depth_stencil_view(). > > > + const VkAttachmentReference * const ds = >> + &cmd_buffer->state.subpass->depth_stencil_attachment; >> + >> + if (ds->attachment != VK_ATTACHMENT_UNUSED) { >> + const struct anv_image_view * const iview = >> + cmd_buffer->state.framebuffer->attachments[ds-> >> attachment]; >> + const struct anv_image * const image = iview->image; >> + enum isl_aux_usage aux_usage = >> + anv_layout_to_aux_usage(&cmd_buffer->device->info, image, >> + VK_IMAGE_ASPECT_DEPTH_BIT, >> ds->layout); >> + >> + cmd_buffer->state.hiz_enabled = aux_usage == >> ISL_AUX_USAGE_HIZ; >> + } >> + } >> + >> cmd_buffer->state.dirty |= ANV_CMD_DIRTY_RENDER_TARGETS; >> } >> >> > > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev