From 517146f5400ac16a27955ac7d59d3e0001abf8af Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 29 Mar 2023 08:10:51 -0400 Subject: [PATCH] zink: move nir cloning out to callers of zink_shader_compile this will make more sense with future changes Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 3 +-- src/gallium/drivers/zink/zink_program.c | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 27d0f48..468b21f 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -3417,11 +3417,10 @@ compile_module(struct zink_screen *screen, struct zink_shader *zs, nir_shader *n VkShaderModule zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, - nir_shader *base_nir, const struct zink_shader_key *key, const void *extra_data) + nir_shader *nir, const struct zink_shader_key *key, const void *extra_data) { VkShaderModule mod = VK_NULL_HANDLE; struct zink_shader_info *sinfo = &zs->sinfo; - nir_shader *nir = nir_shader_clone(NULL, base_nir); bool need_optimize = false; bool inlined_uniforms = false; diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index d1fb45c..539eaa9 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -152,7 +152,7 @@ create_shader_module_for_stage(struct zink_context *ctx, struct zink_screen *scr assert(ctx); //TODO async mod = zink_shader_tcs_compile(screen, zs, patch_vertices); } else { - mod = zink_shader_compile(screen, zs, prog->nir[stage], key, &ctx->di.zs_swizzle[stage]); + mod = zink_shader_compile(screen, zs, nir_shader_clone(NULL, prog->nir[stage]), key, &ctx->di.zs_swizzle[stage]); } if (!mod) { FREE(zm); @@ -267,7 +267,7 @@ create_shader_module_for_stage_optimal(struct zink_context *ctx, struct zink_scr struct zink_tcs_key *tcs = (struct zink_tcs_key*)key; mod = zink_shader_tcs_compile(screen, zs, tcs->patch_vertices); } else { - mod = zink_shader_compile(screen, zs, prog->nir[stage], (struct zink_shader_key*)key, shadow_needs_shader_swizzle ? &ctx->di.zs_swizzle[stage] : NULL); + mod = zink_shader_compile(screen, zs, nir_shader_clone(NULL, prog->nir[stage]), (struct zink_shader_key*)key, shadow_needs_shader_swizzle ? &ctx->di.zs_swizzle[stage] : NULL); } if (!mod) { FREE(zm); @@ -843,7 +843,7 @@ update_cs_shader_module(struct zink_context *ctx, struct zink_compute_program *c if (!zm) { return; } - mod = zink_shader_compile(screen, zs, comp->nir, key, zs_swizzle_size ? &ctx->di.zs_swizzle[MESA_SHADER_COMPUTE] : NULL); + mod = zink_shader_compile(screen, zs, nir_shader_clone(NULL, comp->nir), key, zs_swizzle_size ? &ctx->di.zs_swizzle[MESA_SHADER_COMPUTE] : NULL); if (!mod) { FREE(zm); return; @@ -1255,7 +1255,7 @@ precompile_compute_job(void *data, void *gdata, int thread_index) comp->shader = zink_shader_create(screen, comp->nir, NULL); comp->curr = comp->module = CALLOC_STRUCT(zink_shader_module); assert(comp->module); - comp->module->shader = zink_shader_compile(screen, comp->shader, comp->nir, NULL, NULL); + comp->module->shader = zink_shader_compile(screen, comp->shader, nir_shader_clone(NULL, comp->nir), NULL, NULL); assert(comp->module->shader); util_dynarray_init(&comp->shader_cache[0], comp); util_dynarray_init(&comp->shader_cache[1], comp); -- 2.7.4