turnip: Use threadsize calculated by ir3
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9498>
This commit is contained in:
@@ -391,6 +391,8 @@ tu6_emit_xs_config(struct tu_cs *cs,
|
||||
return;
|
||||
}
|
||||
|
||||
enum a6xx_threadsize thrsz =
|
||||
xs->info.double_threadsize ? THREAD128 : THREAD64;
|
||||
switch (stage) {
|
||||
case MESA_SHADER_VERTEX:
|
||||
tu_cs_emit_regs(cs, A6XX_SP_VS_CTRL_REG0(
|
||||
@@ -428,7 +430,7 @@ tu6_emit_xs_config(struct tu_cs *cs,
|
||||
.halfregfootprint = xs->info.max_half_reg + 1,
|
||||
.branchstack = xs->branchstack,
|
||||
.mergedregs = xs->mergedregs,
|
||||
.threadsize = THREAD128,
|
||||
.threadsize = thrsz,
|
||||
.pixlodenable = xs->need_pixlod,
|
||||
.diff_fine = xs->need_fine_derivatives,
|
||||
.varying = xs->total_in != 0,
|
||||
@@ -442,7 +444,7 @@ tu6_emit_xs_config(struct tu_cs *cs,
|
||||
.halfregfootprint = xs->info.max_half_reg + 1,
|
||||
.branchstack = xs->branchstack,
|
||||
.mergedregs = xs->mergedregs,
|
||||
.threadsize = THREAD128,
|
||||
.threadsize = thrsz,
|
||||
));
|
||||
break;
|
||||
default:
|
||||
@@ -577,6 +579,7 @@ tu6_emit_cs_config(struct tu_cs *cs, const struct tu_shader *shader,
|
||||
uint32_t work_group_id =
|
||||
ir3_find_sysval_regid(v, SYSTEM_VALUE_WORK_GROUP_ID);
|
||||
|
||||
enum a6xx_threadsize thrsz = v->info.double_threadsize ? THREAD128 : THREAD64;
|
||||
tu_cs_emit_pkt4(cs, REG_A6XX_HLSQ_CS_CNTL_0, 2);
|
||||
tu_cs_emit(cs,
|
||||
A6XX_HLSQ_CS_CNTL_0_WGIDCONSTID(work_group_id) |
|
||||
@@ -584,7 +587,7 @@ tu6_emit_cs_config(struct tu_cs *cs, const struct tu_shader *shader,
|
||||
A6XX_HLSQ_CS_CNTL_0_WGOFFSETCONSTID(regid(63, 0)) |
|
||||
A6XX_HLSQ_CS_CNTL_0_LOCALIDREGID(local_invocation_id));
|
||||
tu_cs_emit(cs, A6XX_HLSQ_CS_CNTL_1_LINEARLOCALIDREGID(regid(63, 0)) |
|
||||
A6XX_HLSQ_CS_CNTL_1_THREADSIZE(THREAD128));
|
||||
A6XX_HLSQ_CS_CNTL_1_THREADSIZE(thrsz));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1306,8 +1309,9 @@ tu6_emit_fs_inputs(struct tu_cs *cs, const struct ir3_shader_variant *fs)
|
||||
A6XX_HLSQ_CONTROL_4_REG_IJ_LINEAR_SAMPLE(ij_regid[IJ_LINEAR_SAMPLE]));
|
||||
tu_cs_emit(cs, 0xfc);
|
||||
|
||||
enum a6xx_threadsize thrsz = fs->info.double_threadsize ? THREAD128 : THREAD64;
|
||||
tu_cs_emit_pkt4(cs, REG_A6XX_HLSQ_FS_CNTL_0, 1);
|
||||
tu_cs_emit(cs, A6XX_HLSQ_FS_CNTL_0_THREADSIZE(THREAD128) |
|
||||
tu_cs_emit(cs, A6XX_HLSQ_FS_CNTL_0_THREADSIZE(thrsz) |
|
||||
COND(enable_varyings, A6XX_HLSQ_FS_CNTL_0_VARYINGS));
|
||||
|
||||
bool need_size = fs->frag_face || fs->fragcoord_compmask != 0;
|
||||
|
||||
Reference in New Issue
Block a user