turnip: Use threadsize calculated by ir3

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9498>
This commit is contained in:
Connor Abbott
2021-03-10 13:26:58 +01:00
committed by Marge Bot
parent fd7960e191
commit 7ecc70b31c
+8 -4
View File
@@ -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;