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);