anv: Don't assume depth/stencil attachments have depth

If a secondary command buffer is used and the client provides a
framebuffer and that framebuffer has a stencil-only attchment, we would
try to get the aux usage for the depth component of that attachment and
crash.  Check the aspects of the image before looking at aux usage.
This fixes at least the following SkQP tests on my Tigerlake:

 - vk_circular-clips
 - vk_filterfastbounds
 - vk_innershapes_bw
 - vk_lineclosepath
 - vk_multipicturedraw_rrectclip_simple
 - vk_pathinvfill
 - vk_quadclosepath
 - vk_rrect_clip_bw
 - vk_windowrectangles

Fixes: 0d8b9c529c ("anv: Allow PMA optimization to be enabled in secondary command buffers")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Matt Turner <mattst88@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15048>
(cherry picked from commit df0e2a1565)
This commit is contained in:
Jason Ekstrand 2022-02-16 14:51:21 -06:00 committed by Dylan Baker
parent 1d25a226fa
commit 4aa73d5310
2 changed files with 2 additions and 2 deletions

View file

@ -2011,7 +2011,7 @@
"description": "anv: Don't assume depth/stencil attachments have depth",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "0d8b9c529ce34347032912d73c14c245919a3d37"
},

View file

@ -1873,7 +1873,7 @@ genX(BeginCommandBuffer)(
const struct anv_image_view * const iview =
anv_cmd_buffer_get_depth_stencil_view(cmd_buffer);
if (iview) {
if (iview && (iview->image->vk.aspects & VK_IMAGE_ASPECT_DEPTH_BIT)) {
VkImageLayout layout =
cmd_buffer->state.subpass->depth_stencil_attachment->layout;