Misc: Align CPU state and SPU voices to cache lines
Fixes the ~12% performance regression from the texture replacement namespace'ify commit. Apparently LTO was placing the CPU struct in the middle of a cache line...
This commit is contained in:
parent
d021a61eb5
commit
77488db3dc
|
@ -199,6 +199,7 @@ static constexpr u32 HOST_CACHE_LINE_SIZE = 128; // Apple Silicon uses 128b cach
|
|||
#else
|
||||
static constexpr u32 HOST_CACHE_LINE_SIZE = 64; // Everything else is 64b.
|
||||
#endif
|
||||
#define ALIGN_TO_CACHE_LINE alignas(HOST_CACHE_LINE_SIZE)
|
||||
|
||||
// Enum class bitwise operators
|
||||
#define IMPLEMENT_ENUM_CLASS_BITWISE_OPERATORS(type_) \
|
||||
|
|
|
@ -89,7 +89,7 @@ static bool WriteMemoryByte(VirtualMemoryAddress addr, u32 value);
|
|||
static bool WriteMemoryHalfWord(VirtualMemoryAddress addr, u32 value);
|
||||
static bool WriteMemoryWord(VirtualMemoryAddress addr, u32 value);
|
||||
|
||||
State g_state;
|
||||
alignas(HOST_CACHE_LINE_SIZE) State g_state;
|
||||
bool TRACE_EXECUTION = false;
|
||||
|
||||
static fastjmp_buf s_jmp_buf;
|
||||
|
|
|
@ -121,7 +121,7 @@ struct State
|
|||
static constexpr u32 GTERegisterOffset(u32 index) { return OFFSETOF(State, gte_regs.r32) + (sizeof(u32) * index); }
|
||||
};
|
||||
|
||||
extern State g_state;
|
||||
ALIGN_TO_CACHE_LINE extern State g_state;
|
||||
|
||||
void Initialize();
|
||||
void Shutdown();
|
||||
|
|
|
@ -401,7 +401,7 @@ static std::array<std::array<s16, 128>, 2> s_reverb_downsample_buffer;
|
|||
static std::array<std::array<s16, 64>, 2> s_reverb_upsample_buffer;
|
||||
static s32 s_reverb_resample_buffer_position = 0;
|
||||
|
||||
static std::array<Voice, NUM_VOICES> s_voices{};
|
||||
ALIGN_TO_CACHE_LINE static std::array<Voice, NUM_VOICES> s_voices{};
|
||||
|
||||
static InlineFIFOQueue<u16, FIFO_SIZE_IN_HALFWORDS> s_transfer_fifo;
|
||||
|
||||
|
|
Loading…
Reference in New Issue