From 8791aab20f21bf206cbd187840fea327a5942af5 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 26 Sep 2023 11:40:18 +1000 Subject: [PATCH] llvmpipe: reset viewport_index_slot in fb bind I hit a problem running a set of lvp caselists with dEQP-VK.transform_feedback.simple.draw_indirect_endqueryindexed_streamid_0_16,Crash This was crashing due to assert(setup->viewport_index_slot < 0); in try_update_scene_state This was because a previous draw had set viewport index slot to 2, but a clear then draw sequence never resets it, so the clear gets a scene, and when the subsequent flush happens for that scene, the viewport_index_slot is never updated. It only gets updated on draws. This just resets it as lp_setup_update_state will always pick up the correct one for the next draw. Cc: mesa-stable Reviewed-by: Roland Scheidegger Part-of: --- src/gallium/drivers/llvmpipe/lp_setup.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 26081a4fac7..6682f20a9e8 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -410,6 +410,7 @@ lp_setup_bind_framebuffer(struct lp_setup_context *setup, setup->framebuffer.y0 = 0; setup->framebuffer.x1 = fb->width-1; setup->framebuffer.y1 = fb->height-1; + setup->viewport_index_slot = -1; setup->dirty |= LP_SETUP_NEW_SCISSOR; }