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)