From 62335d7bc510721dad2b61404ee6101203bacc7a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 19 Mar 2021 10:10:58 -0400 Subject: [PATCH] llvmpipe/setup: use bigger hammer to force fs constant updating correctly this race condition between destroying ubo backing memory in lavapipe and performing descriptor updates can be triggered from more than just queries, so forcing the update just before the Problem Area seems like the best way to permanently resolve the issue Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/llvmpipe/lp_setup.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 97d85bdba13..8834739198f 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -1182,6 +1182,12 @@ try_update_scene_state( struct lp_setup_context *setup ) setup->dirty |= LP_SETUP_NEW_FS; } + struct llvmpipe_context *llvmpipe = llvmpipe_context(setup->pipe); + if (llvmpipe->dirty & LP_NEW_FS_CONSTANTS) + lp_setup_set_fs_constants(llvmpipe->setup, + ARRAY_SIZE(llvmpipe->constants[PIPE_SHADER_FRAGMENT]), + llvmpipe->constants[PIPE_SHADER_FRAGMENT]); + if (setup->dirty & LP_SETUP_NEW_CONSTANTS) { for (i = 0; i < ARRAY_SIZE(setup->constants); ++i) { struct pipe_resource *buffer = setup->constants[i].current.buffer; @@ -1514,12 +1520,6 @@ void lp_setup_begin_query(struct lp_setup_context *setup, struct llvmpipe_query *pq) { - struct llvmpipe_context *llvmpipe = llvmpipe_context(setup->pipe); - if (llvmpipe->dirty & LP_NEW_FS_CONSTANTS) - lp_setup_set_fs_constants(llvmpipe->setup, - ARRAY_SIZE(llvmpipe->constants[PIPE_SHADER_FRAGMENT]), - llvmpipe->constants[PIPE_SHADER_FRAGMENT]); - set_scene_state(setup, SETUP_ACTIVE, "begin_query"); if (!(pq->type == PIPE_QUERY_OCCLUSION_COUNTER ||