From 580f801bacc81c87168994dacf788b67d4a7e864 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Mon, 1 Apr 2024 15:09:40 -0700 Subject: [PATCH] d3d12: Capture always_active_io in varying data Part-of: --- src/gallium/drivers/d3d12/d3d12_compiler.cpp | 2 ++ src/gallium/drivers/d3d12/d3d12_compiler.h | 1 + src/gallium/drivers/d3d12/d3d12_gs_variant.cpp | 2 ++ 3 files changed, 5 insertions(+) diff --git a/src/gallium/drivers/d3d12/d3d12_compiler.cpp b/src/gallium/drivers/d3d12/d3d12_compiler.cpp index 95d1f38173a..7bd7c531bef 100644 --- a/src/gallium/drivers/d3d12/d3d12_compiler.cpp +++ b/src/gallium/drivers/d3d12/d3d12_compiler.cpp @@ -515,6 +515,7 @@ create_varying_from_info(nir_shader *nir, const struct d3d12_varying_info *info, var->data.interpolation = info->slots[slot].vars[slot_frac].interpolation; var->data.patch = info->slots[slot].patch; var->data.compact = info->slots[slot].vars[slot_frac].compact; + var->data.always_active_io = info->slots[slot].vars[slot_frac].always_active_io; if (patch) var->data.location += VARYING_SLOT_PATCH0; @@ -573,6 +574,7 @@ fill_varyings(struct d3d12_context *ctx, const nir_shader *s, var_slot.driver_location = var->data.driver_location; var_slot.interpolation = var->data.interpolation; var_slot.compact = var->data.compact; + var_slot.always_active_io = var->data.always_active_io; info.mask |= slot_bit; info.slots[slot].location_frac_mask |= (1 << var->data.location_frac); } diff --git a/src/gallium/drivers/d3d12/d3d12_compiler.h b/src/gallium/drivers/d3d12/d3d12_compiler.h index 364f05997c1..9e6cd4a9b1a 100644 --- a/src/gallium/drivers/d3d12/d3d12_compiler.h +++ b/src/gallium/drivers/d3d12/d3d12_compiler.h @@ -86,6 +86,7 @@ struct d3d12_varying_info { unsigned interpolation:3; // INTERP_MODE_COUNT = 5 unsigned driver_location:6; // VARYING_SLOT_MAX = 64 unsigned compact:1; + unsigned always_active_io:1; } vars[4]; } slots[VARYING_SLOT_MAX]; uint64_t mask; diff --git a/src/gallium/drivers/d3d12/d3d12_gs_variant.cpp b/src/gallium/drivers/d3d12/d3d12_gs_variant.cpp index 26b1c132a49..0f0cb411d05 100644 --- a/src/gallium/drivers/d3d12/d3d12_gs_variant.cpp +++ b/src/gallium/drivers/d3d12/d3d12_gs_variant.cpp @@ -121,6 +121,7 @@ d3d12_make_passthrough_gs(struct d3d12_context *ctx, struct d3d12_gs_variant_key out->data.driver_location = key->varyings->slots[i].vars[j].driver_location; out->data.interpolation = key->varyings->slots[i].vars[j].interpolation; out->data.compact = key->varyings->slots[i].vars[j].compact; + out->data.always_active_io = key->varyings->slots[i].vars[j].always_active_io; nir_deref_instr *in_value = nir_build_deref_array(&b, nir_build_deref_var(&b, in), nir_imm_int(&b, 0)); @@ -236,6 +237,7 @@ d3d12_begin_emit_primitives_gs(struct emit_primitives_context *emit_ctx, emit_ctx->out[emit_ctx->num_vars]->data.driver_location = key->varyings->slots[i].vars[j].driver_location; emit_ctx->out[emit_ctx->num_vars]->data.interpolation = key->varyings->slots[i].vars[j].interpolation; emit_ctx->out[emit_ctx->num_vars]->data.compact = key->varyings->slots[i].vars[j].compact; + emit_ctx->out[emit_ctx->num_vars]->data.always_active_io = key->varyings->slots[i].vars[j].always_active_io; emit_ctx->num_vars++; }