diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 8a911b1aa3b..1b138aec8da 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -2330,6 +2330,7 @@ zink_set_primitive_emulation_keys(struct zink_context *ctx) shader->needs_inlining = true; ctx->gfx_stages[prev_vertex_stage]->non_fs.generated_gs[ctx->gfx_pipeline_state.gfx_prim_mode][zink_prim_type] = shader; shader->non_fs.is_generated = true; + shader->non_fs.parent = ctx->gfx_stages[prev_vertex_stage]; shader->can_inline = true; shader->sinfo.so_info = ctx->gfx_stages[prev_vertex_stage]->sinfo.so_info; } diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index ee7da9a80b7..68f358440d4 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -768,6 +768,8 @@ struct zink_shader { struct { struct zink_shader *generated_tcs; // a generated shader that this shader "owns"; only valid in the tes stage struct zink_shader *generated_gs[PIPE_PRIM_MAX][ZINK_PRIM_MAX]; // generated shaders that this shader "owns" + struct zink_shader *parent; // for a generated gs this points to the shader that "owns" it + bool is_generated; // if this is a driver-created shader (e.g., tcs) } non_fs;