diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index 197ae599bb3..ed39fb4988e 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -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: # diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c index 65b2164b024..15d1923562d 100644 --- a/src/compiler/shader_enums.c +++ b/src/compiler/shader_enums.c @@ -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), diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index 8d18a882f7c..7c7c7afe037 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -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, diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c index 385ab89db01..00d7a0b1b5b 100644 --- a/src/freedreno/ir3/ir3_compiler_nir.c +++ b/src/freedreno/ir3/ir3_compiler_nir.c @@ -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: diff --git a/src/freedreno/ir3/ir3_nir_lower_load_barycentric_at_offset.c b/src/freedreno/ir3/ir3_nir_lower_load_barycentric_at_offset.c index d21c9e2d8de..90e93b0e8a6 100644 --- a/src/freedreno/ir3/ir3_nir_lower_load_barycentric_at_offset.c +++ b/src/freedreno/ir3/ir3_nir_lower_load_barycentric_at_offset.c @@ -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); diff --git a/src/freedreno/ir3/ir3_shader.c b/src/freedreno/ir3/ir3_shader.c index 9cbd34c9dbe..a997c324a56 100644 --- a/src/freedreno/ir3/ir3_shader.c +++ b/src/freedreno/ir3/ir3_shader.c @@ -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"); diff --git a/src/freedreno/ir3/ir3_shader.h b/src/freedreno/ir3/ir3_shader.h index f766ef12883..7b058f5c7eb 100644 --- a/src/freedreno/ir3/ir3_shader.h +++ b/src/freedreno/ir3/ir3_shader.h @@ -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, diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c index 6956f304a24..c852a7a923f 100644 --- a/src/freedreno/vulkan/tu_pipeline.c +++ b/src/freedreno/vulkan/tu_pipeline.c @@ -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); diff --git a/src/gallium/drivers/freedreno/a5xx/fd5_program.c b/src/gallium/drivers/freedreno/a5xx/fd5_program.c index 198a41c307d..2fc6f308a65 100644 --- a/src/gallium/drivers/freedreno/a5xx/fd5_program.c +++ b/src/gallium/drivers/freedreno/a5xx/fd5_program.c @@ -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]) | diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_program.c b/src/gallium/drivers/freedreno/a6xx/fd6_program.c index fd739e696f3..e630ccc2dac 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_program.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_program.c @@ -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);