aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2020-01-17 14:28:13 -0800
committerMarge Bot <[email protected]>2020-01-23 22:46:09 +0000
commitd4bc3c93ea56517981b553841c2adbb734a68078 (patch)
treef1de3e4c8bb3c6c0881ad9a903ffb4a3123b9e18 /src/gallium/drivers
parentc1327bc283e0a99f27d97c4a48c89efb5248c93d (diff)
freedreno: Fix OUT_REG() on address regs without a .bo supplied.
Sometimes you want to zero out an address by supplying a NULL BO, but without this we would end up only emitting one dword. Increases size of fd6_gmem.o by .8%, though it's not clear to me why (no obvious terrible codegen happening) Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3455>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_pack.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_pack.h b/src/gallium/drivers/freedreno/a6xx/fd6_pack.h
index f5f8e2ca5f7..b3b9bf9244d 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_pack.h
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_pack.h
@@ -30,6 +30,7 @@ struct fd_reg_pair {
uint32_t reg;
uint64_t value;
struct fd_bo *bo;
+ bool is_address;
bool bo_write;
uint32_t bo_offset;
uint32_t bo_shift;
@@ -68,6 +69,8 @@ struct fd_reg_pair {
fd_ringbuffer_reloc(ring, &reloc); \
} else { \
*p++ = regs[i].value; \
+ if (regs[i].is_address) \
+ *p++ = regs[i].value >> 32; \
} \
} \
} while (0)