tu: Convert tu_shader deprecated reg builders

Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39029>
This commit is contained in:
Rob Clark 2025-12-18 10:46:14 -08:00 committed by Marge Bot
parent 15a839f90c
commit dd489e2615

View file

@ -2031,50 +2031,54 @@ tu6_emit_fs_inputs(struct tu_cs *cs, const struct ir3_shader_variant *fs)
need_size = true; need_size = true;
} }
tu_cs_emit_pkt4(cs, REG_A6XX_GRAS_CL_INTERP_CNTL, 1); tu_cs_emit_regs(cs,
tu_cs_emit(cs, GRAS_CL_INTERP_CNTL(CHIP,
CONDREG(ij_regid[IJ_PERSP_PIXEL], A6XX_GRAS_CL_INTERP_CNTL_IJ_PERSP_PIXEL) | .ij_persp_pixel = VALIDREG(ij_regid[IJ_PERSP_PIXEL]),
CONDREG(ij_regid[IJ_PERSP_CENTROID], A6XX_GRAS_CL_INTERP_CNTL_IJ_PERSP_CENTROID) | .ij_persp_centroid = VALIDREG(ij_regid[IJ_PERSP_CENTROID]),
CONDREG(ij_regid[IJ_PERSP_SAMPLE], A6XX_GRAS_CL_INTERP_CNTL_IJ_PERSP_SAMPLE) | .ij_persp_sample = VALIDREG(ij_regid[IJ_PERSP_SAMPLE]),
CONDREG(ij_regid[IJ_LINEAR_PIXEL], A6XX_GRAS_CL_INTERP_CNTL_IJ_LINEAR_PIXEL) | .ij_linear_pixel = VALIDREG(ij_regid[IJ_LINEAR_PIXEL]) || need_size,
CONDREG(ij_regid[IJ_LINEAR_CENTROID], A6XX_GRAS_CL_INTERP_CNTL_IJ_LINEAR_CENTROID) | .ij_linear_centroid = VALIDREG(ij_regid[IJ_LINEAR_CENTROID]),
CONDREG(ij_regid[IJ_LINEAR_SAMPLE], A6XX_GRAS_CL_INTERP_CNTL_IJ_LINEAR_SAMPLE) | .ij_linear_sample = VALIDREG(ij_regid[IJ_LINEAR_SAMPLE]) || need_size_persamp,
COND(need_size, A6XX_GRAS_CL_INTERP_CNTL_IJ_LINEAR_PIXEL) | .coord_mask = fs->fragcoord_compmask,
COND(need_size_persamp, A6XX_GRAS_CL_INTERP_CNTL_IJ_LINEAR_SAMPLE) | )
COND(fs->fragcoord_compmask != 0, A6XX_GRAS_CL_INTERP_CNTL_COORD_MASK(fs->fragcoord_compmask))); );
tu_cs_emit_pkt4(cs, REG_A6XX_RB_INTERP_CNTL, 2); tu_cs_emit_regs(cs,
tu_cs_emit(cs, A6XX_RB_INTERP_CNTL(
CONDREG(ij_regid[IJ_PERSP_PIXEL], A6XX_RB_INTERP_CNTL_IJ_PERSP_PIXEL) | .ij_persp_pixel = VALIDREG(ij_regid[IJ_PERSP_PIXEL]),
CONDREG(ij_regid[IJ_PERSP_CENTROID], A6XX_RB_INTERP_CNTL_IJ_PERSP_CENTROID) | .ij_persp_centroid = VALIDREG(ij_regid[IJ_PERSP_CENTROID]),
CONDREG(ij_regid[IJ_PERSP_SAMPLE], A6XX_RB_INTERP_CNTL_IJ_PERSP_SAMPLE) | .ij_persp_sample = VALIDREG(ij_regid[IJ_PERSP_SAMPLE]),
CONDREG(ij_regid[IJ_LINEAR_PIXEL], A6XX_RB_INTERP_CNTL_IJ_LINEAR_PIXEL) | .ij_linear_pixel = VALIDREG(ij_regid[IJ_LINEAR_PIXEL]) || need_size,
CONDREG(ij_regid[IJ_LINEAR_CENTROID], A6XX_RB_INTERP_CNTL_IJ_LINEAR_CENTROID) | .ij_linear_centroid = VALIDREG(ij_regid[IJ_LINEAR_CENTROID]),
CONDREG(ij_regid[IJ_LINEAR_SAMPLE], A6XX_RB_INTERP_CNTL_IJ_LINEAR_SAMPLE) | .ij_linear_sample = VALIDREG(ij_regid[IJ_LINEAR_SAMPLE]) || need_size_persamp,
COND(need_size, A6XX_RB_INTERP_CNTL_IJ_LINEAR_PIXEL) | .coord_mask = fs->fragcoord_compmask,
COND(enable_varyings, A6XX_RB_INTERP_CNTL_INTERP_EN) | .interp_en = enable_varyings,
COND(need_size_persamp, A6XX_RB_INTERP_CNTL_IJ_LINEAR_SAMPLE) | ),
COND(fs->fragcoord_compmask != 0, A6XX_RB_PS_INPUT_CNTL(
A6XX_RB_INTERP_CNTL_COORD_MASK(fs->fragcoord_compmask))); .samplemask = VALIDREG(smask_in_regid),
tu_cs_emit(cs, .postdepthcoverage = fs->post_depth_coverage,
A6XX_RB_PS_INPUT_CNTL_FRAGCOORDSAMPLEMODE( .faceness = fs->frag_face,
sample_shading ? FRAGCOORD_SAMPLE : FRAGCOORD_CENTER) | .sampleid = VALIDREG(samp_id_regid),
CONDREG(smask_in_regid, A6XX_RB_PS_INPUT_CNTL_SAMPLEMASK) | .fragcoordsamplemode = sample_shading ? FRAGCOORD_SAMPLE : FRAGCOORD_CENTER,
CONDREG(samp_id_regid, A6XX_RB_PS_INPUT_CNTL_SAMPLEID) | .centerrhw = VALIDREG(ij_regid[IJ_PERSP_CENTER_RHW]),
CONDREG(ij_regid[IJ_PERSP_CENTER_RHW], A6XX_RB_PS_INPUT_CNTL_CENTERRHW) | .foveation = VALIDREG(shading_rate_regid),
COND(fs->frag_face, A6XX_RB_PS_INPUT_CNTL_FACENESS) | ),
CONDREG(shading_rate_regid, A6XX_RB_PS_INPUT_CNTL_FOVEATION)); );
tu_cs_emit_pkt4(cs, REG_A6XX_RB_PS_SAMPLEFREQ_CNTL, 1); tu_cs_emit_regs(cs,
tu_cs_emit(cs, COND(sample_shading, A6XX_RB_PS_SAMPLEFREQ_CNTL_PER_SAMP_MODE)); A6XX_RB_PS_SAMPLEFREQ_CNTL(sample_shading)
);
tu_cs_emit_pkt4(cs, REG_A6XX_GRAS_LRZ_PS_INPUT_CNTL, 1); tu_cs_emit_regs(cs,
tu_cs_emit(cs, CONDREG(samp_id_regid, A6XX_GRAS_LRZ_PS_INPUT_CNTL_SAMPLEID) | GRAS_LRZ_PS_INPUT_CNTL(CHIP,
A6XX_GRAS_LRZ_PS_INPUT_CNTL_FRAGCOORDSAMPLEMODE( .sampleid = VALIDREG(samp_id_regid),
sample_shading ? FRAGCOORD_SAMPLE : FRAGCOORD_CENTER)); .fragcoordsamplemode = sample_shading ? FRAGCOORD_SAMPLE : FRAGCOORD_CENTER,
)
);
tu_cs_emit_pkt4(cs, REG_A6XX_GRAS_LRZ_PS_SAMPLEFREQ_CNTL, 1); tu_cs_emit_regs(cs,
tu_cs_emit(cs, COND(sample_shading, A6XX_GRAS_LRZ_PS_SAMPLEFREQ_CNTL_PER_SAMP_MODE)); A6XX_GRAS_LRZ_PS_SAMPLEFREQ_CNTL(sample_shading)
);
uint32_t varmask[4] = { 0 }; uint32_t varmask[4] = { 0 };
@ -2200,11 +2204,11 @@ tu6_emit_vs(struct tu_cs *cs,
bool multi_pos_output = vs->multi_pos_output; bool multi_pos_output = vs->multi_pos_output;
uint32_t multiview_views = util_logbase2(view_mask) + 1; uint32_t multiview_views = util_logbase2(view_mask) + 1;
uint32_t multiview_cntl = view_mask ? struct fd_reg_pair multiview_cntl = PC_STEREO_RENDERING_CNTL(CHIP,
A6XX_PC_STEREO_RENDERING_CNTL_ENABLE | .enable = view_mask,
A6XX_PC_STEREO_RENDERING_CNTL_VIEWS(multiview_views) | .disablemultipos = !multi_pos_output,
COND(!multi_pos_output, A6XX_PC_STEREO_RENDERING_CNTL_DISABLEMULTIPOS) .views = multiview_views,
: 0; );
/* Copy what the blob does here. This will emit an extra 0x3f /* Copy what the blob does here. This will emit an extra 0x3f
* CP_EVENT_WRITE when multiview is disabled. I'm not exactly sure what * CP_EVENT_WRITE when multiview is disabled. I'm not exactly sure what
@ -2213,27 +2217,31 @@ tu6_emit_vs(struct tu_cs *cs,
if (cs->device->physical_device->info->props.has_cp_reg_write) { if (cs->device->physical_device->info->props.has_cp_reg_write) {
tu_cs_emit_pkt7(cs, CP_REG_WRITE, 3); tu_cs_emit_pkt7(cs, CP_REG_WRITE, 3);
tu_cs_emit(cs, CP_REG_WRITE_0_TRACKER(UNK_EVENT_WRITE)); tu_cs_emit(cs, CP_REG_WRITE_0_TRACKER(UNK_EVENT_WRITE));
tu_cs_emit(cs, REG_A6XX_PC_STEREO_RENDERING_CNTL); tu_cs_emit(cs, multiview_cntl.reg);
} else { } else {
tu_cs_emit_pkt4(cs, REG_A6XX_PC_STEREO_RENDERING_CNTL, 1); tu_cs_emit_pkt4(cs, multiview_cntl.reg, 1);
} }
tu_cs_emit(cs, multiview_cntl); tu_cs_emit(cs, multiview_cntl.value);
tu_cs_emit_pkt4(cs, REG_A6XX_VFD_STEREO_RENDERING_CNTL, 1); tu_cs_emit_regs(cs, A6XX_VFD_STEREO_RENDERING_CNTL(
tu_cs_emit(cs, multiview_cntl); .enable = view_mask,
.disablemultipos = !multi_pos_output,
.views = multiview_views,
));
if (multiview_cntl && if (view_mask &&
cs->device->physical_device->info->props.supports_multiview_mask) { cs->device->physical_device->info->props.supports_multiview_mask) {
tu_cs_emit_pkt4(cs, REG_A6XX_PC_STEREO_RENDERING_VIEWMASK, 1); tu_cs_emit_regs(cs, PC_STEREO_RENDERING_VIEWMASK(CHIP, view_mask));
tu_cs_emit(cs, view_mask);
} }
if (CHIP >= A7XX) { if (CHIP >= A7XX) {
tu_cs_emit_pkt4(cs, REG_A7XX_VPC_STEREO_RENDERING_CNTL, 1); tu_cs_emit_regs(cs, VPC_STEREO_RENDERING_CNTL(CHIP,
tu_cs_emit(cs, multiview_cntl); .enable = view_mask,
.disablemultipos = !multi_pos_output,
.views = multiview_views,
));
tu_cs_emit_pkt4(cs, REG_A7XX_VPC_STEREO_RENDERING_VIEWMASK, 1); tu_cs_emit_regs(cs, VPC_STEREO_RENDERING_VIEWMASK(CHIP, view_mask));
tu_cs_emit(cs, view_mask);
} }
tu6_emit_vfd_dest(cs, vs); tu6_emit_vfd_dest(cs, vs);
@ -2276,8 +2284,7 @@ tu6_emit_hs(struct tu_cs *cs,
A6XX_VFD_CNTL_2_REGID_INVOCATIONID(hs_invocation_regid)); A6XX_VFD_CNTL_2_REGID_INVOCATIONID(hs_invocation_regid));
if (hs) { if (hs) {
tu_cs_emit_pkt4(cs, REG_A6XX_PC_HS_PARAM_0, 1); tu_cs_emit_regs(cs, PC_HS_PARAM_0(CHIP, hs->tess.tcs_vertices_out));
tu_cs_emit(cs, hs->tess.tcs_vertices_out);
} }
} }
TU_GENX(tu6_emit_hs); TU_GENX(tu6_emit_hs);