From d09ba36f98c9b9737abcde84c7a14b8037d6179f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 3 Jan 2025 18:08:38 -0500 Subject: [PATCH] glsl: fix corruption due to blake3 hash not being set for nir_opt_undef NIR is generated sooner, so we need to set it sooner. This fixes Viewperf13/CATIA_car_04. Fixes: cbfc225e2bd - glsl: switch to a full nir based linker Reviewed-by: Timothy Arceri Part-of: --- src/compiler/glsl/gl_nir_linker.c | 5 +++-- src/mesa/main/shader_types.h | 3 --- src/mesa/state_tracker/st_glsl_to_nir.cpp | 3 --- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/compiler/glsl/gl_nir_linker.c b/src/compiler/glsl/gl_nir_linker.c index 889d2c947db..3a6cd376528 100644 --- a/src/compiler/glsl/gl_nir_linker.c +++ b/src/compiler/glsl/gl_nir_linker.c @@ -2882,7 +2882,8 @@ link_intrastage_shaders(void *mem_ctx, /* Set the linked source BLAKE3. */ if (num_shaders == 1) { - memcpy(linked->linked_source_blake3, shader_list[0]->compiled_source_blake3, + memcpy(linked->Program->nir->info.source_blake3, + shader_list[0]->compiled_source_blake3, BLAKE3_OUT_LEN); } else { struct mesa_blake3 blake3_ctx; @@ -2895,7 +2896,7 @@ link_intrastage_shaders(void *mem_ctx, _mesa_blake3_update(&blake3_ctx, shader_list[i]->compiled_source_blake3, BLAKE3_OUT_LEN); } - _mesa_blake3_final(&blake3_ctx, linked->linked_source_blake3); + _mesa_blake3_final(&blake3_ctx, linked->Program->nir->info.source_blake3); } return linked; diff --git a/src/mesa/main/shader_types.h b/src/mesa/main/shader_types.h index aedc6cbca94..92b1d154708 100644 --- a/src/mesa/main/shader_types.h +++ b/src/mesa/main/shader_types.h @@ -246,9 +246,6 @@ struct gl_linked_shader { gl_shader_stage Stage; - /** All gl_shader::compiled_source_blake3 combined. */ - blake3_hash linked_source_blake3; - struct gl_program *Program; /**< Post-compile assembly code */ /** diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp index f2542f6cf43..d1b34e28bfa 100644 --- a/src/mesa/state_tracker/st_glsl_to_nir.cpp +++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp @@ -546,9 +546,6 @@ st_link_glsl_to_nir(struct gl_context *ctx, prog->nir->info.label = ralloc_strdup(shader, shader_program->Label); } - memcpy(prog->nir->info.source_blake3, shader->linked_source_blake3, - BLAKE3_OUT_LEN); - nir_shader_gather_info(prog->nir, nir_shader_get_entrypoint(prog->nir)); if (!st->ctx->SoftFP64 && ((prog->nir->info.bit_sizes_int | prog->nir->info.bit_sizes_float) & 64) && (options->lower_doubles_options & nir_lower_fp64_full_software) != 0) {