This commit is contained in:
Joshua Vandaële 2025-04-24 07:21:01 +02:00 committed by GitHub
commit d88e0660ef
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
48 changed files with 170 additions and 220 deletions

View file

@ -39,7 +39,7 @@ This guide is for developers who wish to contribute to the Dolphin codebase. It
Following this guide and formatting your code as detailed will likely get your pull request merged much faster than if you don't (assuming the code itself has no mistakes).
This project uses clang-format 13.0 to check for common style issues. In case of conflicts between this guide and clang-format rules, the latter should be followed instead of this guide.
This project uses clang-format 19.1 to check for common style issues. In case of conflicts between this guide and clang-format rules, the latter should be followed instead of this guide.
## <a name="intro-formatting-issues"></a>Checking and fixing formatting issues

View file

@ -54,6 +54,7 @@ IncludeCategories:
IndentCaseLabels: false
IndentWidth: 2
IndentWrappedFunctionNames: false
InsertNewlineAtEOF: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
@ -67,6 +68,8 @@ PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Left
ReflowComments: true
RemoveSemicolon: true
RequiresClausePosition: WithPreceding
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
@ -79,6 +82,8 @@ SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Latest
StatementAttributeLikeMacros:
- emit
TabWidth: 2
UseTab: Never
---
@ -93,4 +98,3 @@ ObjCSpaceBeforeProtocolList: true
BraceWrapping:
AfterObjCDeclaration: true
...

View file

@ -429,7 +429,10 @@ extern const CaseInsensitiveDict<ParseInfo, '.', '_'> mnemonic_tokens = {
#define PSEUDO(mnemonic, base, variant_bits, alg) \
{ \
mnemonic, { static_cast<size_t>(base) * VARIANT_PERMUTATIONS + (variant_bits), alg } \
mnemonic, \
{ \
static_cast<size_t>(base) * VARIANT_PERMUTATIONS + (variant_bits), alg \
} \
}
#define PLAIN_PSEUDO(mnemonic, base, alg) PSEUDO(mnemonic, base, PLAIN_MNEMONIC, alg)
#define RC_PSEUDO(mnemonic, base, alg) \
@ -673,7 +676,7 @@ extern const CaseInsensitiveDict<ParseInfo, '.', '_', '+', '-'> extended_mnemoni
EMIT_MNEMONIC_ENTRY(opcode_val, ((extra_bits) | InsertVal(0b11, 30, 31)), __VA_ARGS__)
// Defines all basic mnemonics that Broadway/Gekko supports
extern const std::array<MnemonicDesc, NUM_MNEMONICS* VARIANT_PERMUTATIONS> mnemonics = {
extern const std::array<MnemonicDesc, NUM_MNEMONICS * VARIANT_PERMUTATIONS> mnemonics = {
// A-2
OERC_MNEMONIC(31, InsertVal(266, 22, 30), OpDesc_D, OpDesc_A, OpDesc_B), // add
OERC_MNEMONIC(31, InsertVal(10, 22, 30), OpDesc_D, OpDesc_A, OpDesc_B), // addc
@ -1048,7 +1051,10 @@ void FillMfsprBatAndBitswap(OperandList& operands)
} // namespace
#define PSEUDO(base, variant_bits, cb) \
ExtendedMnemonicDesc { static_cast<size_t>(base) * VARIANT_PERMUTATIONS + variant_bits, cb }
ExtendedMnemonicDesc \
{ \
static_cast<size_t>(base) * VARIANT_PERMUTATIONS + variant_bits, cb \
}
#define PLAIN_PSEUDO(base, cb) \
PSEUDO(base, PLAIN_MNEMONIC, cb), INVALID_EXT_MNEMONIC, INVALID_EXT_MNEMONIC, INVALID_EXT_MNEMONIC
#define RC_PSEUDO(base, cb) \
@ -1064,7 +1070,7 @@ void FillMfsprBatAndBitswap(OperandList& operands)
PSEUDO(base, PLAIN_MNEMONIC, cb), PSEUDO(base, LINK_BIT, cb), \
PSEUDO(base, ABSOLUTE_ADDRESS_BIT, cb), PSEUDO(base, (LINK_BIT | ABSOLUTE_ADDRESS_BIT), cb)
extern const std::array<ExtendedMnemonicDesc, NUM_EXT_MNEMONICS* VARIANT_PERMUTATIONS>
extern const std::array<ExtendedMnemonicDesc, NUM_EXT_MNEMONICS * VARIANT_PERMUTATIONS>
extended_mnemonics = {
// E.2.1
PLAIN_PSEUDO(GekkoMnemonic::Addi, NegateSIMM), // subi

View file

@ -26,7 +26,7 @@ static u32 Decode5A3(u16 val)
{
r = s_lut5to8[(val >> 10) & 0x1f];
g = s_lut5to8[(val >> 5) & 0x1f];
b = s_lut5to8[(val)&0x1f];
b = s_lut5to8[(val) & 0x1f];
a = 0xFF;
}
else
@ -34,7 +34,7 @@ static u32 Decode5A3(u16 val)
a = s_lut3to8[(val >> 12) & 0x7];
r = (s_lut4to8[(val >> 8) & 0xf] * a + (bg_color & 0xFF) * (255 - a)) / 255;
g = (s_lut4to8[(val >> 4) & 0xf] * a + ((bg_color >> 8) & 0xFF) * (255 - a)) / 255;
b = (s_lut4to8[(val)&0xf] * a + ((bg_color >> 16) & 0xFF) * (255 - a)) / 255;
b = (s_lut4to8[(val) & 0xf] * a + ((bg_color >> 16) & 0xFF) * (255 - a)) / 255;
a = 0xFF;
}
return (a << 24) | (r << 16) | (g << 8) | b;

View file

@ -155,6 +155,6 @@ int __cdecl EnableCompatPatches()
// referencing it doesn't require ugly decorated names.
// Use /include:enableCompatPatches linker flag to enable this.
extern "C" {
__declspec(allocate(".CRT$XCZ")) decltype(&EnableCompatPatches)
enableCompatPatches = EnableCompatPatches;
__declspec(allocate(".CRT$XCZ")) decltype(&EnableCompatPatches) enableCompatPatches =
EnableCompatPatches;
}

View file

@ -18,7 +18,7 @@ namespace Config
// Setting a key to an object of this type will delete the key.
struct DefaultState
{
friend constexpr bool operator==(DefaultState, DefaultState) { return true; };
friend constexpr bool operator==(DefaultState, DefaultState) { return true; }
};
namespace detail

View file

@ -11,16 +11,16 @@ namespace Common
struct ContainsFn
{
template <std::input_iterator I, std::sentinel_for<I> S, class T, class Proj = std::identity>
requires std::indirect_binary_predicate < std::ranges::equal_to, std::projected<I, Proj>,
const T* > constexpr bool operator()(I first, S last, const T& value, Proj proj = {}) const
requires std::indirect_binary_predicate<std::ranges::equal_to, std::projected<I, Proj>, const T*>
constexpr bool operator()(I first, S last, const T& value, Proj proj = {}) const
{
return std::ranges::find(std::move(first), last, value, std::move(proj)) != last;
}
template <std::ranges::input_range R, class T, class Proj = std::identity>
requires std::indirect_binary_predicate < std::ranges::equal_to,
std::projected<std::ranges::iterator_t<R>, Proj>,
const T* > constexpr bool operator()(R&& r, const T& value, Proj proj = {}) const
requires std::indirect_binary_predicate<
std::ranges::equal_to, std::projected<std::ranges::iterator_t<R>, Proj>, const T*>
constexpr bool operator()(R&& r, const T& value, Proj proj = {}) const
{
return (*this)(std::ranges::begin(r), std::ranges::end(r), value, std::move(proj));
}

View file

@ -996,41 +996,23 @@ PFNDOLDISPATCHCOMPUTEPROC dolDispatchCompute;
PFNDOLDISPATCHCOMPUTEINDIRECTPROC dolDispatchComputeIndirect;
// Creates a GLFunc object that requires a feature
#define GLFUNC_REQUIRES(x, y) \
{ \
(void**)&x, #x, y \
}
#define GLFUNC_REQUIRES(x, y) {(void**)&x, #x, y}
// Creates a GLFunc object with a different function suffix
// For when we want to use the same function pointer, but different function name
#define GLFUNC_SUFFIX(x, y, z) \
{ \
(void**)&x, #x #y, z \
}
#define GLFUNC_SUFFIX(x, y, z) {(void**)&x, #x #y, z}
// Creates a GLFunc object that should always be able to get grabbed
// Used for Desktop OpenGL functions that should /always/ be provided.
// aka GL 1.1/1.2/1.3/1.4
#define GLFUNC_ALWAYS_REQUIRED(x) \
{ \
(void**)&x, #x, "VERSION_GL" \
}
#define GLFUNC_ALWAYS_REQUIRED(x) {(void**)&x, #x, "VERSION_GL"}
// Creates a GLFunc object that should be able to get grabbed
// on both GL and ES
#define GL_ES_FUNC_ALWAYS_REQUIRED(x) \
{ \
(void**)&x, #x, "VERSION_GL |VERSION_GLES_2" \
}
#define GL_ES_FUNC_ALWAYS_REQUIRED(x) {(void**)&x, #x, "VERSION_GL |VERSION_GLES_2"}
// Creates a GLFunc object that should be able to get grabbed
// on both GL and ES 3.0
#define GL_ES3_FUNC_ALWAYS_REQUIRED(x) \
{ \
(void**)&x, #x, "VERSION_GL |VERSION_GLES_3" \
}
#define GL_ES3_FUNC_ALWAYS_REQUIRED(x) {(void**)&x, #x, "VERSION_GL |VERSION_GLES_3"}
// Creates a GLFunc object that should be able to get grabbed
// on both GL and ES 3.2
#define GL_ES32_FUNC_ALWAYS_REQUIRED(x) \
{ \
(void**)&x, #x, "VERSION_GL |VERSION_GLES_3_2" \
}
#define GL_ES32_FUNC_ALWAYS_REQUIRED(x) {(void**)&x, #x, "VERSION_GL |VERSION_GLES_3_2"}
struct GLFunc
{

View file

@ -73,17 +73,17 @@ namespace Common
#define PPCLSH 21
#define PPCIDX2SH 1
#define PPCGETIDX(x) (((x)&PPCIDXMASK) >> PPCIDXSH)
#define PPCGETD(x) (((x)&PPCDMASK) >> PPCDSH)
#define PPCGETA(x) (((x)&PPCAMASK) >> PPCASH)
#define PPCGETB(x) (((x)&PPCBMASK) >> PPCBSH)
#define PPCGETC(x) (((x)&PPCCMASK) >> PPCCSH)
#define PPCGETM(x) (((x)&PPCMMASK) >> PPCMSH)
#define PPCGETCRD(x) (((x)&PPCCRDMASK) >> PPCCRDSH)
#define PPCGETCRA(x) (((x)&PPCCRAMASK) >> PPCCRASH)
#define PPCGETL(x) (((x)&PPCLMASK) >> PPCLSH)
#define PPCGETIDX2(x) (((x)&PPCIDX2MASK) >> PPCIDX2SH)
#define PPCGETSTRM(x) (((x)&PPCSTRM) >> PPCDSH)
#define PPCGETIDX(x) (((x) & PPCIDXMASK) >> PPCIDXSH)
#define PPCGETD(x) (((x) & PPCDMASK) >> PPCDSH)
#define PPCGETA(x) (((x) & PPCAMASK) >> PPCASH)
#define PPCGETB(x) (((x) & PPCBMASK) >> PPCBSH)
#define PPCGETC(x) (((x) & PPCCMASK) >> PPCCSH)
#define PPCGETM(x) (((x) & PPCMMASK) >> PPCMSH)
#define PPCGETCRD(x) (((x) & PPCCRDMASK) >> PPCCRDSH)
#define PPCGETCRA(x) (((x) & PPCCRAMASK) >> PPCCRASH)
#define PPCGETL(x) (((x) & PPCLMASK) >> PPCLSH)
#define PPCGETIDX2(x) (((x) & PPCIDX2MASK) >> PPCIDX2SH)
#define PPCGETSTRM(x) (((x) & PPCSTRM) >> PPCDSH)
constexpr std::array<const char*, 32> trap_condition{
nullptr, "lgt", "llt", nullptr, "eq", "lge", "lle", nullptr,

View file

@ -73,9 +73,8 @@ void TruncateToCString(std::string* s);
bool TryParse(const std::string& str, bool* output);
template <typename T>
requires(std::is_integral_v<T> ||
(std::is_enum_v<T> && !detail::IsBooleanEnum<T>())) bool TryParse(const std::string& str,
T* output, int base = 0)
requires(std::is_integral_v<T> || (std::is_enum_v<T> && !detail::IsBooleanEnum<T>()))
bool TryParse(const std::string& str, T* output, int base = 0)
{
char* end_ptr = nullptr;
@ -113,7 +112,8 @@ requires(std::is_integral_v<T> ||
}
template <typename T>
requires(detail::IsBooleanEnum<T>()) bool TryParse(const std::string& str, T* output)
requires(detail::IsBooleanEnum<T>())
bool TryParse(const std::string& str, T* output)
{
bool value;
if (!TryParse(str, &value))

View file

@ -171,8 +171,8 @@ public:
void SetDevMenuUpdateCallback(std::function<void(void)> callback)
{
m_dev_menu_callback = callback;
};
bool CheckForModifications() { return rc_client_raintegration_has_modifications(m_client); };
}
bool CheckForModifications() { return rc_client_raintegration_has_modifications(m_client); }
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
void DoState(PointerWrap& p);
@ -339,13 +339,13 @@ public:
u16 revision)
{
return true;
};
}
constexpr bool CheckApprovedARCode(const ActionReplay::ARCode& code, const std::string& game_id,
u16 revision)
{
return true;
};
}
constexpr void LoadGame(const std::string&, const DiscIO::Volume*) {}

View file

@ -239,8 +239,8 @@ struct Elf32_Sym
};
#define ELF32_ST_BIND(i) ((i) >> 4)
#define ELF32_ST_TYPE(i) ((i)&0xf)
#define ELF32_ST_INFO(b, t) (((b) << 4) + ((t)&0xf))
#define ELF32_ST_TYPE(i) ((i) & 0xf)
#define ELF32_ST_INFO(b, t) (((b) << 4) + ((t) & 0xf))
// Relocation entries
struct Elf32_Rel

View file

@ -589,7 +589,7 @@ static void EmuThread(Core::System& system, std::unique_ptr<BootParameters> boot
system.GetPowerPC().SetMode(PowerPC::CoreMode::Interpreter);
// Determine the CPU thread function
void (*cpuThreadFunc)(Core::System & system, const std::optional<std::string>& savestate_path,
void (*cpuThreadFunc)(Core::System& system, const std::optional<std::string>& savestate_path,
bool delete_savestate);
if (std::holds_alternative<BootParameters::DFF>(boot->parameters))
cpuThreadFunc = FifoPlayerThread;

View file

@ -39,7 +39,7 @@ namespace DSP::Interpreter
// used without changes. When PRECISE_BACKLOG is not defined, ZeroWriteBackLog does nothing and
// ApplyWriteBackLog overwrites the register value with the value from the backlog (so writes from
// extended opcodes "win" over the main opcode).
//#define PRECISE_BACKLOG
// #define PRECISE_BACKLOG
Interpreter::Interpreter(DSPCore& dsp) : m_dsp_core{dsp}
{

View file

@ -105,7 +105,7 @@ static Gen::OpArg GetRegisterPointer(size_t reg)
#endif
#define STATIC_REG_ACCS
//#undef STATIC_REG_ACCS
// #undef STATIC_REG_ACCS
DSPJitRegCache::DSPJitRegCache(DSPEmitter& emitter) : m_emitter(emitter), m_is_temporary(false)
{

View file

@ -672,7 +672,10 @@ void ZeldaUCode::RenderAudio()
// Utility to define 32 bit accessors/modifiers methods based on two 16 bit
// fields named _l and _h.
#define DEFINE_32BIT_ACCESSOR(field_name, name) \
u32 Get##name() const { return (field_name##_h << 16) | field_name##_l; } \
u32 Get##name() const \
{ \
return (field_name##_h << 16) | field_name##_l; \
} \
void Set##name(u32 v) \
{ \
field_name##_h = v >> 16; \

View file

@ -15,7 +15,7 @@
#include "DiscIO/Enums.h"
// Uncomment this to write the system data of the memorycard from directory to disc
//#define _WRITE_MC_HEADER 1
// #define _WRITE_MC_HEADER 1
void MigrateFromMemcardFile(const std::string& directory_name, ExpansionInterface::Slot card_slot,
DiscIO::Region region);

View file

@ -23,7 +23,7 @@ protected:
bool ConnectInternal() override;
void DisconnectInternal() override;
bool IsConnected() const override;
void IOWakeup() override{};
void IOWakeup() override {}
int IORead(u8* buf) override;
int IOWrite(u8 const* buf, size_t len) override;

View file

@ -399,8 +399,8 @@ constexpr bdaddr_t BDADDR_ANY{};
* and OCF (OpCode Command Field) from OpCode.
*/
#define HCI_OPCODE(gf, cf) ((((gf)&0x3f) << 10) | ((cf)&0x3ff))
#define HCI_OCF(op) ((op)&0x3ff)
#define HCI_OPCODE(gf, cf) ((((gf) & 0x3f) << 10) | ((cf) & 0x3ff))
#define HCI_OCF(op) ((op) & 0x3ff)
#define HCI_OGF(op) (((op) >> 10) & 0x3f)
/*
@ -408,10 +408,10 @@ constexpr bdaddr_t BDADDR_ANY{};
* PB (Packet boundary) flags.
*/
#define HCI_CON_HANDLE(h) ((h)&0x0fff)
#define HCI_PB_FLAG(h) (((h)&0x3000) >> 12)
#define HCI_BC_FLAG(h) (((h)&0xc000) >> 14)
#define HCI_MK_CON_HANDLE(h, pb, bc) (((h)&0x0fff) | (((pb)&3) << 12) | (((bc)&3) << 14))
#define HCI_CON_HANDLE(h) ((h) & 0x0fff)
#define HCI_PB_FLAG(h) (((h) & 0x3000) >> 12)
#define HCI_BC_FLAG(h) (((h) & 0xc000) >> 14)
#define HCI_MK_CON_HANDLE(h, pb, bc) (((h) & 0x0fff) | (((pb) & 3) << 12) | (((bc) & 3) << 14))
/* PB flag values */
/* 00 - reserved for future use */

View file

@ -125,7 +125,7 @@
/* Transport Protocol */
/* 0x0019 - 0x1000 - reserved for future use */
#define L2CAP_PSM_INVALID(psm) (((psm)&0x0101) != 0x0001)
#define L2CAP_PSM_INVALID(psm) (((psm) & 0x0101) != 0x0001)
/* L2CAP Connection response command result codes */
#define L2CAP_SUCCESS 0x0000
@ -151,9 +151,9 @@
/* L2CAP Configuration options */
#define L2CAP_OPT_CFLAG_BIT 0x0001
#define L2CAP_OPT_CFLAG(flags) ((flags)&L2CAP_OPT_CFLAG_BIT)
#define L2CAP_OPT_CFLAG(flags) ((flags) & L2CAP_OPT_CFLAG_BIT)
#define L2CAP_OPT_HINT_BIT 0x80
#define L2CAP_OPT_HINT(type) ((type)&L2CAP_OPT_HINT_BIT)
#define L2CAP_OPT_HINT(type) ((type) & L2CAP_OPT_HINT_BIT)
#define L2CAP_OPT_HINT_MASK 0x7f
#define L2CAP_OPT_MTU 0x01
#define L2CAP_OPT_MTU_SIZE sizeof(uint16_t)

View file

@ -177,8 +177,8 @@ constexpr std::array<u8, 256> s_key_codes_azerty{};
} // Anonymous namespace
USB_KBD::MessageData::MessageData(MessageType type, u8 modifiers_, PressedKeyData pressed_keys_)
: msg_type{Common::swap32(static_cast<u32>(type))}, modifiers{modifiers_}, pressed_keys{
pressed_keys_}
: msg_type{Common::swap32(static_cast<u32>(type))}, modifiers{modifiers_},
pressed_keys{pressed_keys_}
{
}

View file

@ -230,8 +230,7 @@ Expression::Expression(std::string_view text, ExprPointer ex, ExprVarListPointer
: m_text(text), m_expr(std::move(ex)), m_vars(std::move(vars))
{
using LookupKV = std::pair<std::string_view, Expression::VarBinding>;
static constexpr auto sorted_lookup = []() consteval
{
static constexpr auto sorted_lookup = []() consteval {
using enum Expression::VarBindingType;
auto unsorted_lookup = std::to_array<LookupKV>({
{"r0", {GPR, 0}},
@ -385,8 +384,7 @@ Expression::Expression(std::string_view text, ExprPointer ex, ExprVarListPointer
});
std::ranges::sort(unsorted_lookup, {}, &LookupKV::first);
return unsorted_lookup;
}
();
}();
static_assert(std::ranges::adjacent_find(sorted_lookup, {}, &LookupKV::first) ==
sorted_lookup.end(),
"Expression: Sorted lookup should not contain duplicate keys.");

View file

@ -217,7 +217,7 @@ void Interpreter::SingleStep()
}
}
//#define SHOW_HISTORY
// #define SHOW_HISTORY
#ifdef SHOW_HISTORY
static std::vector<u32> s_pc_vec;
static std::vector<u32> s_pc_block_vec;

View file

@ -337,8 +337,7 @@ constexpr std::array<InterpreterOpTemplate, 10> s_table63_2{{
{31, Interpreter::fnmaddx}, // fnmaddx
}};
constexpr std::array<Interpreter::Instruction, 64> s_interpreter_op_table = []() consteval
{
constexpr std::array<Interpreter::Instruction, 64> s_interpreter_op_table = []() consteval {
std::array<Interpreter::Instruction, 64> table{};
table.fill(Interpreter::unknown_instruction);
for (auto& tpl : s_primary_table)
@ -347,10 +346,8 @@ constexpr std::array<Interpreter::Instruction, 64> s_interpreter_op_table = []()
table[tpl.opcode] = tpl.fn;
};
return table;
}
();
constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table4 = []() consteval
{
}();
constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table4 = []() consteval {
std::array<Interpreter::Instruction, 1024> table{};
table.fill(Interpreter::unknown_instruction);
@ -384,10 +381,8 @@ constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table4 = [
}
return table;
}
();
constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table19 = []() consteval
{
}();
constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table19 = []() consteval {
std::array<Interpreter::Instruction, 1024> table{};
table.fill(Interpreter::unknown_instruction);
for (auto& tpl : s_table19)
@ -396,10 +391,8 @@ constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table19 =
table[tpl.opcode] = tpl.fn;
};
return table;
}
();
constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table31 = []() consteval
{
}();
constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table31 = []() consteval {
std::array<Interpreter::Instruction, 1024> table{};
table.fill(Interpreter::unknown_instruction);
for (auto& tpl : s_table31)
@ -408,10 +401,8 @@ constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table31 =
table[tpl.opcode] = tpl.fn;
};
return table;
}
();
constexpr std::array<Interpreter::Instruction, 32> s_interpreter_op_table59 = []() consteval
{
}();
constexpr std::array<Interpreter::Instruction, 32> s_interpreter_op_table59 = []() consteval {
std::array<Interpreter::Instruction, 32> table{};
table.fill(Interpreter::unknown_instruction);
for (auto& tpl : s_table59)
@ -420,10 +411,8 @@ constexpr std::array<Interpreter::Instruction, 32> s_interpreter_op_table59 = []
table[tpl.opcode] = tpl.fn;
};
return table;
}
();
constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table63 = []() consteval
{
}();
constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table63 = []() consteval {
std::array<Interpreter::Instruction, 1024> table{};
table.fill(Interpreter::unknown_instruction);
for (auto& tpl : s_table63)
@ -444,8 +433,7 @@ constexpr std::array<Interpreter::Instruction, 1024> s_interpreter_op_table63 =
}
return table;
}
();
}();
Interpreter::Instruction Interpreter::GetInterpreterOp(UGeckoInstruction inst)
{

View file

@ -335,8 +335,7 @@ constexpr std::array<Jit64OpTemplate, 10> s_table63_2{{
{31, &Jit64::fmaddXX}, // fnmaddx
}};
constexpr std::array<Jit64::Instruction, 64> s_dyna_op_table = []() consteval
{
constexpr std::array<Jit64::Instruction, 64> s_dyna_op_table = []() consteval {
std::array<Jit64::Instruction, 64> table{};
table.fill(&Jit64::FallBackToInterpreter);
@ -347,11 +346,9 @@ constexpr std::array<Jit64::Instruction, 64> s_dyna_op_table = []() consteval
}
return table;
}
();
}();
constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table4 = []() consteval
{
constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table4 = []() consteval {
std::array<Jit64::Instruction, 1024> table{};
table.fill(&Jit64::FallBackToInterpreter);
@ -385,11 +382,9 @@ constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table4 = []() consteval
}
return table;
}
();
}();
constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table19 = []() consteval
{
constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table19 = []() consteval {
std::array<Jit64::Instruction, 1024> table{};
table.fill(&Jit64::FallBackToInterpreter);
@ -400,11 +395,9 @@ constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table19 = []() consteva
}
return table;
}
();
}();
constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table31 = []() consteval
{
constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table31 = []() consteval {
std::array<Jit64::Instruction, 1024> table{};
table.fill(&Jit64::FallBackToInterpreter);
@ -415,11 +408,9 @@ constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table31 = []() consteva
}
return table;
}
();
}();
constexpr std::array<Jit64::Instruction, 32> s_dyna_op_table59 = []() consteval
{
constexpr std::array<Jit64::Instruction, 32> s_dyna_op_table59 = []() consteval {
std::array<Jit64::Instruction, 32> table{};
table.fill(&Jit64::FallBackToInterpreter);
@ -430,11 +421,9 @@ constexpr std::array<Jit64::Instruction, 32> s_dyna_op_table59 = []() consteval
}
return table;
}
();
}();
constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table63 = []() consteval
{
constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table63 = []() consteval {
std::array<Jit64::Instruction, 1024> table{};
table.fill(&Jit64::FallBackToInterpreter);
@ -456,8 +445,7 @@ constexpr std::array<Jit64::Instruction, 1024> s_dyna_op_table63 = []() consteva
}
return table;
}
();
}();
} // Anonymous namespace

View file

@ -335,8 +335,7 @@ constexpr std::array<JitArm64OpTemplate, 10> s_table63_2{{
{31, &JitArm64::fp_arith}, // fnmaddx
}};
constexpr std::array<JitArm64::Instruction, 64> s_dyna_op_table = []() consteval
{
constexpr std::array<JitArm64::Instruction, 64> s_dyna_op_table = []() consteval {
std::array<JitArm64::Instruction, 64> table{};
table.fill(&JitArm64::FallBackToInterpreter);
@ -347,11 +346,9 @@ constexpr std::array<JitArm64::Instruction, 64> s_dyna_op_table = []() consteval
}
return table;
}
();
}();
constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table4 = []() consteval
{
constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table4 = []() consteval {
std::array<JitArm64::Instruction, 1024> table{};
table.fill(&JitArm64::FallBackToInterpreter);
@ -385,11 +382,9 @@ constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table4 = []() conste
}
return table;
}
();
}();
constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table19 = []() consteval
{
constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table19 = []() consteval {
std::array<JitArm64::Instruction, 1024> table{};
table.fill(&JitArm64::FallBackToInterpreter);
@ -400,11 +395,9 @@ constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table19 = []() const
}
return table;
}
();
}();
constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table31 = []() consteval
{
constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table31 = []() consteval {
std::array<JitArm64::Instruction, 1024> table{};
table.fill(&JitArm64::FallBackToInterpreter);
@ -415,11 +408,9 @@ constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table31 = []() const
}
return table;
}
();
}();
constexpr std::array<JitArm64::Instruction, 32> s_dyna_op_table59 = []() consteval
{
constexpr std::array<JitArm64::Instruction, 32> s_dyna_op_table59 = []() consteval {
std::array<JitArm64::Instruction, 32> table{};
table.fill(&JitArm64::FallBackToInterpreter);
@ -430,11 +421,9 @@ constexpr std::array<JitArm64::Instruction, 32> s_dyna_op_table59 = []() constev
}
return table;
}
();
}();
constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table63 = []() consteval
{
constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table63 = []() consteval {
std::array<JitArm64::Instruction, 1024> table{};
table.fill(&JitArm64::FallBackToInterpreter);
@ -456,8 +445,7 @@ constexpr std::array<JitArm64::Instruction, 1024> s_dyna_op_table63 = []() const
}
return table;
}
();
}();
} // Anonymous namespace

View file

@ -36,9 +36,9 @@ struct PowerPCState;
} // namespace PowerPC
class PPCSymbolDB;
//#define JIT_LOG_GENERATED_CODE // Enables logging of generated code
//#define JIT_LOG_GPR // Enables logging of the PPC general purpose regs
//#define JIT_LOG_FPR // Enables logging of the PPC floating point regs
// #define JIT_LOG_GENERATED_CODE // Enables logging of generated code
// #define JIT_LOG_GPR // Enables logging of the PPC general purpose regs
// #define JIT_LOG_FPR // Enables logging of the PPC floating point regs
// Use these to control the instruction selection
// #define INSTRUCTION_START FallBackToInterpreter(inst); return;

View file

@ -507,13 +507,11 @@ struct Tables
static std::array<GekkoOPStats, TOTAL_INSTRUCTION_COUNT> s_all_instructions_stats;
constexpr Tables s_tables = []() consteval
{
constexpr Tables s_tables = []() consteval {
Tables tables{};
u32 counter = 0;
auto make_info = [&](const GekkoOPTemplate& inst) consteval->u32
{
auto make_info = [&](const GekkoOPTemplate& inst) consteval -> u32 {
ASSERT(counter < TOTAL_INSTRUCTION_COUNT);
GekkoOPInfo* info = &tables.all_instructions[counter];
info->opname = inst.opname;
@ -609,8 +607,7 @@ constexpr Tables s_tables = []() consteval
ASSERT(counter == TOTAL_INSTRUCTION_COUNT);
return tables;
}
();
}();
const GekkoOPInfo* GetOpInfo(UGeckoInstruction inst, u32 pc)
{

View file

@ -1166,7 +1166,7 @@ void DirectoryBlobPartition::WriteEntryData(std::vector<u8>* fst_data, u32* entr
(*fst_data)[(*entry_offset)++] = (name_offset >> 16) & 0xff;
(*fst_data)[(*entry_offset)++] = (name_offset >> 8) & 0xff;
(*fst_data)[(*entry_offset)++] = (name_offset)&0xff;
(*fst_data)[(*entry_offset)++] = (name_offset) & 0xff;
Write32((u32)(data_offset >> address_shift), *entry_offset, fst_data);
*entry_offset += 4;

View file

@ -209,23 +209,22 @@ int main(int argc, char* argv[])
parser->add_option("-p", "--platform")
.action("store")
.help("Window platform to use [%choices]")
.choices({
"headless"
.choices({"headless"
#ifdef __linux__
,
"fbdev"
,
"fbdev"
#endif
#if HAVE_X11
,
"x11"
,
"x11"
#endif
#ifdef _WIN32
,
"win32"
,
"win32"
#endif
#ifdef __APPLE__
,
"macos"
,
"macos"
#endif
});

View file

@ -190,4 +190,4 @@ void ConfigComplexChoice::mousePressEvent(QMouseEvent* event)
{
QComboBox::mousePressEvent(event);
}
};
}

View file

@ -90,7 +90,7 @@ protected:
return Config::Get(setting);
}
virtual void OnConfigChanged(){};
virtual void OnConfigChanged() {}
private:
bool IsConfigLocal() const

View file

@ -80,19 +80,19 @@ public:
[[noreturn]] void setSourceModel(QAbstractItemModel* source_model) override { Crash(); }
bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override;
template <bool BranchWatchProxyModel::*member>
template <bool BranchWatchProxyModel::* member>
void OnToggled(bool enabled)
{
this->*member = enabled;
invalidateRowsFilter();
}
template <QString BranchWatchProxyModel::*member>
template <QString BranchWatchProxyModel::* member>
void OnSymbolTextChanged(const QString& text)
{
this->*member = text;
invalidateRowsFilter();
}
template <std::optional<u32> BranchWatchProxyModel::*member>
template <std::optional<u32> BranchWatchProxyModel::* member>
void OnAddressTextChanged(const QString& text)
{
bool ok = false;

View file

@ -62,7 +62,7 @@ public:
// Always connected slots (external signals)
void OnSymbolTextChanged(const QString& text);
template <std::optional<u32> JitBlockProxyModel::*member>
template <std::optional<u32> JitBlockProxyModel::* member>
void OnAddressTextChanged(const QString& text);
private:
@ -81,7 +81,7 @@ void JitBlockProxyModel::OnSymbolTextChanged(const QString& text)
invalidateRowsFilter();
}
template <std::optional<u32> JitBlockProxyModel::*member>
template <std::optional<u32> JitBlockProxyModel::* member>
void JitBlockProxyModel::OnAddressTextChanged(const QString& text)
{
bool ok = false;

View file

@ -51,9 +51,8 @@ GameTracker::GameTracker(QObject* parent) : QFileSystemWatcher(parent)
}
});
connect(&Settings::Instance(), &Settings::MetadataRefreshRequested, this, [this] {
m_load_thread.EmplaceItem(Command{CommandType::UpdateMetadata, {}});
});
connect(&Settings::Instance(), &Settings::MetadataRefreshRequested, this,
[this] { m_load_thread.EmplaceItem(Command{CommandType::UpdateMetadata, {}}); });
m_load_thread.Reset("GameList Tracker", [this](Command command) {
switch (command.type)

View file

@ -70,7 +70,7 @@ auto RunOnObject(QObject* object, F&& functor)
}
template <typename Base, typename Type, typename Receiver>
auto RunOnObject(Receiver* obj, Type Base::*func)
auto RunOnObject(Receiver* obj, Type Base::* func)
{
return RunOnObject(obj, [obj, func] { return (obj->*func)(); });
}

View file

@ -62,7 +62,7 @@ static constexpr std::array wgi_button_names = {
template <typename T, typename M>
struct MemberName
{
M T::*ptr;
M T::* ptr;
const char* name;
};

View file

@ -57,7 +57,7 @@ public:
explicit StateTracker();
~StateTracker();
Framebuffer* GetCurrentFramebuffer() { return m_current_framebuffer; };
Framebuffer* GetCurrentFramebuffer() { return m_current_framebuffer; }
void SetCurrentFramebuffer(Framebuffer* framebuffer);
void BeginClearRenderPass(MTLClearColor color, float depth);
void BeginRenderPass(MTLLoadAction load_action);

View file

@ -906,7 +906,10 @@ static void EncodeRGB8(u8* dst, const u8* src, EFBCopyFormat format, bool yuv)
case EFBCopyFormat::A8:
SetBlockDimensions(3, 2, &sBlkCount, &tBlkCount, &sBlkSize, &tBlkSize);
SetSpans(sBlkSize, tBlkSize, &tSpan, &sBlkSpan, &tBlkSpan, &writeStride);
ENCODE_LOOP_BLOCKS { *dst++ = 0xff; }
ENCODE_LOOP_BLOCKS
{
*dst++ = 0xff;
}
ENCODE_LOOP_SPANS
break;
@ -1135,7 +1138,10 @@ static void EncodeRGB8halfscale(u8* dst, const u8* src, EFBCopyFormat format, bo
case EFBCopyFormat::A8:
SetBlockDimensions(3, 2, &sBlkCount, &tBlkCount, &sBlkSize, &tBlkSize);
SetSpans(sBlkSize, tBlkSize, &tSpan, &sBlkSpan, &tBlkSpan, &writeStride);
ENCODE_LOOP_BLOCKS { *dst++ = 0xff; }
ENCODE_LOOP_BLOCKS
{
*dst++ = 0xff;
}
ENCODE_LOOP_SPANS
break;

View file

@ -319,7 +319,7 @@ static inline u32 DecodePixel_RGB565(u16 val)
int r, g, b, a;
r = Convert5To8((val >> 11) & 0x1f);
g = Convert6To8((val >> 5) & 0x3f);
b = Convert5To8((val)&0x1f);
b = Convert5To8((val) & 0x1f);
a = 0xFF;
return r | (g << 8) | (b << 16) | (a << 24);
}
@ -331,7 +331,7 @@ static inline u32 DecodePixel_RGB5A3(u16 val)
{
r = Convert5To8((val >> 10) & 0x1f);
g = Convert5To8((val >> 5) & 0x1f);
b = Convert5To8((val)&0x1f);
b = Convert5To8((val) & 0x1f);
a = 0xFF;
}
else
@ -339,7 +339,7 @@ static inline u32 DecodePixel_RGB5A3(u16 val)
a = Convert3To8((val >> 12) & 0x7);
r = Convert4To8((val >> 8) & 0xf);
g = Convert4To8((val >> 4) & 0xf);
b = Convert4To8((val)&0xf);
b = Convert4To8((val) & 0xf);
}
return r | (g << 8) | (b << 16) | (a << 24);
}

View file

@ -31,7 +31,7 @@ static inline u32 DecodePixel_RGB565(u16 val)
int r, g, b, a;
r = Convert5To8((val >> 11) & 0x1f);
g = Convert6To8((val >> 5) & 0x3f);
b = Convert5To8((val)&0x1f);
b = Convert5To8((val) & 0x1f);
a = 0xFF;
return r | (g << 8) | (b << 16) | (a << 24);
}
@ -43,7 +43,7 @@ static inline u32 DecodePixel_RGB5A3(u16 val)
{
r = Convert5To8((val >> 10) & 0x1f);
g = Convert5To8((val >> 5) & 0x1f);
b = Convert5To8((val)&0x1f);
b = Convert5To8((val) & 0x1f);
a = 0xFF;
}
else
@ -51,7 +51,7 @@ static inline u32 DecodePixel_RGB5A3(u16 val)
a = Convert3To8((val >> 12) & 0x7);
r = Convert4To8((val >> 8) & 0xf);
g = Convert4To8((val >> 4) & 0xf);
b = Convert4To8((val)&0xf);
b = Convert4To8((val) & 0xf);
}
return r | (g << 8) | (b << 16) | (a << 24);
}

View file

@ -37,7 +37,7 @@ static inline u32 DecodePixel_RGB565(u16 val)
int r, g, b, a;
r = Convert5To8((val >> 11) & 0x1f);
g = Convert6To8((val >> 5) & 0x3f);
b = Convert5To8((val)&0x1f);
b = Convert5To8((val) & 0x1f);
a = 0xFF;
return r | (g << 8) | (b << 16) | (a << 24);
}
@ -49,7 +49,7 @@ static inline u32 DecodePixel_RGB5A3(u16 val)
{
r = Convert5To8((val >> 10) & 0x1f);
g = Convert5To8((val >> 5) & 0x1f);
b = Convert5To8((val)&0x1f);
b = Convert5To8((val) & 0x1f);
a = 0xFF;
}
else
@ -57,7 +57,7 @@ static inline u32 DecodePixel_RGB5A3(u16 val)
a = Convert3To8((val >> 12) & 0x7);
r = Convert4To8((val >> 8) & 0xf);
g = Convert4To8((val >> 4) & 0xf);
b = Convert4To8((val)&0xf);
b = Convert4To8((val) & 0xf);
}
return r | (g << 8) | (b << 16) | (a << 24);
}

View file

@ -73,9 +73,9 @@ public:
protected:
VertexLoaderBase(const TVtxDesc& vtx_desc, const VAT& vtx_attr)
: m_vertex_size{GetVertexSize(vtx_desc, vtx_attr)}, m_native_components{GetVertexComponents(
vtx_desc, vtx_attr)},
m_VtxAttr{vtx_attr}, m_VtxDesc{vtx_desc}
: m_vertex_size{GetVertexSize(vtx_desc, vtx_attr)},
m_native_components{GetVertexComponents(vtx_desc, vtx_attr)}, m_VtxAttr{vtx_attr},
m_VtxDesc{vtx_desc}
{
}

View file

@ -34,8 +34,7 @@ private:
using SizeTable = EnumMap<EnumMap<u32, ColorFormat::RGBA8888>, VertexComponentFormat::Index16>;
static constexpr SizeTable s_table_size = []() consteval
{
static constexpr SizeTable s_table_size = []() consteval {
SizeTable table{};
using VCF = VertexComponentFormat;
@ -45,6 +44,5 @@ private:
table[VCF::Index16] = {2u, 2u, 2u, 2u, 2u, 2u};
return table;
}
();
}();
};

View file

@ -31,8 +31,7 @@ private:
2>,
VertexComponentFormat::Index16>;
static constexpr SizeTable s_table_size = []() consteval
{
static constexpr SizeTable s_table_size = []() consteval {
SizeTable table{};
using VCF = VertexComponentFormat;
@ -145,6 +144,5 @@ private:
table[VCF::Index16][true][NCC::NTB][FMT::InvalidFloat7] = 6;
return table;
}
();
}();
};

View file

@ -30,8 +30,7 @@ private:
EnumMap<EnumMap<EnumMap<u32, CoordComponentCount::XYZ>, ComponentFormat::InvalidFloat7>,
VertexComponentFormat::Index16>;
static constexpr SizeTable s_table_size = []() consteval
{
static constexpr SizeTable s_table_size = []() consteval {
SizeTable table{};
using VCF = VertexComponentFormat;
@ -65,6 +64,5 @@ private:
table[VCF::Index16][FMT::InvalidFloat7] = {2, 2};
return table;
}
();
}();
};

View file

@ -33,8 +33,7 @@ private:
EnumMap<EnumMap<EnumMap<u32, TexComponentCount::ST>, ComponentFormat::InvalidFloat7>,
VertexComponentFormat::Index16>;
static constexpr SizeTable s_table_size = []() consteval
{
static constexpr SizeTable s_table_size = []() consteval {
SizeTable table{};
using VCF = VertexComponentFormat;
@ -68,6 +67,5 @@ private:
table[VCF::Index16][FMT::InvalidFloat7] = {2, 2};
return table;
}
();
}();
};

View file

@ -18,8 +18,8 @@ if ! [ -x "$(command -v $GIT)" ]; then
exit 1
fi
REQUIRED_CLANG_FORMAT_MAJOR=13
REQUIRED_CLANG_FORMAT_MINOR=0
REQUIRED_CLANG_FORMAT_MAJOR=19
REQUIRED_CLANG_FORMAT_MINOR=1
CLANG_FORMAT=clang-format
CLANG_FORMAT_MAJOR=clang-format-${REQUIRED_CLANG_FORMAT_MAJOR}
CLANG_FORMAT_MAJOR_MINOR=${CLANG_FORMAT_MAJOR}.${REQUIRED_CLANG_FORMAT_MINOR}