From 431795b9b912ea47db75669984ac76d9f5e74922 Mon Sep 17 00:00:00 2001 From: antonino Date: Wed, 8 Mar 2023 16:13:47 +0100 Subject: [PATCH] zink: zink: add `parent` to `zink_shader::non_fs` For a generated gs this field will store a pointer to the shader that "owns" it. Reviewed-by: Mike Blumenkrantz Reviewed-by: Erik Faye-Lund Part-of: --- src/gallium/drivers/zink/zink_program.c | 1 + src/gallium/drivers/zink/zink_types.h | 2 ++ 2 files changed, 3 insertions(+) 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;