}
VkShaderModule
-zink_shader_compile_separate(struct zink_screen *screen, struct zink_shader *zs, nir_shader **ret_nir)
+zink_shader_compile_separate(struct zink_screen *screen, struct zink_shader *zs)
{
nir_shader *nir = nir_shader_clone(NULL, zs->nir);
int set = nir->info.stage == MESA_SHADER_FRAGMENT;
}
}
optimize_nir(nir, zs);
- *ret_nir = nir;
- return compile_module(screen, zs, nir);
+ VkShaderModule mod = compile_module(screen, zs, nir);
+ ralloc_free(nir);
+ return mod;
}
static bool
VkShaderModule
zink_shader_compile(struct zink_screen *screen, struct zink_shader *zs, nir_shader *nir, const struct zink_shader_key *key, const void *extra_data);
VkShaderModule
-zink_shader_compile_separate(struct zink_screen *screen, struct zink_shader *zs, nir_shader **ret_nir);
+zink_shader_compile_separate(struct zink_screen *screen, struct zink_shader *zs);
VkShaderModule
zink_shader_spirv_compile(struct zink_screen *screen, struct zink_shader *zs, struct spirv_shader *spirv);
struct zink_shader *
struct zink_screen *screen = gdata;
struct zink_shader *zs = data;
- nir_shader *nir;
- zs->precompile.mod = zink_shader_compile_separate(screen, zs, &nir);
+ zs->precompile.mod = zink_shader_compile_separate(screen, zs);
zink_descriptor_shader_init(screen, zs);
VkShaderModule mods[ZINK_GFX_SHADER_COUNT] = {0};
- mods[nir->info.stage] = zs->precompile.mod;
+ mods[zs->nir->info.stage] = zs->precompile.mod;
zs->precompile.gpl = zink_create_gfx_pipeline_separate(screen, mods, zs->precompile.layout);
}