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>
This commit is contained in:
parent
c1327bc283
commit
d4bc3c93ea
|
@ -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,")
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue