radv: do not emit rbplus if attachments are undefined
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 21 Oct 2019 14:03:47 +0000 (16:03 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 23 Oct 2019 06:57:31 +0000 (08:57 +0200)
Fixes some crashes with dEQP-VK.geometry.layered.*.secondary_cmd_buffer
on Raven and other chips that allow rbplus.

This just prevents a crash and rbplus probaby needs more work.

Cc: 19.2 <mesa-stable@lists.freedesktop.org>
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_cmd_buffer.c

index 6a9002eaa442e80d253437e34785e7baeda63555..fb2490f6382d83ffe5e0f0ce5b836430eb4a53b0 100644 (file)
@@ -1001,6 +1001,9 @@ radv_emit_rbplus_state(struct radv_cmd_buffer *cmd_buffer)
        unsigned sx_blend_opt_epsilon = 0;
        unsigned sx_blend_opt_control = 0;
 
+       if (!cmd_buffer->state.attachments || !subpass)
+               return;
+
        for (unsigned i = 0; i < subpass->color_count; ++i) {
                if (subpass->color_attachments[i].attachment == VK_ATTACHMENT_UNUSED) {
                        sx_blend_opt_control |= S_02875C_MRT0_COLOR_OPT_DISABLE(1) << (i * 4);