diff options
author | Connor Abbott <cwabbott0@gmail.com> | 2022-11-29 14:30:00 +0100 |
---|---|---|
committer | Dylan Baker <dylan.c.baker@intel.com> | 2022-11-30 09:16:09 -0800 |
commit | 17914b178552e5f53d69db99baa6dd1da1279d09 (patch) | |
tree | b8427620a961c5c718b6de2b8997432223c4ac24 | |
parent | 8c982c7f97e6ec0deeada2916e9739939d5d8726 (diff) | |
download | mesa-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.json | 2 | ||||
-rw-r--r-- | 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 * |