Mesa (staging/22.0): zink: force push descriptors cache update if hashing detects changes

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 6 16:45:52 UTC 2022


Module: Mesa
Branch: staging/22.0
Commit: df0c813cb2e4be3a7027f763408cb7b20837d175
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=df0c813cb2e4be3a7027f763408cb7b20837d175

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Fri Mar 25 18:11:54 2022 -0400

zink: force push descriptors cache update if hashing detects changes

this was previously only forced if the program pointer changed,
but programs can be freed and reused, and these are definite cases
where the last set cannot be reused, so jam it in

cc: mesa-stable

Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15591>
(cherry picked from commit d415c28e64dd5f281067130b39e5e6b22bc2e963)

---

 .pick_status.json                           | 2 +-
 src/gallium/drivers/zink/zink_descriptors.c | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/.pick_status.json b/.pick_status.json
index 68d4417b2b6..5d8a3dec2b2 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -1692,7 +1692,7 @@
         "description": "zink: force push descriptors cache update if hashing detects changes",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "because_sha": null
     },
     {
diff --git a/src/gallium/drivers/zink/zink_descriptors.c b/src/gallium/drivers/zink/zink_descriptors.c
index f60e0913f57..fcb986049fd 100644
--- a/src/gallium/drivers/zink/zink_descriptors.c
+++ b/src/gallium/drivers/zink/zink_descriptors.c
@@ -1710,6 +1710,8 @@ zink_context_update_descriptor_states(struct zink_context *ctx, struct zink_prog
             first = false;
          }
       }
+      ctx->dd->changed[pg->is_compute][ZINK_DESCRIPTOR_TYPES] |= ctx->dd->push_state[pg->is_compute] != hash;
+      ctx->dd->changed[pg->is_compute][ZINK_DESCRIPTOR_TYPES] |= pg->dd->push_usage != ctx->dd->last_push_usage[pg->is_compute];
       ctx->dd->push_state[pg->is_compute] = hash;
       ctx->dd->push_valid[pg->is_compute] = true;
       ctx->dd->last_push_usage[pg->is_compute] = pg->dd->push_usage;



More information about the mesa-commit mailing list