d3d12: Capture always_active_io in varying data

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28535>
This commit is contained in:
Jesse Natalie 2024-04-01 15:09:40 -07:00 committed by Marge Bot
parent 5d0c77658c
commit 580f801bac
3 changed files with 5 additions and 0 deletions

View file

@ -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);
}

View file

@ -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;

View file

@ -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++;
}