anv: fix crash in vkCmdClearAttachments with unused attachment

anv_render_pass_compile() turns an unused attachment into a NULL
depth_stencil_attachment pointer so check that pointer before
accessing it.

Found with updates to existing CTS tests.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 208be8eafa ("anv: Make subpass::depth_stencil_attachment a pointer")
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Juan A. Suarez <jasuarez@igalia.com>
This commit is contained in:
Lionel Landwerlin 2019-07-15 15:35:11 +03:00
parent b650f3d197
commit c9c8c2f7d7

View file

@ -1158,11 +1158,11 @@ clear_depth_stencil_attachment(struct anv_cmd_buffer *cmd_buffer,
{
static const union isl_color_value color_value = { .u32 = { 0, } };
const struct anv_subpass *subpass = cmd_buffer->state.subpass;
const uint32_t att_idx = subpass->depth_stencil_attachment->attachment;
if (att_idx == VK_ATTACHMENT_UNUSED)
if (!subpass->depth_stencil_attachment)
return;
const uint32_t att_idx = subpass->depth_stencil_attachment->attachment;
assert(att_idx != VK_ATTACHMENT_UNUSED);
struct anv_render_pass_attachment *pass_att =
&cmd_buffer->state.pass->attachments[att_idx];