From 633677194f1d33f0dfbdfdfb7ac5b4f1b4dffdcb Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 21 Oct 2016 18:11:42 -0700 Subject: [PATCH] Allocate a null state whenever there is depth/stencil Signed-off-by: Jason Ekstrand Reviewed-by: Topi Pohjolainen --- src/intel/vulkan/genX_cmd_buffer.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index e076e18f7e6..3ee8c758699 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -180,18 +180,19 @@ genX(cmd_buffer_setup_attachments)(struct anv_cmd_buffer *cmd_buffer, } bool need_null_state = false; - for (uint32_t s = 0; s < pass->subpass_count; ++s) { - if (pass->subpasses[s].color_count == 0) { - need_null_state = true; - break; - } - } - - unsigned num_states = need_null_state; + unsigned num_states = 0; for (uint32_t i = 0; i < pass->attachment_count; ++i) { - if (vk_format_is_color(pass->attachments[i].format)) + if (vk_format_is_color(pass->attachments[i].format)) { num_states++; + } else { + /* We need a null state for any depth-stencil-only subpasses. + * Importantly, this includes depth/stencil clears so we create one + * whenever we have depth or stencil + */ + need_null_state = true; + } } + num_states += need_null_state; const uint32_t ss_stride = align_u32(isl_dev->ss.size, isl_dev->ss.align); state->render_pass_states = -- 2.30.2