compiler: rename SYSTEM_VALUE_VARYING_COORD
And add corresponding enums for different sorts of varying interpolation. Signed-off-by: Rob Clark <robdclark@chromium.org>
This commit is contained in:
@@ -247,7 +247,10 @@ gl_system_value_name(gl_system_value sysval)
|
|||||||
ENUM(SYSTEM_VALUE_DEVICE_INDEX),
|
ENUM(SYSTEM_VALUE_DEVICE_INDEX),
|
||||||
ENUM(SYSTEM_VALUE_VIEW_INDEX),
|
ENUM(SYSTEM_VALUE_VIEW_INDEX),
|
||||||
ENUM(SYSTEM_VALUE_VERTEX_CNT),
|
ENUM(SYSTEM_VALUE_VERTEX_CNT),
|
||||||
ENUM(SYSTEM_VALUE_VARYING_COORD),
|
ENUM(SYSTEM_VALUE_BARYCENTRIC_PIXEL),
|
||||||
|
ENUM(SYSTEM_VALUE_BARYCENTRIC_SAMPLE),
|
||||||
|
ENUM(SYSTEM_VALUE_BARYCENTRIC_CENTROID),
|
||||||
|
ENUM(SYSTEM_VALUE_BARYCENTRIC_SIZE),
|
||||||
};
|
};
|
||||||
STATIC_ASSERT(ARRAY_SIZE(names) == SYSTEM_VALUE_MAX);
|
STATIC_ASSERT(ARRAY_SIZE(names) == SYSTEM_VALUE_MAX);
|
||||||
return NAME(sysval);
|
return NAME(sysval);
|
||||||
|
@@ -621,10 +621,16 @@ typedef enum
|
|||||||
SYSTEM_VALUE_VERTEX_CNT,
|
SYSTEM_VALUE_VERTEX_CNT,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Driver internal varying-coord, used for varying-fetch instructions.
|
* Driver internal varying-coords, used for varying-fetch instructions.
|
||||||
* Not externally visible.
|
* Not externally visible.
|
||||||
|
*
|
||||||
|
* The _SIZE value is "primitive size", used to scale i/j in primitive
|
||||||
|
* space to pixel space.
|
||||||
*/
|
*/
|
||||||
SYSTEM_VALUE_VARYING_COORD,
|
SYSTEM_VALUE_BARYCENTRIC_PIXEL,
|
||||||
|
SYSTEM_VALUE_BARYCENTRIC_SAMPLE,
|
||||||
|
SYSTEM_VALUE_BARYCENTRIC_CENTROID,
|
||||||
|
SYSTEM_VALUE_BARYCENTRIC_SIZE,
|
||||||
|
|
||||||
SYSTEM_VALUE_MAX /**< Number of values */
|
SYSTEM_VALUE_MAX /**< Number of values */
|
||||||
} gl_system_value;
|
} gl_system_value;
|
||||||
|
@@ -2577,7 +2577,7 @@ emit_instructions(struct ir3_context *ctx)
|
|||||||
* because sysvals need to be appended after varyings:
|
* because sysvals need to be appended after varyings:
|
||||||
*/
|
*/
|
||||||
if (vcoord) {
|
if (vcoord) {
|
||||||
add_sysval_input_compmask(ctx, SYSTEM_VALUE_VARYING_COORD,
|
add_sysval_input_compmask(ctx, SYSTEM_VALUE_BARYCENTRIC_PIXEL,
|
||||||
0x3, vcoord);
|
0x3, vcoord);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -408,7 +408,7 @@ ir3_shader_disasm(struct ir3_shader_variant *so, uint32_t *bin, FILE *out)
|
|||||||
break;
|
break;
|
||||||
case MESA_SHADER_FRAGMENT:
|
case MESA_SHADER_FRAGMENT:
|
||||||
dump_reg(out, "pos (bary)",
|
dump_reg(out, "pos (bary)",
|
||||||
ir3_find_sysval_regid(so, SYSTEM_VALUE_VARYING_COORD));
|
ir3_find_sysval_regid(so, SYSTEM_VALUE_BARYCENTRIC_PIXEL));
|
||||||
dump_output(out, so, FRAG_RESULT_DEPTH, "posz");
|
dump_output(out, so, FRAG_RESULT_DEPTH, "posz");
|
||||||
if (so->color0_mrt) {
|
if (so->color0_mrt) {
|
||||||
dump_output(out, so, FRAG_RESULT_COLOR, "color");
|
dump_output(out, so, FRAG_RESULT_COLOR, "color");
|
||||||
|
@@ -690,7 +690,7 @@ tu6_emit_fs_system_values(struct tu_cs *cs,
|
|||||||
? (fragcoord_xy_regid + 2)
|
? (fragcoord_xy_regid + 2)
|
||||||
: fragcoord_xy_regid;
|
: fragcoord_xy_regid;
|
||||||
const uint32_t varyingcoord_regid =
|
const uint32_t varyingcoord_regid =
|
||||||
ir3_find_sysval_regid(fs, SYSTEM_VALUE_VARYING_COORD);
|
ir3_find_sysval_regid(fs, SYSTEM_VALUE_BARYCENTRIC_PIXEL);
|
||||||
|
|
||||||
tu_cs_emit_pkt4(cs, REG_A6XX_HLSQ_CONTROL_1_REG, 5);
|
tu_cs_emit_pkt4(cs, REG_A6XX_HLSQ_CONTROL_1_REG, 5);
|
||||||
tu_cs_emit(cs, 0x7);
|
tu_cs_emit(cs, 0x7);
|
||||||
|
@@ -211,7 +211,7 @@ fd3_program_emit(struct fd_ringbuffer *ring, struct fd3_emit *emit,
|
|||||||
face_regid = ir3_find_sysval_regid(fp, SYSTEM_VALUE_FRONT_FACE);
|
face_regid = ir3_find_sysval_regid(fp, SYSTEM_VALUE_FRONT_FACE);
|
||||||
coord_regid = ir3_find_sysval_regid(fp, SYSTEM_VALUE_FRAG_COORD);
|
coord_regid = ir3_find_sysval_regid(fp, SYSTEM_VALUE_FRAG_COORD);
|
||||||
zwcoord_regid = (coord_regid == regid(63,0)) ? regid(63,0) : (coord_regid + 2);
|
zwcoord_regid = (coord_regid == regid(63,0)) ? regid(63,0) : (coord_regid + 2);
|
||||||
vcoord_regid = ir3_find_sysval_regid(fp, SYSTEM_VALUE_VARYING_COORD);
|
vcoord_regid = ir3_find_sysval_regid(fp, SYSTEM_VALUE_BARYCENTRIC_PIXEL);
|
||||||
|
|
||||||
/* adjust regids for alpha output formats. there is no alpha render
|
/* adjust regids for alpha output formats. there is no alpha render
|
||||||
* format, so it's just treated like red
|
* format, so it's just treated like red
|
||||||
|
@@ -245,7 +245,7 @@ fd4_program_emit(struct fd_ringbuffer *ring, struct fd4_emit *emit,
|
|||||||
face_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRONT_FACE);
|
face_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRONT_FACE);
|
||||||
coord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRAG_COORD);
|
coord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRAG_COORD);
|
||||||
zwcoord_regid = (coord_regid == regid(63,0)) ? regid(63,0) : (coord_regid + 2);
|
zwcoord_regid = (coord_regid == regid(63,0)) ? regid(63,0) : (coord_regid + 2);
|
||||||
vcoord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_VARYING_COORD);
|
vcoord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_BARYCENTRIC_PIXEL);
|
||||||
|
|
||||||
/* we could probably divide this up into things that need to be
|
/* we could probably divide this up into things that need to be
|
||||||
* emitted if frag-prog is dirty vs if vert-prog is dirty..
|
* emitted if frag-prog is dirty vs if vert-prog is dirty..
|
||||||
|
@@ -357,7 +357,7 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||||||
face_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRONT_FACE);
|
face_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRONT_FACE);
|
||||||
coord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRAG_COORD);
|
coord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRAG_COORD);
|
||||||
zwcoord_regid = (coord_regid == regid(63,0)) ? regid(63,0) : (coord_regid + 2);
|
zwcoord_regid = (coord_regid == regid(63,0)) ? regid(63,0) : (coord_regid + 2);
|
||||||
vcoord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_VARYING_COORD);
|
vcoord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_BARYCENTRIC_PIXEL);
|
||||||
|
|
||||||
/* we could probably divide this up into things that need to be
|
/* we could probably divide this up into things that need to be
|
||||||
* emitted if frag-prog is dirty vs if vert-prog is dirty..
|
* emitted if frag-prog is dirty vs if vert-prog is dirty..
|
||||||
|
@@ -337,7 +337,7 @@ setup_stateobj(struct fd_ringbuffer *ring,
|
|||||||
face_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRONT_FACE);
|
face_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRONT_FACE);
|
||||||
coord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRAG_COORD);
|
coord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_FRAG_COORD);
|
||||||
zwcoord_regid = next_regid(coord_regid, 2);
|
zwcoord_regid = next_regid(coord_regid, 2);
|
||||||
vcoord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_VARYING_COORD);
|
vcoord_regid = ir3_find_sysval_regid(s[FS].v, SYSTEM_VALUE_BARYCENTRIC_PIXEL);
|
||||||
posz_regid = ir3_find_output_regid(s[FS].v, FRAG_RESULT_DEPTH);
|
posz_regid = ir3_find_output_regid(s[FS].v, FRAG_RESULT_DEPTH);
|
||||||
|
|
||||||
/* we could probably divide this up into things that need to be
|
/* we could probably divide this up into things that need to be
|
||||||
|
@@ -5827,7 +5827,10 @@ _mesa_sysval_to_semantic(unsigned sysval)
|
|||||||
case SYSTEM_VALUE_LOCAL_INVOCATION_INDEX:
|
case SYSTEM_VALUE_LOCAL_INVOCATION_INDEX:
|
||||||
case SYSTEM_VALUE_GLOBAL_INVOCATION_ID:
|
case SYSTEM_VALUE_GLOBAL_INVOCATION_ID:
|
||||||
case SYSTEM_VALUE_VERTEX_CNT:
|
case SYSTEM_VALUE_VERTEX_CNT:
|
||||||
case SYSTEM_VALUE_VARYING_COORD:
|
case SYSTEM_VALUE_BARYCENTRIC_PIXEL:
|
||||||
|
case SYSTEM_VALUE_BARYCENTRIC_SAMPLE:
|
||||||
|
case SYSTEM_VALUE_BARYCENTRIC_CENTROID:
|
||||||
|
case SYSTEM_VALUE_BARYCENTRIC_SIZE:
|
||||||
default:
|
default:
|
||||||
assert(!"Unexpected SYSTEM_VALUE_ enum");
|
assert(!"Unexpected SYSTEM_VALUE_ enum");
|
||||||
return TGSI_SEMANTIC_COUNT;
|
return TGSI_SEMANTIC_COUNT;
|
||||||
|
Reference in New Issue
Block a user