mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 13:40:16 +01:00
anv: Allow PMA optimization to be enabled in secondary command buffers
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. v2: Use anv_cmd_buffer_get_depth_stencil_view(). Signed-off-by: Alex Smith <asmith@feralinteractive.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
7e025def6d
commit
0d8b9c529c
1 changed files with 21 additions and 1 deletions
|
|
@ -977,11 +977,31 @@ genX(BeginCommandBuffer)(
|
||||||
anv_render_pass_from_handle(pBeginInfo->pInheritanceInfo->renderPass);
|
anv_render_pass_from_handle(pBeginInfo->pInheritanceInfo->renderPass);
|
||||||
cmd_buffer->state.subpass =
|
cmd_buffer->state.subpass =
|
||||||
&cmd_buffer->state.pass->subpasses[pBeginInfo->pInheritanceInfo->subpass];
|
&cmd_buffer->state.pass->subpasses[pBeginInfo->pInheritanceInfo->subpass];
|
||||||
cmd_buffer->state.framebuffer = NULL;
|
|
||||||
|
/* This is optional in the inheritance info. */
|
||||||
|
cmd_buffer->state.framebuffer =
|
||||||
|
anv_framebuffer_from_handle(pBeginInfo->pInheritanceInfo->framebuffer);
|
||||||
|
|
||||||
result = genX(cmd_buffer_setup_attachments)(cmd_buffer,
|
result = genX(cmd_buffer_setup_attachments)(cmd_buffer,
|
||||||
cmd_buffer->state.pass, NULL);
|
cmd_buffer->state.pass, NULL);
|
||||||
|
|
||||||
|
/* Record that HiZ is enabled if we can. */
|
||||||
|
if (cmd_buffer->state.framebuffer) {
|
||||||
|
const struct anv_image_view * const iview =
|
||||||
|
anv_cmd_buffer_get_depth_stencil_view(cmd_buffer);
|
||||||
|
|
||||||
|
if (iview) {
|
||||||
|
VkImageLayout layout =
|
||||||
|
cmd_buffer->state.subpass->depth_stencil_attachment.layout;
|
||||||
|
|
||||||
|
enum isl_aux_usage aux_usage =
|
||||||
|
anv_layout_to_aux_usage(&cmd_buffer->device->info, iview->image,
|
||||||
|
VK_IMAGE_ASPECT_DEPTH_BIT, layout);
|
||||||
|
|
||||||
|
cmd_buffer->state.hiz_enabled = aux_usage == ISL_AUX_USAGE_HIZ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cmd_buffer->state.dirty |= ANV_CMD_DIRTY_RENDER_TARGETS;
|
cmd_buffer->state.dirty |= ANV_CMD_DIRTY_RENDER_TARGETS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue