nir+ir3: Rename load_size_ir3 to load_center_rhw_ir3.
Now that we know what it does, it also explains what it's doing in interpolateAtOffset in ir3. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17322>
This commit is contained in:
parent
9dcb94e0e1
commit
0e1fb2d984
|
@ -932,8 +932,8 @@ barycentric("at_offset", 2, [2])
|
|||
intrinsic("load_sample_pos_from_id", src_comp=[1], dest_comp=2,
|
||||
flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
|
||||
# Loads what I believe is the primitive size, for scaling ij to pixel size:
|
||||
intrinsic("load_size_ir3", dest_comp=1, flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
intrinsic("load_persp_center_rhw_ir3", dest_comp=1,
|
||||
flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
|
||||
# Load texture scaling values:
|
||||
#
|
||||
|
|
|
@ -312,7 +312,7 @@ gl_system_value_name(gl_system_value sysval)
|
|||
ENUM(SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL),
|
||||
ENUM(SYSTEM_VALUE_BARYCENTRIC_PERSP_SAMPLE),
|
||||
ENUM(SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTROID),
|
||||
ENUM(SYSTEM_VALUE_BARYCENTRIC_PERSP_SIZE),
|
||||
ENUM(SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTER_RHW),
|
||||
ENUM(SYSTEM_VALUE_BARYCENTRIC_LINEAR_PIXEL),
|
||||
ENUM(SYSTEM_VALUE_BARYCENTRIC_LINEAR_CENTROID),
|
||||
ENUM(SYSTEM_VALUE_BARYCENTRIC_LINEAR_SAMPLE),
|
||||
|
|
|
@ -802,7 +802,7 @@ typedef enum
|
|||
SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL,
|
||||
SYSTEM_VALUE_BARYCENTRIC_PERSP_SAMPLE,
|
||||
SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTROID,
|
||||
SYSTEM_VALUE_BARYCENTRIC_PERSP_SIZE,
|
||||
SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTER_RHW,
|
||||
SYSTEM_VALUE_BARYCENTRIC_LINEAR_PIXEL,
|
||||
SYSTEM_VALUE_BARYCENTRIC_LINEAR_CENTROID,
|
||||
SYSTEM_VALUE_BARYCENTRIC_LINEAR_SAMPLE,
|
||||
|
|
|
@ -1753,8 +1753,8 @@ get_barycentric(struct ir3_context *ctx, enum ir3_bary bary)
|
|||
SYSTEM_VALUE_BARYCENTRIC_PERSP_SAMPLE);
|
||||
STATIC_ASSERT(SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL + IJ_PERSP_CENTROID ==
|
||||
SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTROID);
|
||||
STATIC_ASSERT(SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL + IJ_PERSP_SIZE ==
|
||||
SYSTEM_VALUE_BARYCENTRIC_PERSP_SIZE);
|
||||
STATIC_ASSERT(SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL + IJ_PERSP_CENTER_RHW ==
|
||||
SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTER_RHW);
|
||||
STATIC_ASSERT(SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL + IJ_LINEAR_PIXEL ==
|
||||
SYSTEM_VALUE_BARYCENTRIC_LINEAR_PIXEL);
|
||||
STATIC_ASSERT(SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL + IJ_LINEAR_CENTROID ==
|
||||
|
@ -2171,12 +2171,12 @@ emit_intrinsic(struct ir3_context *ctx, nir_intrinsic_instr *intr)
|
|||
|
||||
break;
|
||||
}
|
||||
case nir_intrinsic_load_size_ir3:
|
||||
if (!ctx->ij[IJ_PERSP_SIZE]) {
|
||||
ctx->ij[IJ_PERSP_SIZE] =
|
||||
create_sysval_input(ctx, SYSTEM_VALUE_BARYCENTRIC_PERSP_SIZE, 0x1);
|
||||
case nir_intrinsic_load_persp_center_rhw_ir3:
|
||||
if (!ctx->ij[IJ_PERSP_CENTER_RHW]) {
|
||||
ctx->ij[IJ_PERSP_CENTER_RHW] =
|
||||
create_sysval_input(ctx, SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTER_RHW, 0x1);
|
||||
}
|
||||
dst[0] = ctx->ij[IJ_PERSP_SIZE];
|
||||
dst[0] = ctx->ij[IJ_PERSP_CENTER_RHW];
|
||||
break;
|
||||
case nir_intrinsic_load_barycentric_centroid:
|
||||
case nir_intrinsic_load_barycentric_sample:
|
||||
|
|
|
@ -52,7 +52,7 @@ ir3_nir_lower_load_barycentric_at_offset_instr(nir_builder *b, nir_instr *instr,
|
|||
/* note: at_offset is defined to be relative to the center of the pixel */
|
||||
nir_ssa_def *ij = nir_load_barycentric_pixel(b, 32, .interp_mode = interp_mode);
|
||||
|
||||
nir_ssa_def *s = load(b, 1, nir_intrinsic_load_size_ir3);
|
||||
nir_ssa_def *s = load(b, 1, nir_intrinsic_load_persp_center_rhw_ir3);
|
||||
|
||||
s = nir_frcp(b, s);
|
||||
|
||||
|
|
|
@ -863,8 +863,8 @@ ir3_shader_disasm(struct ir3_shader_variant *so, uint32_t *bin, FILE *out)
|
|||
dump_reg(
|
||||
out, "pos (ij_centroid)",
|
||||
ir3_find_sysval_regid(so, SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTROID));
|
||||
dump_reg(out, "pos (ij_size)",
|
||||
ir3_find_sysval_regid(so, SYSTEM_VALUE_BARYCENTRIC_PERSP_SIZE));
|
||||
dump_reg(out, "pos (center_rhw)",
|
||||
ir3_find_sysval_regid(so, SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTER_RHW));
|
||||
dump_output(out, so, FRAG_RESULT_DEPTH, "posz");
|
||||
if (so->color0_mrt) {
|
||||
dump_output(out, so, FRAG_RESULT_COLOR, "color");
|
||||
|
|
|
@ -91,7 +91,7 @@ enum ir3_bary {
|
|||
IJ_PERSP_PIXEL,
|
||||
IJ_PERSP_SAMPLE,
|
||||
IJ_PERSP_CENTROID,
|
||||
IJ_PERSP_SIZE,
|
||||
IJ_PERSP_CENTER_RHW,
|
||||
IJ_LINEAR_PIXEL,
|
||||
IJ_LINEAR_CENTROID,
|
||||
IJ_LINEAR_SAMPLE,
|
||||
|
|
|
@ -1442,7 +1442,7 @@ tu6_emit_fs_inputs(struct tu_cs *cs, const struct ir3_shader_variant *fs)
|
|||
tu_cs_emit(cs, A6XX_HLSQ_CONTROL_2_REG_FACEREGID(face_regid) |
|
||||
A6XX_HLSQ_CONTROL_2_REG_SAMPLEID(samp_id_regid) |
|
||||
A6XX_HLSQ_CONTROL_2_REG_SAMPLEMASK(smask_in_regid) |
|
||||
A6XX_HLSQ_CONTROL_2_REG_SIZE(ij_regid[IJ_PERSP_SIZE]));
|
||||
A6XX_HLSQ_CONTROL_2_REG_SIZE(ij_regid[IJ_PERSP_CENTER_RHW]));
|
||||
tu_cs_emit(cs, A6XX_HLSQ_CONTROL_3_REG_IJ_PERSP_PIXEL(ij_regid[IJ_PERSP_PIXEL]) |
|
||||
A6XX_HLSQ_CONTROL_3_REG_IJ_LINEAR_PIXEL(ij_regid[IJ_LINEAR_PIXEL]) |
|
||||
A6XX_HLSQ_CONTROL_3_REG_IJ_PERSP_CENTROID(ij_regid[IJ_PERSP_CENTROID]) |
|
||||
|
@ -1460,7 +1460,7 @@ tu6_emit_fs_inputs(struct tu_cs *cs, const struct ir3_shader_variant *fs)
|
|||
|
||||
bool need_size = fs->frag_face || fs->fragcoord_compmask != 0;
|
||||
bool need_size_persamp = false;
|
||||
if (VALIDREG(ij_regid[IJ_PERSP_SIZE])) {
|
||||
if (VALIDREG(ij_regid[IJ_PERSP_CENTER_RHW])) {
|
||||
if (sample_shading)
|
||||
need_size_persamp = true;
|
||||
else
|
||||
|
@ -1497,7 +1497,7 @@ tu6_emit_fs_inputs(struct tu_cs *cs, const struct ir3_shader_variant *fs)
|
|||
sample_shading ? FRAGCOORD_SAMPLE : FRAGCOORD_CENTER) |
|
||||
CONDREG(smask_in_regid, A6XX_RB_RENDER_CONTROL1_SAMPLEMASK) |
|
||||
CONDREG(samp_id_regid, A6XX_RB_RENDER_CONTROL1_SAMPLEID) |
|
||||
CONDREG(ij_regid[IJ_PERSP_SIZE], A6XX_RB_RENDER_CONTROL1_SIZE) |
|
||||
CONDREG(ij_regid[IJ_PERSP_CENTER_RHW], A6XX_RB_RENDER_CONTROL1_SIZE) |
|
||||
COND(fs->frag_face, A6XX_RB_RENDER_CONTROL1_FACENESS));
|
||||
|
||||
tu_cs_emit_pkt4(cs, REG_A6XX_RB_SAMPLE_CNTL, 1);
|
||||
|
|
|
@ -518,7 +518,7 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
OUT_RING(ring, A5XX_HLSQ_CONTROL_2_REG_FACEREGID(face_regid) |
|
||||
A5XX_HLSQ_CONTROL_2_REG_SAMPLEID(samp_id_regid) |
|
||||
A5XX_HLSQ_CONTROL_2_REG_SAMPLEMASK(samp_mask_regid) |
|
||||
A5XX_HLSQ_CONTROL_2_REG_SIZE(ij_regid[IJ_PERSP_SIZE]));
|
||||
A5XX_HLSQ_CONTROL_2_REG_SIZE(ij_regid[IJ_PERSP_CENTER_RHW]));
|
||||
OUT_RING(
|
||||
ring,
|
||||
A5XX_HLSQ_CONTROL_3_REG_IJ_PERSP_PIXEL(ij_regid[IJ_PERSP_PIXEL]) |
|
||||
|
|
|
@ -840,7 +840,7 @@ setup_stateobj(struct fd_ringbuffer *ring, struct fd_context *ctx,
|
|||
OUT_RING(ring, A6XX_HLSQ_CONTROL_2_REG_FACEREGID(face_regid) |
|
||||
A6XX_HLSQ_CONTROL_2_REG_SAMPLEID(samp_id_regid) |
|
||||
A6XX_HLSQ_CONTROL_2_REG_SAMPLEMASK(smask_in_regid) |
|
||||
A6XX_HLSQ_CONTROL_2_REG_SIZE(ij_regid[IJ_PERSP_SIZE]));
|
||||
A6XX_HLSQ_CONTROL_2_REG_SIZE(ij_regid[IJ_PERSP_CENTER_RHW]));
|
||||
OUT_RING(
|
||||
ring,
|
||||
A6XX_HLSQ_CONTROL_3_REG_IJ_PERSP_PIXEL(ij_regid[IJ_PERSP_PIXEL]) |
|
||||
|
@ -878,7 +878,7 @@ setup_stateobj(struct fd_ringbuffer *ring, struct fd_context *ctx,
|
|||
|
||||
bool need_size = fs->frag_face || fs->fragcoord_compmask != 0;
|
||||
bool need_size_persamp = false;
|
||||
if (VALIDREG(ij_regid[IJ_PERSP_SIZE])) {
|
||||
if (VALIDREG(ij_regid[IJ_PERSP_CENTER_RHW])) {
|
||||
if (sample_shading)
|
||||
need_size_persamp = true;
|
||||
else
|
||||
|
@ -925,7 +925,7 @@ setup_stateobj(struct fd_ringbuffer *ring, struct fd_context *ctx,
|
|||
OUT_RING(ring,
|
||||
CONDREG(smask_in_regid, A6XX_RB_RENDER_CONTROL1_SAMPLEMASK) |
|
||||
CONDREG(samp_id_regid, A6XX_RB_RENDER_CONTROL1_SAMPLEID) |
|
||||
CONDREG(ij_regid[IJ_PERSP_SIZE], A6XX_RB_RENDER_CONTROL1_SIZE) |
|
||||
CONDREG(ij_regid[IJ_PERSP_CENTER_RHW], A6XX_RB_RENDER_CONTROL1_SIZE) |
|
||||
COND(fs->frag_face, A6XX_RB_RENDER_CONTROL1_FACENESS));
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_SAMPLE_CNTL, 1);
|
||||
|
|
Loading…
Reference in New Issue