mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
freedreno/a7xx: Document partial workgroup register
This lets us implement "unaligned" dispatches without inserting shader code. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28447>
This commit is contained in:
parent
b8cb00c64a
commit
1edeeb3d13
5 changed files with 10 additions and 10 deletions
|
|
@ -499,9 +499,9 @@ a6xx_emit_grid(struct kernel *kernel, uint32_t grid[3],
|
|||
.localsizez = local_size[2] - 1,
|
||||
));
|
||||
if (CHIP == A7XX) {
|
||||
OUT_REG(ring, A7XX_HLSQ_CS_LOCAL_SIZE(.localsizex = local_size[0] - 1,
|
||||
.localsizey = local_size[1] - 1,
|
||||
.localsizez = local_size[2] - 1, ));
|
||||
OUT_REG(ring, A7XX_HLSQ_CS_LAST_LOCAL_SIZE(.localsizex = local_size[0] - 1,
|
||||
.localsizey = local_size[1] - 1,
|
||||
.localsizez = local_size[2] - 1, ));
|
||||
}
|
||||
|
||||
OUT_REG(ring, HLSQ_CS_NDRANGE_1(CHIP,
|
||||
|
|
|
|||
|
|
@ -5723,8 +5723,8 @@ to upconvert to 32b float internally?
|
|||
<bitfield name="WGTILEHEIGHT" low="26" high="31"/>
|
||||
</reg32>
|
||||
|
||||
<reg32 offset="0xa9df" name="HLSQ_CS_LOCAL_SIZE" variants="A7XX-" usage="cmd">
|
||||
<!-- localsize is value minus one: -->
|
||||
<reg32 offset="0xa9df" name="HLSQ_CS_LAST_LOCAL_SIZE" variants="A7XX-" usage="cmd">
|
||||
<!-- The size of the last workgroup. localsize is value minus one: -->
|
||||
<bitfield name="LOCALSIZEX" low="2" high="11" type="uint"/>
|
||||
<bitfield name="LOCALSIZEY" low="12" high="21" type="uint"/>
|
||||
<bitfield name="LOCALSIZEZ" low="22" high="31" type="uint"/>
|
||||
|
|
|
|||
|
|
@ -2302,7 +2302,7 @@ tu_init_cmdbuf_start_a725_quirk(struct tu_device *device)
|
|||
HLSQ_CS_NDRANGE_4(A7XX, .globaloff_y = 0),
|
||||
HLSQ_CS_NDRANGE_5(A7XX, .globalsize_z = 1),
|
||||
HLSQ_CS_NDRANGE_6(A7XX, .globaloff_z = 0));
|
||||
tu_cs_emit_regs(&sub_cs, A7XX_HLSQ_CS_LOCAL_SIZE(
|
||||
tu_cs_emit_regs(&sub_cs, A7XX_HLSQ_CS_LAST_LOCAL_SIZE(
|
||||
.localsizex = 255,
|
||||
.localsizey = 0,
|
||||
.localsizez = 0));
|
||||
|
|
|
|||
|
|
@ -1553,9 +1553,9 @@ tu6_emit_cs_config(struct tu_cs *cs,
|
|||
WORKITEMRASTORDER_TILED, ));
|
||||
|
||||
tu_cs_emit_regs(
|
||||
cs, A7XX_HLSQ_CS_LOCAL_SIZE(.localsizex = v->local_size[0] - 1,
|
||||
.localsizey = v->local_size[1] - 1,
|
||||
.localsizez = v->local_size[2] - 1, ));
|
||||
cs, A7XX_HLSQ_CS_LAST_LOCAL_SIZE(.localsizex = v->local_size[0] - 1,
|
||||
.localsizey = v->local_size[1] - 1,
|
||||
.localsizez = v->local_size[2] - 1, ));
|
||||
|
||||
tu_cs_emit_regs(cs, A7XX_SP_CS_UNKNOWN_A9BE(0)); // Sometimes is 0x08000000
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ cs_program_emit_local_size(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
);
|
||||
|
||||
OUT_REG(ring,
|
||||
A7XX_HLSQ_CS_LOCAL_SIZE(
|
||||
A7XX_HLSQ_CS_LAST_LOCAL_SIZE(
|
||||
.localsizex = local_size[0] - 1,
|
||||
.localsizey = local_size[1] - 1,
|
||||
.localsizez = local_size[2] - 1,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue