unsigned param_count = 0;
for (unsigned i = 0; i < noutput; i++) {
- unsigned semantic_name = outputs[i].semantic_name;
- unsigned semantic_index = outputs[i].semantic_index;
+ unsigned semantic = outputs[i].semantic;
if (outputs[i].vertex_stream[0] != 0 && outputs[i].vertex_stream[1] != 0 &&
outputs[i].vertex_stream[2] != 0 && outputs[i].vertex_stream[3] != 0)
continue;
- switch (semantic_name) {
- case TGSI_SEMANTIC_LAYER:
- case TGSI_SEMANTIC_VIEWPORT_INDEX:
- case TGSI_SEMANTIC_CLIPDIST:
- case TGSI_SEMANTIC_COLOR:
- case TGSI_SEMANTIC_BCOLOR:
- case TGSI_SEMANTIC_PRIMID:
- case TGSI_SEMANTIC_FOG:
- case TGSI_SEMANTIC_TEXCOORD:
- case TGSI_SEMANTIC_GENERIC:
+ switch (semantic) {
+ case VARYING_SLOT_LAYER:
+ case VARYING_SLOT_VIEWPORT:
+ case VARYING_SLOT_CLIP_DIST0:
+ case VARYING_SLOT_CLIP_DIST1:
+ case VARYING_SLOT_COL0:
+ case VARYING_SLOT_COL1:
+ case VARYING_SLOT_BFC0:
+ case VARYING_SLOT_BFC1:
+ case VARYING_SLOT_PRIMITIVE_ID:
+ case VARYING_SLOT_FOGC:
break;
default:
- continue;
+ if ((semantic >= VARYING_SLOT_TEX0 && semantic <= VARYING_SLOT_TEX7) ||
+ semantic >= VARYING_SLOT_VAR0)
+ break;
+ else
+ continue;
}
- if ((semantic_name != TGSI_SEMANTIC_GENERIC || semantic_index < SI_MAX_IO_GENERIC) &&
+ if (semantic < VARYING_SLOT_VAR0 + SI_MAX_IO_GENERIC &&
shader->key.opt.kill_outputs &
- (1ull << si_shader_io_get_unique_index(semantic_name, semantic_index, true)))
+ (1ull << si_shader_io_get_unique_index(semantic, true)))
continue;
si_export_param(ctx, param_count, outputs[i].values);
/* Store original colors to alloca variables. */
for (unsigned i = 0; i < noutput; i++) {
- if (outputs[i].semantic_name != TGSI_SEMANTIC_COLOR &&
- outputs[i].semantic_name != TGSI_SEMANTIC_BCOLOR)
+ if (outputs[i].semantic != VARYING_SLOT_COL0 &&
+ outputs[i].semantic != VARYING_SLOT_COL1 &&
+ outputs[i].semantic != VARYING_SLOT_BFC0 &&
+ outputs[i].semantic != VARYING_SLOT_BFC1)
continue;
for (unsigned j = 0; j < 4; j++) {
/* Store clamped colors to alloca variables within the conditional block. */
for (unsigned i = 0; i < noutput; i++) {
- if (outputs[i].semantic_name != TGSI_SEMANTIC_COLOR &&
- outputs[i].semantic_name != TGSI_SEMANTIC_BCOLOR)
+ if (outputs[i].semantic != VARYING_SLOT_COL0 &&
+ outputs[i].semantic != VARYING_SLOT_COL1 &&
+ outputs[i].semantic != VARYING_SLOT_BFC0 &&
+ outputs[i].semantic != VARYING_SLOT_BFC1)
continue;
for (unsigned j = 0; j < 4; j++) {
/* Load clamped colors */
for (unsigned i = 0; i < noutput; i++) {
- if (outputs[i].semantic_name != TGSI_SEMANTIC_COLOR &&
- outputs[i].semantic_name != TGSI_SEMANTIC_BCOLOR)
+ if (outputs[i].semantic != VARYING_SLOT_COL0 &&
+ outputs[i].semantic != VARYING_SLOT_COL1 &&
+ outputs[i].semantic != VARYING_SLOT_BFC0 &&
+ outputs[i].semantic != VARYING_SLOT_BFC1)
continue;
for (unsigned j = 0; j < 4; j++) {
/* Build position exports. */
for (i = 0; i < noutput; i++) {
- switch (outputs[i].semantic_name) {
- case TGSI_SEMANTIC_POSITION:
+ switch (outputs[i].semantic) {
+ case VARYING_SLOT_POS:
si_llvm_init_vs_export_args(ctx, outputs[i].values, V_008DFC_SQ_EXP_POS, &pos_args[0]);
break;
- case TGSI_SEMANTIC_PSIZE:
+ case VARYING_SLOT_PSIZ:
psize_value = outputs[i].values[0];
break;
- case TGSI_SEMANTIC_LAYER:
+ case VARYING_SLOT_LAYER:
layer_value = outputs[i].values[0];
break;
- case TGSI_SEMANTIC_VIEWPORT_INDEX:
+ case VARYING_SLOT_VIEWPORT:
viewport_index_value = outputs[i].values[0];
break;
- case TGSI_SEMANTIC_EDGEFLAG:
+ case VARYING_SLOT_EDGE:
edgeflag_value = outputs[i].values[0];
break;
- case TGSI_SEMANTIC_CLIPDIST:
+ case VARYING_SLOT_CLIP_DIST0:
+ case VARYING_SLOT_CLIP_DIST1:
if (!shader->key.opt.clip_disable) {
- unsigned index = 2 + outputs[i].semantic_index;
+ unsigned index = 2 + (outputs[i].semantic - VARYING_SLOT_CLIP_DIST0);
si_llvm_init_vs_export_args(ctx, outputs[i].values, V_008DFC_SQ_EXP_POS + index,
&pos_args[index]);
}
break;
- case TGSI_SEMANTIC_CLIPVERTEX:
+ case VARYING_SLOT_CLIP_VERTEX:
if (!shader->key.opt.clip_disable) {
si_llvm_emit_clipvertex(ctx, pos_args, outputs[i].values);
}
outputs = MALLOC((info->num_outputs + 1) * sizeof(outputs[0]));
for (i = 0; i < info->num_outputs; i++) {
- outputs[i].semantic_name = info->output_semantic_name[i];
- outputs[i].semantic_index = info->output_semantic_index[i];
+ outputs[i].semantic = info->output_semantic[i];
for (j = 0; j < 4; j++) {
outputs[i].values[j] = LLVMBuildLoad(ctx->ac.builder, addrs[4 * i + j], "");
/* Export PrimitiveID. */
if (ctx->shader->key.mono.u.vs_export_prim_id) {
- outputs[i].semantic_name = TGSI_SEMANTIC_PRIMID;
- outputs[i].semantic_index = 0;
+ outputs[i].semantic = VARYING_SLOT_PRIMITIVE_ID;
outputs[i].values[0] = ac_to_float(&ctx->ac, si_get_primitive_id(ctx, 0));
for (j = 1; j < 4; j++)
outputs[i].values[j] = LLVMConstReal(ctx->ac.f32, 0);
assert(info->num_outputs <= max_outputs);
for (unsigned i = 0; i < info->num_outputs; i++) {
- if (info->output_semantic_name[i] != TGSI_SEMANTIC_POSITION)
+ if (info->output_semantic[i] != VARYING_SLOT_POS)
continue;
for (unsigned chan = 0; chan < 4; chan++)