From c84b069fca26ede9f29a541fcab5d6287718d9bc Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Tue, 10 Feb 2026 11:17:06 -0800 Subject: [PATCH] freedreno/registers: Split out compute usage Signed-off-by: Rob Clark Part-of: --- src/freedreno/registers/adreno/a6xx.xml | 115 +++++++++--------- src/freedreno/vulkan/tu_device.cc | 2 + .../drivers/freedreno/a6xx/fd6_emit.cc | 1 + 3 files changed, 61 insertions(+), 57 deletions(-) diff --git a/src/freedreno/registers/adreno/a6xx.xml b/src/freedreno/registers/adreno/a6xx.xml index 50b5f694f54..265c26d1f86 100644 --- a/src/freedreno/registers/adreno/a6xx.xml +++ b/src/freedreno/registers/adreno/a6xx.xml @@ -20,6 +20,7 @@ currently there are following usages: roughly corresponds to registers used in ib1 for Freedreno - "rp_blit" - the register is used inside renderpass or blits (ib2 for Freedreno) +- "compute" - used by compute cmds - "blit" - used by CP_BLIT cmds - "resolve" - used by CCU_RESOLVE (resolve/unresolve/clear) events @@ -4064,7 +4065,7 @@ by a particular renderpass/blit. - + @@ -4082,7 +4083,7 @@ by a particular renderpass/blit. - + If 0 - all 32k of shared storage is enabled, otherwise @@ -4102,29 +4103,29 @@ by a particular renderpass/blit. - - - - - - - - - - - - + + + + + + + + + + + + - + - + @@ -4162,9 +4163,9 @@ by a particular renderpass/blit. - + - + @@ -4175,13 +4176,13 @@ by a particular renderpass/blit. - + - + @@ -4191,9 +4192,9 @@ by a particular renderpass/blit. - - - + + + @@ -4657,7 +4658,7 @@ by a particular renderpass/blit. - + @@ -4675,35 +4676,35 @@ by a particular renderpass/blit. - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - - - + + + @@ -4767,7 +4768,7 @@ by a particular renderpass/blit. - + @@ -4788,7 +4789,7 @@ by a particular renderpass/blit. - + @@ -4800,7 +4801,7 @@ by a particular renderpass/blit. - + @@ -4808,7 +4809,7 @@ by a particular renderpass/blit. - + @@ -4827,7 +4828,7 @@ by a particular renderpass/blit. - + This register clears pending loads queued up by CP_LOAD_STATE6. Each bit resets a particular kind(s) of @@ -4867,7 +4868,7 @@ by a particular renderpass/blit. - + This register clears pending loads queued up by CP_LOAD_STATE6. Each bit resets a particular kind(s) of @@ -4890,7 +4891,7 @@ by a particular renderpass/blit. - + This register clears pending loads queued up by CP_LOAD_STATE6. Each bit resets a particular kind(s) of @@ -4906,7 +4907,7 @@ by a particular renderpass/blit. - + @@ -4915,7 +4916,7 @@ by a particular renderpass/blit. - + Shared constants are intended to be used for Vulkan push constants. When enabled, 8 vec4's are reserved in the FS diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index 7bae319c76d..b4ca6e31fc3 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -2525,6 +2525,8 @@ tu_cs_dbg_stomp_regs(struct tu_cs *cs, first_reg, last_reg, inverse); stomp_regs(cs, &BLIT_REGS[0], ARRAY_SIZE(BLIT_REGS), first_reg, last_reg, inverse); + stomp_regs(cs, &COMPUTE_REGS[0], ARRAY_SIZE(COMPUTE_REGS), + first_reg, last_reg, inverse); } else { stomp_regs(cs, &CMD_REGS[0], ARRAY_SIZE(CMD_REGS), first_reg, last_reg, inverse); diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_emit.cc b/src/gallium/drivers/freedreno/a6xx/fd6_emit.cc index 67bdf687098..f41d19dd016 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_emit.cc +++ b/src/gallium/drivers/freedreno/a6xx/fd6_emit.cc @@ -1101,6 +1101,7 @@ fd6_emit_restore(fd_cs &cs, struct fd_batch *batch) if (FD_DBG(STOMP)) { fd6_emit_stomp(cs, &RP_BLIT_REGS[0], ARRAY_SIZE(RP_BLIT_REGS)); + fd6_emit_stomp(cs, &COMPUTE_REGS[0], ARRAY_SIZE(COMPUTE_REGS)); fd6_emit_stomp(cs, &BLIT_REGS[0], ARRAY_SIZE(BLIT_REGS)); fd6_emit_stomp(cs, &CMD_REGS[0], ARRAY_SIZE(CMD_REGS)); fd6_emit_stomp(cs, &RESOLVE_REGS[0], ARRAY_SIZE(RESOLVE_REGS));