diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py index b2b81a3e60f..d6aebdba6e6 100644 --- a/src/freedreno/registers/gen_header.py +++ b/src/freedreno/registers/gen_header.py @@ -220,11 +220,15 @@ class Bitset(object): address = self.get_address_field() if address: + print("#ifndef TU_CS_H") print(" .bo = fields.bo,") print(" .is_address = true,") print(" .bo_offset = fields.bo_offset,") print(" .bo_shift = %d," % address.shr) print(" .bo_low = %d," % address.low) + print("#else") + print(" .is_address = true,") + print("#endif") print(" };") @@ -239,8 +243,10 @@ class Bitset(object): print("struct %s {" % prefix) for f in self.fields: if f.type in ["address", "waddress"]: + print("#ifndef TU_CS_H") tab_to(" __bo_type", "bo;") tab_to(" uint32_t", "bo_offset;") + print("#endif\n") continue name = field_name(reg, f) @@ -881,8 +887,10 @@ class Parser(object): if address: continue address = f + print("#ifndef TU_CS_H") tab_to(" __bo_type", "bo;") tab_to(" uint32_t", "bo_offset;") + print("#endif") continue type, val = f.ctype("var") tab_to(" %s" % type, "%s;" % name) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 2619b6829b6..40c58df0990 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -2107,12 +2107,8 @@ tu6_init_static_regs(struct tu_device *dev, struct tu_cs *cs) tu_cs_emit_regs(cs, A6XX_RB_ALPHA_TEST_CNTL()); /* always disable alpha test */ - tu_cs_emit_regs(cs, - A6XX_TPL1_GFX_BORDER_COLOR_BASE(.bo = dev->global_bo, - .bo_offset = gb_offset(bcolor))); - tu_cs_emit_regs(cs, - A6XX_TPL1_CS_BORDER_COLOR_BASE(.bo = dev->global_bo, - .bo_offset = gb_offset(bcolor))); + tu_cs_emit_regs(cs, A6XX_TPL1_GFX_BORDER_COLOR_BASE(.qword = dev->global_bo->iova + gb_offset(bcolor))); + tu_cs_emit_regs(cs, A6XX_TPL1_CS_BORDER_COLOR_BASE(.qword = dev->global_bo->iova + gb_offset(bcolor))); /* BR-only registers */ if (CHIP >= A7XX) diff --git a/src/freedreno/vulkan/tu_cs.h b/src/freedreno/vulkan/tu_cs.h index f9e037dedea..ca209e7ab08 100644 --- a/src/freedreno/vulkan/tu_cs.h +++ b/src/freedreno/vulkan/tu_cs.h @@ -590,15 +590,10 @@ tu_cs_emit_data_nop(struct tu_cs *cs, struct tu_reg_value { uint32_t reg; uint64_t value; - struct tu_bo *bo; bool is_address; - uint32_t bo_offset; - uint32_t bo_shift; - uint32_t bo_low; }; #define fd_reg_pair tu_reg_value -#define __bo_type struct tu_bo * #include "a6xx-pack.xml.h" #include "adreno-pm4-pack.xml.h" @@ -615,19 +610,9 @@ struct tu_reg_value { do { \ if (i < ARRAY_SIZE(regs) && regs[i].reg > 0) { \ __assert_eq(regs[0].reg + i, regs[i].reg); \ - if (regs[i].bo) { \ - uint64_t v = regs[i].bo->iova + regs[i].bo_offset; \ - v >>= regs[i].bo_shift; \ - v <<= regs[i].bo_low; \ - v |= regs[i].value; \ - \ - *p++ = v; \ - *p++ = v >> 32; \ - } else { \ - *p++ = regs[i].value; \ - if (regs[i].is_address) \ - *p++ = regs[i].value >> 32; \ - } \ + *p++ = regs[i].value; \ + if (regs[i].is_address) \ + *p++ = regs[i].value >> 32; \ } \ } while (0)