diff --git a/src/freedreno/common/freedreno_stompable_regs.h b/src/freedreno/common/freedreno_stompable_regs.h index 32d34956cd0..7923e9f5f96 100644 --- a/src/freedreno/common/freedreno_stompable_regs.h +++ b/src/freedreno/common/freedreno_stompable_regs.h @@ -8,6 +8,8 @@ #include +#include "util/macros.h" + #include "fd6_hw.h" /* In order to debug issues with usage of stale reg data we need to have @@ -26,6 +28,9 @@ static inline bool fd_reg_stomp_allowed(chip CHIP, uint16_t reg) { + PRAGMA_DIAGNOSTIC_PUSH + PRAGMA_DIAGNOSTIC_IGNORED_CLANG(-W#pragma-messages) + switch (CHIP) { case A6XX: { switch (reg) { @@ -77,6 +82,7 @@ fd_reg_stomp_allowed(chip CHIP, uint16_t reg) default: { UNREACHABLE("Unknown GPU"); } + PRAGMA_DIAGNOSTIC_POP } return true; diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py index 33372108aaa..f1ed5ef4c7e 100644 --- a/src/freedreno/registers/gen_header.py +++ b/src/freedreno/registers/gen_header.py @@ -121,6 +121,10 @@ def tab_to(name, value): tab_count = 1 print(name + ('\t' * tab_count) + value) +def define_macro(name, value, has_variants): + if has_variants: + value = "__FD_DEPRECATED " + value + tab_to(name, value) def mask(low, high): return ((0xffffffffffffffff >> (64 - (high + 1 - low))) << low) @@ -407,11 +411,13 @@ class Array(object): print("\t\tdefault: return INVALID_IDX(idx);") print("\t}\n}") if proto == '': - tab_to("#define REG_%s_%s" % - (self.domain, self.name), "0x%08x\n" % array_offset) + define_macro("#define REG_%s_%s" % + (self.domain, self.name), "0x%08x\n" % array_offset, + has_variants) else: - tab_to("#define REG_%s_%s(%s)" % (self.domain, self.name, - proto), "(0x%08x + %s )\n" % (array_offset, strides)) + define_macro("#define REG_%s_%s(%s)" % (self.domain, self.name, + proto), "(0x%08x + %s )\n" % (array_offset, strides), + has_variants) def dump_pack_struct(self, has_variants): pass @@ -466,10 +472,13 @@ class Reg(object): strides = indices_strides(self.indices()) offset = self.total_offset() if proto == '': - tab_to("#define REG_%s" % self.full_name, "0x%08x" % offset) + define_macro("#define REG_%s" % self.full_name, "0x%08x" % offset, has_variants) elif not has_variants: - print("static CONSTEXPR inline uint32_t REG_%s(%s) { return 0x%08x + %s; }" % ( - self.full_name, proto, offset, strides)) + depcrstr = "" + if has_variants: + depcrstr = " __FD_DEPRECATED " + print("static CONSTEXPR inline%s uint32_t REG_%s(%s) { return 0x%08x + %s; }" % ( + depcrstr, self.full_name, proto, offset, strides)) if self.bitset.inline: self.bitset.dump(has_variants, self.full_name, self) @@ -980,6 +989,15 @@ def dump_c(args, guard, func): print("#endif") print() + # TODO figure out what to do about fd_reg_stomp_allowed() + # vs gcc.. for now only enable the warnings with clang: + print("#if defined(__clang__) && !defined(FD_NO_DEPRECATED_PACK)") + print("#define __FD_DEPRECATED _Pragma (\"GCC warning \\\"Deprecated reg builder\\\"\")") + print("#else") + print("#define __FD_DEPRECATED") + print("#endif") + print() + func(p) print("#endif /* %s */" % guard) diff --git a/src/freedreno/vulkan/meson.build b/src/freedreno/vulkan/meson.build index b68006ae571..66edf262fdb 100644 --- a/src/freedreno/vulkan/meson.build +++ b/src/freedreno/vulkan/meson.build @@ -135,6 +135,9 @@ if freedreno_kmds.contains('virtio') tu_deps += dep_libdrm endif +# Temporarily quiet deprecated warnings until turnip is converted: +tu_flags += '-DFD_NO_DEPRECATED_PACK' + tu_tracepoints = custom_target( 'tu_tracepoints.[ch]', input: 'tu_tracepoints.py',