diff --git a/src/compiler/spirv/nir_spirv.h b/src/compiler/spirv/nir_spirv.h index 35b2327ac36..31359e825ec 100644 --- a/src/compiler/spirv/nir_spirv.h +++ b/src/compiler/spirv/nir_spirv.h @@ -145,6 +145,9 @@ struct spirv_to_nir_options { /* If GroupNonUniform capability is used, set this api subgroup size. */ uint8_t group_non_uniform_subgroup_size; + + /* Don't look at MESA_SPIRV_READ_PATH for replacements */ + bool ignore_replacement; }; enum spirv_verify_result { diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index f4b987a6c41..5e2c0b89bd5 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -7622,7 +7622,10 @@ spirv_to_nir(const uint32_t *words, size_t word_count, } const char *read_path = os_get_option_secure("MESA_SPIRV_READ_PATH"); - if (read_path) { + if (!options->ignore_replacement && read_path) { + struct spirv_to_nir_options replace_options = *options; + replace_options.ignore_replacement = true; + char blake3_str[BLAKE3_HEX_LEN]; _mesa_blake3_format(blake3_str, b->shader->info.source_blake3); @@ -7675,7 +7678,7 @@ spirv_to_nir(const uint32_t *words, size_t word_count, ralloc_free(b->shader); ralloc_free(b); nir_shader* result = spirv_to_nir(replacement_words, replacement_size / sizeof(uint32_t), - spec, stage, entry_point_name, options, + spec, stage, entry_point_name, &replace_options, nir_options); free((void *)replacement_words);