summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConnor Abbott <cwabbott0@gmail.com>2022-11-29 14:30:00 +0100
committerDylan Baker <dylan.c.baker@intel.com>2022-11-30 09:16:09 -0800
commit17914b178552e5f53d69db99baa6dd1da1279d09 (patch)
treeb8427620a961c5c718b6de2b8997432223c4ac24
parent8c982c7f97e6ec0deeada2916e9739939d5d8726 (diff)
downloadmesa-17914b178552e5f53d69db99baa6dd1da1279d09.tar.gz
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)
-rw-r--r--.pick_status.json2
-rw-r--r--src/freedreno/ir3/ir3_shader.h4
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 *