From 2bd72a4101d233cde9eec8c1fc4e6fddbc52a2c2 Mon Sep 17 00:00:00 2001 From: antonino Date: Thu, 16 Feb 2023 16:56:40 +0100 Subject: [PATCH] nir: keep xfb properties in nir_create_passthrough_gs Reviewed-by: Mike Blumenkrantz Reviewed-by: Erik Faye-Lund Part-of: --- src/compiler/nir/nir_passthrough_gs.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/compiler/nir/nir_passthrough_gs.c b/src/compiler/nir/nir_passthrough_gs.c index fbe2ed6..85e5429 100644 --- a/src/compiler/nir/nir_passthrough_gs.c +++ b/src/compiler/nir/nir_passthrough_gs.c @@ -22,7 +22,9 @@ */ #include "nir.h" +#include "nir_xfb_info.h" #include "nir_builder.h" +#include "util/u_memory.h" static unsigned int gs_in_prim_for_topology(enum shader_prim prim) @@ -150,6 +152,12 @@ nir_create_passthrough_gs(const nir_shader_compiler_options *options, nir->info.gs.invocations = 1; nir->info.gs.active_stream_mask = 1; + nir->info.has_transform_feedback_varyings = prev_stage->info.has_transform_feedback_varyings; + memcpy(nir->info.xfb_stride, prev_stage->info.xfb_stride, sizeof(prev_stage->info.xfb_stride)); + if (prev_stage->xfb_info) { + nir->xfb_info = mem_dup(prev_stage->xfb_info, sizeof(nir_xfb_info)); + } + nir_variable *in_vars[VARYING_SLOT_MAX]; nir_variable *out_vars[VARYING_SLOT_MAX]; unsigned num_inputs = 0, num_outputs = 0; @@ -196,6 +204,12 @@ nir_create_passthrough_gs(const nir_shader_compiler_options *options, out->data.driver_location = var->data.driver_location; out->data.interpolation = var->data.interpolation; out->data.compact = var->data.compact; + out->data.is_xfb = var->data.is_xfb; + out->data.is_xfb_only = var->data.is_xfb_only; + out->data.explicit_xfb_buffer = var->data.explicit_xfb_buffer; + out->data.explicit_xfb_stride = var->data.explicit_xfb_stride; + out->data.xfb = var->data.xfb; + out->data.offset = var->data.offset; out_vars[num_outputs++] = out; } -- 2.7.4