summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2022-04-23 09:39:06 -0400
committerDylan Baker <dylan.c.baker@intel.com>2022-05-10 21:23:14 -0700
commit8e84d6fdeda0f14f074cf45a6862d8d1c5926e4f (patch)
tree0bac77755c412861da01520a9a5cb9eb00365933
parentc6e7e2977f13b03e9cc35736e515b2aa5654d8b3 (diff)
llvmpipe: always set ssbo data pointers for draw
skipping these would lead to reading the previously-set data if a null buffer was set after a valid buffer cc: mesa-stable Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16137> (cherry picked from commit 6a219f318af7282ba26318364e1138f0d91a3908)
-rw-r--r--.pick_status.json2
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup.c5
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_cs.c5
3 files changed, 5 insertions, 7 deletions
diff --git a/.pick_status.json b/.pick_status.json
index 1a615c36852..c2ca907545c 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -355,7 +355,7 @@
"description": "llvmpipe: always set ssbo data pointers for draw",
"nominated": true,
"nomination_type": 0,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": null
},
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
index 83fb4ad1fd0..ce681792683 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup.c
@@ -1345,10 +1345,9 @@ try_update_scene_state( struct lp_setup_context *setup )
struct pipe_resource *buffer = setup->ssbos[i].current.buffer;
const ubyte *current_data = NULL;
- if (!buffer)
- continue;
/* resource buffer */
- current_data = (ubyte *) llvmpipe_resource_data(buffer);
+ if (buffer)
+ current_data = (ubyte *) llvmpipe_resource_data(buffer);
if (current_data) {
current_data += setup->ssbos[i].current.buffer_offset;
diff --git a/src/gallium/drivers/llvmpipe/lp_state_cs.c b/src/gallium/drivers/llvmpipe/lp_state_cs.c
index 6f761d9d303..b7310df93a3 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_cs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_cs.c
@@ -1263,10 +1263,9 @@ update_csctx_ssbo(struct llvmpipe_context *llvmpipe)
struct pipe_resource *buffer = csctx->ssbos[i].current.buffer;
const ubyte *current_data = NULL;
- if (!buffer)
- continue;
/* resource buffer */
- current_data = (ubyte *) llvmpipe_resource_data(buffer);
+ if (buffer)
+ current_data = (ubyte *) llvmpipe_resource_data(buffer);
if (current_data) {
current_data += csctx->ssbos[i].current.buffer_offset;