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 }
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 }
!+ 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 }
+ 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 }
+ 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 }
+ 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 }
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 }
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 }
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 }
!+ 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 }
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
!+ 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
!+ 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 }
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 }
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 }
<reg32 offset="0x9805" name="PC_POWER_CNTL" low="0" high="2" usage="rp_blit"/>
- <!-- probably a mirror of VFD_CONTROL_6 -->
- <reg32 offset="0x9806" name="PC_PRIMID_PASSTHRU" pos="0" type="boolean" usage="rp_blit"/>
+ <reg32 offset="0x9806" name="PC_PS_CNTL" usage="rp_blit">
+ <bitfield name="PRIMITIVEIDEN" pos="0" type="boolean"/>
+ </reg32>
<!-- New in a6xx gen3+ -->
<reg32 offset="0x9808" name="PC_SO_STREAM_CNTL" usage="rp_blit">
</reg32>
<reg32 offset="0xa006" name="VFD_CONTROL_6" usage="rp_blit">
<!--
- True if gl_PrimitiveID is read via the FS and there is
- no matching write from the GS, and therefore it needs to
- be passed through via fixed-function logic.
+ True if gl_PrimitiveID is read via the FS
-->
- <bitfield name="PRIMID_PASSTHRU" pos="0" type="boolean"/>
+ <bitfield name="PRIMID4PSEN" pos="0" type="boolean"/>
</reg32>
<reg32 offset="0xa007" name="VFD_MODE_CNTL" usage="cmd">
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
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) |
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++)
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);