diff --git a/src/freedreno/.gitlab-ci/reference/crash.log b/src/freedreno/.gitlab-ci/reference/crash.log
index 746e8bf29a6..765c97a40bd 100644
--- a/src/freedreno/.gitlab-ci/reference/crash.log
+++ b/src/freedreno/.gitlab-ci/reference/crash.log
@@ -6233,7 +6233,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
ffffffff PC_RESTART_INDEX: 4294967295
0000001f PC_MODE_CNTL: 0x1f
00000001 PC_POWER_CNTL: 0x1
- 00000000 PC_PRIMID_PASSTHRU: FALSE
+ 00000000 PC_PS_CNTL: { 0 }
00000002 PC_PRIMITIVE_CNTL_0: { PROVOKING_VTX_LAST }
00000001 PC_VS_OUT_CNTL: { STRIDE_IN_VPC = 1 | CLIP_MASK = 0 }
00000001 PC_GS_OUT_CNTL: { STRIDE_IN_VPC = 1 | CLIP_MASK = 0 }
@@ -6461,7 +6461,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
ffffffff PC_RESTART_INDEX: 4294967295
0000001f PC_MODE_CNTL: 0x1f
00000001 PC_POWER_CNTL: 0x1
- 00000000 PC_PRIMID_PASSTHRU: FALSE
+ 00000000 PC_PS_CNTL: { 0 }
00000002 PC_PRIMITIVE_CNTL_0: { PROVOKING_VTX_LAST }
00000001 PC_VS_OUT_CNTL: { STRIDE_IN_VPC = 1 | CLIP_MASK = 0 }
00000001 PC_GS_OUT_CNTL: { STRIDE_IN_VPC = 1 | CLIP_MASK = 0 }
diff --git a/src/freedreno/.gitlab-ci/reference/crash_prefetch.log b/src/freedreno/.gitlab-ci/reference/crash_prefetch.log
index 2e7eb57d82a..cab1f6f6e91 100644
--- a/src/freedreno/.gitlab-ci/reference/crash_prefetch.log
+++ b/src/freedreno/.gitlab-ci/reference/crash_prefetch.log
@@ -2869,7 +2869,7 @@ got cmdszdw=83
!+ 00ff0004 VPC_VS_PACK: { STRIDE_IN_VPC = 4 | POSITIONLOC = 0 | PSIZELOC = 255 | EXTRAPOS = 0 }
!+ ff00ff00 VPC_CNTL_0: { NUMNONPOSVAR = 0 | PRIMIDLOC = 255 | VIEWIDLOC = 255 }
+ 00000000 VPC_SO_STREAM_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
- + 00000000 PC_PRIMID_PASSTHRU: FALSE
+ + 00000000 PC_PS_CNTL: { 0 }
+ 00000000 PC_RASTER_CNTL: { STREAM = 0 }
!+ 00000003 PC_POLYGON_MODE: { MODE = POLYMODE6_TRIANGLES }
+ 00000000 PC_PRIMITIVE_CNTL_0: { 0 }
@@ -3583,7 +3583,7 @@ got cmdszdw=83
+ 00ff0004 VPC_VS_PACK: { STRIDE_IN_VPC = 4 | POSITIONLOC = 0 | PSIZELOC = 255 | EXTRAPOS = 0 }
+ ff00ff00 VPC_CNTL_0: { NUMNONPOSVAR = 0 | PRIMIDLOC = 255 | VIEWIDLOC = 255 }
+ 00000000 VPC_SO_STREAM_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
- + 00000000 PC_PRIMID_PASSTHRU: FALSE
+ + 00000000 PC_PS_CNTL: { 0 }
+ 00000000 PC_RASTER_CNTL: { STREAM = 0 }
+ 00000003 PC_POLYGON_MODE: { MODE = POLYMODE6_TRIANGLES }
+ 00000000 PC_PRIMITIVE_CNTL_0: { 0 }
@@ -4308,7 +4308,7 @@ got cmdszdw=83
+ 00ff0004 VPC_VS_PACK: { STRIDE_IN_VPC = 4 | POSITIONLOC = 0 | PSIZELOC = 255 | EXTRAPOS = 0 }
+ ff00ff00 VPC_CNTL_0: { NUMNONPOSVAR = 0 | PRIMIDLOC = 255 | VIEWIDLOC = 255 }
+ 00000000 VPC_SO_STREAM_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
- + 00000000 PC_PRIMID_PASSTHRU: FALSE
+ + 00000000 PC_PS_CNTL: { 0 }
+ 00000000 PC_RASTER_CNTL: { STREAM = 0 }
+ 00000003 PC_POLYGON_MODE: { MODE = POLYMODE6_TRIANGLES }
+ 00000000 PC_PRIMITIVE_CNTL_0: { 0 }
@@ -4958,7 +4958,7 @@ ESTIMATED CRASH LOCATION!
+ 00ff0004 VPC_VS_PACK: { STRIDE_IN_VPC = 4 | POSITIONLOC = 0 | PSIZELOC = 255 | EXTRAPOS = 0 }
+ ff00ff00 VPC_CNTL_0: { NUMNONPOSVAR = 0 | PRIMIDLOC = 255 | VIEWIDLOC = 255 }
+ 00000000 VPC_SO_STREAM_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
- + 00000000 PC_PRIMID_PASSTHRU: FALSE
+ + 00000000 PC_PS_CNTL: { 0 }
+ 00000000 PC_RASTER_CNTL: { STREAM = 0 }
+ 00000003 PC_POLYGON_MODE: { MODE = POLYMODE6_TRIANGLES }
+ 00000000 PC_PRIMITIVE_CNTL_0: { 0 }
@@ -18061,7 +18061,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
ffffffff PC_RESTART_INDEX: 4294967295
0000001f PC_MODE_CNTL: 0x1f
00000001 PC_POWER_CNTL: 0x1
- 00000000 PC_PRIMID_PASSTHRU: FALSE
+ 00000000 PC_PS_CNTL: { 0 }
00000000 PC_PRIMITIVE_CNTL_0: { 0 }
00000004 PC_VS_OUT_CNTL: { STRIDE_IN_VPC = 4 | CLIP_MASK = 0 }
00000001 PC_GS_OUT_CNTL: { STRIDE_IN_VPC = 1 | CLIP_MASK = 0 }
@@ -18289,7 +18289,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
ffffffff PC_RESTART_INDEX: 4294967295
0000001f PC_MODE_CNTL: 0x1f
00000001 PC_POWER_CNTL: 0x1
- 00000000 PC_PRIMID_PASSTHRU: FALSE
+ 00000000 PC_PS_CNTL: { 0 }
00000000 PC_PRIMITIVE_CNTL_0: { 0 }
00000004 PC_VS_OUT_CNTL: { STRIDE_IN_VPC = 4 | CLIP_MASK = 0 }
00000001 PC_GS_OUT_CNTL: { STRIDE_IN_VPC = 1 | CLIP_MASK = 0 }
diff --git a/src/freedreno/.gitlab-ci/reference/dEQP-VK.draw.indirect_draw.indexed.indirect_draw_count.triangle_list.log b/src/freedreno/.gitlab-ci/reference/dEQP-VK.draw.indirect_draw.indexed.indirect_draw_count.triangle_list.log
index a6211bfa359..f56d177c266 100644
--- a/src/freedreno/.gitlab-ci/reference/dEQP-VK.draw.indirect_draw.indexed.indirect_draw_count.triangle_list.log
+++ b/src/freedreno/.gitlab-ci/reference/dEQP-VK.draw.indirect_draw.indexed.indirect_draw_count.triangle_list.log
@@ -944,8 +944,8 @@ cmdstream[0]: 265 dwords
write GRAS_VS_LAYER_CNTL (809b)
GRAS_VS_LAYER_CNTL: { 0 }
00000000010542e4: 0000: 48809b01 00000000
- write PC_PRIMID_PASSTHRU (9806)
- PC_PRIMID_PASSTHRU: FALSE
+ write PC_PS_CNTL (9806)
+ PC_PS_CNTL: { 0 }
00000000010542ec: 0000: 40980601 00000000
write VPC_CNTL_0 (9304)
VPC_CNTL_0: { NUMNONPOSVAR = 4 | PRIMIDLOC = 255 | VARYING | VIEWIDLOC = 255 }
@@ -1393,7 +1393,7 @@ cmdstream[0]: 265 dwords
!+ ff01ff04 VPC_CNTL_0: { NUMNONPOSVAR = 4 | PRIMIDLOC = 255 | VARYING | VIEWIDLOC = 255 }
+ 00000000 VPC_SO_STREAM_CNTL: { BUF0_STREAM = 0 | BUF1_STREAM = 0 | BUF2_STREAM = 0 | BUF3_STREAM = 0 | STREAM_ENABLE = 0 }
!+ ffffffff PC_RESTART_INDEX: 4294967295
- + 00000000 PC_PRIMID_PASSTHRU: FALSE
+ + 00000000 PC_PS_CNTL: { 0 }
!+ 00000003 PC_POLYGON_MODE: { MODE = POLYMODE6_TRIANGLES }
+ 00000000 PC_PRIMITIVE_CNTL_0: { 0 }
!+ 00000008 PC_VS_OUT_CNTL: { STRIDE_IN_VPC = 8 | CLIP_MASK = 0 }
diff --git a/src/freedreno/.gitlab-ci/reference/fd-clouds.log b/src/freedreno/.gitlab-ci/reference/fd-clouds.log
index d85563309a8..07a715db8fc 100644
--- a/src/freedreno/.gitlab-ci/reference/fd-clouds.log
+++ b/src/freedreno/.gitlab-ci/reference/fd-clouds.log
@@ -122,8 +122,8 @@ cmdstream[0]: 1023 dwords
write VPC_SO_DISABLE (9306)
VPC_SO_DISABLE: { DISABLE }
0000000001d91134: 0000: 48930601 00000001
- write PC_PRIMID_PASSTHRU (9806)
- PC_PRIMID_PASSTHRU: FALSE
+ write PC_PS_CNTL (9806)
+ PC_PS_CNTL: { 0 }
0000000001d9113c: 0000: 40980601 00000000
write 0x9990 (9990)
0x9990: 00000000
@@ -1029,7 +1029,7 @@ cmdstream[0]: 1023 dwords
!+ ffffffff PC_RESTART_INDEX: 4294967295
!+ 0000001f PC_MODE_CNTL: 0x1f
!+ 00000001 PC_POWER_CNTL: 0x1
- + 00000000 PC_PRIMID_PASSTHRU: FALSE
+ + 00000000 PC_PS_CNTL: { 0 }
+ 00000000 PC_RASTER_CNTL: { STREAM = 0 }
!+ 00000003 PC_POLYGON_MODE: { MODE = POLYMODE6_TRIANGLES }
+ 00000000 0x9990: 00000000
diff --git a/src/freedreno/.gitlab-ci/reference/prefetch-test.log b/src/freedreno/.gitlab-ci/reference/prefetch-test.log
index 7b464395f08..c8b05bce293 100644
--- a/src/freedreno/.gitlab-ci/reference/prefetch-test.log
+++ b/src/freedreno/.gitlab-ci/reference/prefetch-test.log
@@ -3137,7 +3137,7 @@ got cmdszdw=438
!+ ff01ff02 VPC_CNTL_0: { NUMNONPOSVAR = 2 | PRIMIDLOC = 255 | VARYING | VIEWIDLOC = 255 }
!+ 00000000 VPC_SO_DISABLE: { 0 }
!+ ffffffff PC_RESTART_INDEX: 4294967295
- + 00000000 PC_PRIMID_PASSTHRU: FALSE
+ + 00000000 PC_PS_CNTL: { 0 }
!+ 00000003 PC_POLYGON_MODE: { MODE = POLYMODE6_TRIANGLES }
!+ 00000002 PC_PRIMITIVE_CNTL_0: { PROVOKING_VTX_LAST }
!+ 00000006 PC_VS_OUT_CNTL: { STRIDE_IN_VPC = 6 | CLIP_MASK = 0 }
@@ -152040,7 +152040,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
ffffffff PC_RESTART_INDEX: 4294967295
0000001f PC_MODE_CNTL: 0x1f
00000000 PC_POWER_CNTL: 0
- 00000000 PC_PRIMID_PASSTHRU: FALSE
+ 00000000 PC_PS_CNTL: { 0 }
00000002 PC_PRIMITIVE_CNTL_0: { PROVOKING_VTX_LAST }
00000006 PC_VS_OUT_CNTL: { STRIDE_IN_VPC = 6 | CLIP_MASK = 0 }
00000001 PC_GS_OUT_CNTL: { STRIDE_IN_VPC = 1 | CLIP_MASK = 0 }
@@ -152268,7 +152268,7 @@ WARNING: 64b discontinuity (no _LO dword for 890d)
ffffffff PC_RESTART_INDEX: 4294967295
0000001f PC_MODE_CNTL: 0x1f
00000000 PC_POWER_CNTL: 0
- 00000000 PC_PRIMID_PASSTHRU: FALSE
+ 00000000 PC_PS_CNTL: { 0 }
00000002 PC_PRIMITIVE_CNTL_0: { PROVOKING_VTX_LAST }
00000006 PC_VS_OUT_CNTL: { STRIDE_IN_VPC = 6 | CLIP_MASK = 0 }
00000001 PC_GS_OUT_CNTL: { STRIDE_IN_VPC = 1 | CLIP_MASK = 0 }
diff --git a/src/freedreno/registers/adreno/a6xx.xml b/src/freedreno/registers/adreno/a6xx.xml
index 802c3e87a2d..fcdedc4020b 100644
--- a/src/freedreno/registers/adreno/a6xx.xml
+++ b/src/freedreno/registers/adreno/a6xx.xml
@@ -2940,8 +2940,9 @@ to upconvert to 32b float internally?
-
-
+
+
+
@@ -3122,11 +3123,9 @@ to upconvert to 32b float internally?
-
+
diff --git a/src/freedreno/vulkan/tu_pipeline.cc b/src/freedreno/vulkan/tu_pipeline.cc
index 81c4aa8b88f..4de9034a72c 100644
--- a/src/freedreno/vulkan/tu_pipeline.cc
+++ b/src/freedreno/vulkan/tu_pipeline.cc
@@ -896,7 +896,7 @@ tu6_emit_vs_system_values(struct tu_cs *cs,
tu_cs_emit(cs, 0x000000fc); /* VFD_CONTROL_4 */
tu_cs_emit(cs, A6XX_VFD_CONTROL_5_REGID_GSHEADER(gsheader_regid) |
0xfc00); /* VFD_CONTROL_5 */
- tu_cs_emit(cs, COND(primid_passthru, A6XX_VFD_CONTROL_6_PRIMID_PASSTHRU)); /* VFD_CONTROL_6 */
+ tu_cs_emit(cs, COND(primid_passthru, A6XX_VFD_CONTROL_6_PRIMID4PSEN)); /* VFD_CONTROL_6 */
}
static void
@@ -1437,7 +1437,7 @@ tu6_emit_vpc(struct tu_cs *cs,
tu_cs_emit(cs, CONDREG(layer_regid, A6XX_GRAS_GS_LAYER_CNTL_WRITES_LAYER) |
CONDREG(view_regid, A6XX_GRAS_GS_LAYER_CNTL_WRITES_VIEW));
- tu_cs_emit_regs(cs, A6XX_PC_PRIMID_PASSTHRU(primid_passthru));
+ tu_cs_emit_regs(cs, A6XX_PC_PS_CNTL(.primitiveiden = primid_passthru));
tu_cs_emit_pkt4(cs, REG_A6XX_VPC_CNTL_0, 1);
tu_cs_emit(cs, A6XX_VPC_CNTL_0_NUMNONPOSVAR(fs ? fs->total_in : 0) |
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_program.cc b/src/gallium/drivers/freedreno/a6xx/fd6_program.cc
index 39f41883052..3c40eb2eff1 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_program.cc
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_program.cc
@@ -1141,7 +1141,7 @@ setup_stateobj(struct fd_screen *screen, struct fd_ringbuffer *ring,
if (fs->instrlen)
fd6_emit_shader(ctx, ring, fs);
- OUT_REG(ring, A6XX_PC_PRIMID_PASSTHRU(primid_passthru));
+ OUT_REG(ring, A6XX_PC_PS_CNTL(.primitiveiden = primid_passthru));
uint32_t non_sysval_input_count = 0;
for (uint32_t i = 0; i < vs->inputs_count; i++)
@@ -1176,7 +1176,7 @@ setup_stateobj(struct fd_screen *screen, struct fd_ringbuffer *ring,
OUT_RING(ring, A6XX_VFD_CONTROL_5_REGID_GSHEADER(gs_header_regid) |
0xfc00); /* VFD_CONTROL_5 */
OUT_RING(ring, COND(primid_passthru,
- A6XX_VFD_CONTROL_6_PRIMID_PASSTHRU)); /* VFD_CONTROL_6 */
+ A6XX_VFD_CONTROL_6_PRIMID4PSEN)); /* VFD_CONTROL_6 */
if (!binning_pass)
fd6_emit_immediates(ctx->screen, fs, ring);