Module: Mesa Branch: master Commit: d4bc3c93ea56517981b553841c2adbb734a68078 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d4bc3c93ea56517981b553841c2adbb734a68078
Author: Eric Anholt <[email protected]> Date: Fri Jan 17 14:28:13 2020 -0800 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> --- src/freedreno/registers/gen_header.py | 1 + src/gallium/drivers/freedreno/a6xx/fd6_pack.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py index f11724d707a..887656fd5d8 100644 --- a/src/freedreno/registers/gen_header.py +++ b/src/freedreno/registers/gen_header.py @@ -179,6 +179,7 @@ class Bitset(object): print(" fields.unknown | fields.dword,") if address: + print(" .is_address = true,") print(" .bo = fields.bo,") if f.type == "waddress": print(" .bo_write = true,") 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) _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
