*/
struct zink_shader *
-zink_shader_tcs_create(struct zink_screen *screen, nir_shader *vs, unsigned vertices_per_patch)
+zink_shader_tcs_create(struct zink_screen *screen, nir_shader *vs, unsigned vertices_per_patch, nir_shader **nir_ret)
{
struct zink_shader *ret = rzalloc(NULL, struct zink_shader);
util_queue_fence_init(&ret->precompile.fence);
NIR_PASS_V(nir, nir_convert_from_ssa, true);
ret->nir = nir;
+ *nir_ret = nir;
memcpy(&ret->info, &nir->info, sizeof(nir->info));
ret->non_fs.is_generated = true;
return ret;
VkShaderModule
zink_shader_tcs_compile(struct zink_screen *screen, struct zink_shader *zs, unsigned patch_vertices);
struct zink_shader *
-zink_shader_tcs_create(struct zink_screen *screen, nir_shader *vs, unsigned vertices_per_patch);
+zink_shader_tcs_create(struct zink_screen *screen, nir_shader *vs, unsigned vertices_per_patch, nir_shader **nir_ret);
static inline bool
zink_shader_descriptor_is_buffer(struct zink_shader *zs, enum zink_descriptor_type type, unsigned i)
}
}
if (stages[MESA_SHADER_TESS_EVAL] && !stages[MESA_SHADER_TESS_CTRL]) {
+ nir_shader *nir;
prog->shaders[MESA_SHADER_TESS_EVAL]->non_fs.generated_tcs =
prog->shaders[MESA_SHADER_TESS_CTRL] =
- zink_shader_tcs_create(screen, stages[MESA_SHADER_VERTEX]->nir, vertices_per_patch);
+ zink_shader_tcs_create(screen, stages[MESA_SHADER_VERTEX]->nir, vertices_per_patch, &nir);
prog->stages_present |= BITFIELD_BIT(MESA_SHADER_TESS_CTRL);
}
prog->stages_remaining = prog->stages_present;