From 17914b178552e5f53d69db99baa6dd1da1279d09 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 29 Nov 2022 14:30:00 +0100 Subject: [PATCH] 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: (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 *