radv/ac: handle primitive id
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
4ec294adce
commit
fd4ea9e62d
|
@ -4113,7 +4113,8 @@ handle_fs_inputs_pre(struct nir_to_llvm_context *ctx,
|
|||
if (!(ctx->input_mask & (1ull << i)))
|
||||
continue;
|
||||
|
||||
if (i >= VARYING_SLOT_VAR0 || i == VARYING_SLOT_PNTC) {
|
||||
if (i >= VARYING_SLOT_VAR0 || i == VARYING_SLOT_PNTC ||
|
||||
i == VARYING_SLOT_PRIMITIVE_ID) {
|
||||
interp_param = *inputs;
|
||||
interp_fs_input(ctx, index, interp_param, ctx->prim_mask,
|
||||
inputs);
|
||||
|
@ -4131,6 +4132,8 @@ handle_fs_inputs_pre(struct nir_to_llvm_context *ctx,
|
|||
ctx->shader_info->fs.num_interp = index;
|
||||
if (ctx->input_mask & (1 << VARYING_SLOT_PNTC))
|
||||
ctx->shader_info->fs.has_pcoord = true;
|
||||
if (ctx->input_mask & (1 << VARYING_SLOT_PRIMITIVE_ID))
|
||||
ctx->shader_info->fs.prim_id_input = true;
|
||||
ctx->shader_info->fs.input_mask = ctx->input_mask >> VARYING_SLOT_VAR0;
|
||||
}
|
||||
|
||||
|
@ -4418,6 +4421,7 @@ handle_vs_outputs_post(struct nir_to_llvm_context *ctx)
|
|||
(1ull << VARYING_SLOT_CULL_DIST0) |
|
||||
(1ull << VARYING_SLOT_CULL_DIST1));
|
||||
|
||||
ctx->shader_info->vs.prim_id_output = 0xffffffff;
|
||||
if (clip_mask) {
|
||||
LLVMValueRef slots[8];
|
||||
unsigned j;
|
||||
|
@ -4479,6 +4483,10 @@ handle_vs_outputs_post(struct nir_to_llvm_context *ctx)
|
|||
ctx->shader_info->vs.writes_viewport_index = true;
|
||||
viewport_index_value = values[0];
|
||||
continue;
|
||||
} else if (i == VARYING_SLOT_PRIMITIVE_ID) {
|
||||
ctx->shader_info->vs.prim_id_output = param_count;
|
||||
target = V_008DFC_SQ_EXP_PARAM + param_count;
|
||||
param_count++;
|
||||
} else if (i >= VARYING_SLOT_VAR0) {
|
||||
ctx->shader_info->vs.export_mask |= 1u << (i - VARYING_SLOT_VAR0);
|
||||
target = V_008DFC_SQ_EXP_PARAM + param_count;
|
||||
|
|
|
@ -106,6 +106,7 @@ struct ac_shader_variant_info {
|
|||
uint8_t clip_dist_mask;
|
||||
uint8_t cull_dist_mask;
|
||||
uint32_t esgs_itemsize;
|
||||
uint32_t prim_id_output;
|
||||
} vs;
|
||||
struct {
|
||||
unsigned num_interp;
|
||||
|
@ -119,6 +120,7 @@ struct ac_shader_variant_info {
|
|||
bool early_fragment_test;
|
||||
bool writes_memory;
|
||||
bool force_persample;
|
||||
bool prim_id_input;
|
||||
} fs;
|
||||
struct {
|
||||
unsigned block_size[3];
|
||||
|
|
Loading…
Reference in New Issue