mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 07:20:10 +01:00
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:
parent
15a839f90c
commit
dd489e2615
1 changed files with 66 additions and 59 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue