radv: don't crash if we have no framebuffer
authorDave Airlie <airlied@redhat.com>
Thu, 17 Aug 2017 01:08:46 +0000 (02:08 +0100)
committerDave Airlie <airlied@redhat.com>
Thu, 24 Aug 2017 23:52:48 +0000 (00:52 +0100)
Recording secondaries with no framebuffer attachment may
make this happen, though this might not be the complete solution.

(esp if someone does meta stuff in there, would we have to
save things, not sure).

Fixes: f4e499ec791 ("radv: add initial non-conformant radv vulkan driver")
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_cmd_buffer.c

index cbe0de17db47653883f3591ee73c730b33ee90d1..fe8f3f2cb8f183c1c9bc1cc54c887234228d3520 100644 (file)
@@ -1212,6 +1212,10 @@ radv_emit_framebuffer_state(struct radv_cmd_buffer *cmd_buffer)
        struct radv_framebuffer *framebuffer = cmd_buffer->state.framebuffer;
        const struct radv_subpass *subpass = cmd_buffer->state.subpass;
 
+       /* this may happen for inherited secondary recording */
+       if (!framebuffer)
+               return;
+
        for (i = 0; i < 8; ++i) {
                if (i >= subpass->color_count || subpass->color_attachments[i].attachment == VK_ATTACHMENT_UNUSED) {
                        radeon_set_context_reg(cmd_buffer->cs, R_028C70_CB_COLOR0_INFO + i * 0x3C,