Mesa (staging/22.1): llvmpipe: always set ssbo data pointers for draw

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed May 11 04:23:24 UTC 2022


Module: Mesa
Branch: staging/22.1
Commit: 8e84d6fdeda0f14f074cf45a6862d8d1c5926e4f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e84d6fdeda0f14f074cf45a6862d8d1c5926e4f

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Sat Apr 23 09:39:06 2022 -0400

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 at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16137>
(cherry picked from commit 6a219f318af7282ba26318364e1138f0d91a3908)

---

 .pick_status.json                          | 2 +-
 src/gallium/drivers/llvmpipe/lp_setup.c    | 5 ++---
 src/gallium/drivers/llvmpipe/lp_state_cs.c | 5 ++---
 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;
 



More information about the mesa-commit mailing list