Module: Mesa
Branch: staging/22.2
Commit: 17914b178552e5f53d69db99baa6dd1da1279d09
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=17914b178552e5f53d69db99baa6dd1da1279d09

Author: Connor Abbott <[email protected]>
Date:   Tue Nov 29 14:30:00 2022 +0100

ir3: Don't save/restore disasm string pointer

It's not in the key, so it randomly may or may not be present, and if it
is present then we don't actually save/restore the contents, so we will
save/restore random pointer values from the last run. Turnip already
disables searching the shader cache when assembly is requested, but
still wrote the final ir3_shader_variant which resulted in trying to
save random stale pointers when saving off the executable if a
subsequent compile hit that cache entry.

This fixes flakes in
dEQP-VK.pipeline.pipeline_library.shader_module_identifier.pipeline_from_id.*
for me.

Fixes: 56909868cd1 ("turnip: implement VK_KHR_pipeline_executable_properties")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20056>
(cherry picked from commit 8ba2d612d51497b274ff9c4213e1c373b9bb1ca5)

---

 .pick_status.json              | 2 +-
 src/freedreno/ir3/ir3_shader.h | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 10c8a35ce13..a1d7e2e7813 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -31,7 +31,7 @@
         "description": "ir3: Don't save/restore disasm string pointer",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "56909868cd12b1b143f06c02dab9503c4f7c60e3"
     },
diff --git a/src/freedreno/ir3/ir3_shader.h b/src/freedreno/ir3/ir3_shader.h
index fa2cc1cfe53..897b79c2bcf 100644
--- a/src/freedreno/ir3/ir3_shader.h
+++ b/src/freedreno/ir3/ir3_shader.h
@@ -524,6 +524,8 @@ struct ir3_shader_variant {
     */
    void *constant_data;
 
+   struct ir3_disasm_info disasm_info;
+
    /*
     * Below here is serialized when written to disk cache:
     */
@@ -769,8 +771,6 @@ struct ir3_shader_variant {
 
    /* For when we don't have a shader, variant's copy of streamout state */
    struct ir3_stream_output_info stream_output;
-
-   struct ir3_disasm_info disasm_info;
 };
 
 static inline const char *

Reply via email to