mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
In the SCons build, skip the generation of static libraries
and just operate on lists of object files instead. This helps with LTO since LLVM/clang LTO is completely broken by static libraries. It also helps identify symbol clashes between components like the former plugins. Many linkers also expect static libraries to form a strict DAG which turns out be a difficult rule to uphold in practice, especially since some of our platforms aren't picky about this. LTO builds currently appears to crash at runtime because of the static wx libs. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7056 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -20,61 +20,61 @@
|
||||
#include "HW/Memmap.h"
|
||||
|
||||
// CP state
|
||||
u8 *cached_arraybases[16];
|
||||
static u8 *_cached_arraybases[16];
|
||||
|
||||
// STATE_TO_SAVE
|
||||
u32 arraybases[16];
|
||||
u32 arraystrides[16];
|
||||
TMatrixIndexA MatrixIndexA;
|
||||
TMatrixIndexB MatrixIndexB;
|
||||
TVtxDesc g_VtxDesc;
|
||||
VAT g_VtxAttr[8];
|
||||
static u32 _arraybases[16];
|
||||
static u32 _arraystrides[16];
|
||||
static TMatrixIndexA _MatrixIndexA;
|
||||
static TMatrixIndexB _MatrixIndexB;
|
||||
static TVtxDesc _g_VtxDesc;
|
||||
static VAT _g_VtxAttr[8];
|
||||
|
||||
void SWLoadCPReg(u32 sub_cmd, u32 value)
|
||||
{
|
||||
switch (sub_cmd & 0xF0)
|
||||
{
|
||||
case 0x30:
|
||||
MatrixIndexA.Hex = value;
|
||||
_MatrixIndexA.Hex = value;
|
||||
break;
|
||||
|
||||
case 0x40:
|
||||
MatrixIndexB.Hex = value;
|
||||
_MatrixIndexB.Hex = value;
|
||||
break;
|
||||
|
||||
case 0x50:
|
||||
g_VtxDesc.Hex &= ~0x1FFFF; // keep the Upper bits
|
||||
g_VtxDesc.Hex |= value;
|
||||
_g_VtxDesc.Hex &= ~0x1FFFF; // keep the Upper bits
|
||||
_g_VtxDesc.Hex |= value;
|
||||
break;
|
||||
|
||||
case 0x60:
|
||||
g_VtxDesc.Hex &= 0x1FFFF; // keep the lower 17Bits
|
||||
g_VtxDesc.Hex |= (u64)value << 17;
|
||||
_g_VtxDesc.Hex &= 0x1FFFF; // keep the lower 17Bits
|
||||
_g_VtxDesc.Hex |= (u64)value << 17;
|
||||
break;
|
||||
|
||||
case 0x70:
|
||||
_assert_((sub_cmd & 0x0F) < 8);
|
||||
g_VtxAttr[sub_cmd & 7].g0.Hex = value;
|
||||
_g_VtxAttr[sub_cmd & 7].g0.Hex = value;
|
||||
break;
|
||||
|
||||
case 0x80:
|
||||
_assert_((sub_cmd & 0x0F) < 8);
|
||||
g_VtxAttr[sub_cmd & 7].g1.Hex = value;
|
||||
_g_VtxAttr[sub_cmd & 7].g1.Hex = value;
|
||||
break;
|
||||
|
||||
case 0x90:
|
||||
_assert_((sub_cmd & 0x0F) < 8);
|
||||
g_VtxAttr[sub_cmd & 7].g2.Hex = value;
|
||||
_g_VtxAttr[sub_cmd & 7].g2.Hex = value;
|
||||
break;
|
||||
|
||||
// Pointers to vertex arrays in GC RAM
|
||||
case 0xA0:
|
||||
arraybases[sub_cmd & 0xF] = value;
|
||||
cached_arraybases[sub_cmd & 0xF] = Memory::GetPointer(value);
|
||||
_arraybases[sub_cmd & 0xF] = value;
|
||||
_cached_arraybases[sub_cmd & 0xF] = Memory::GetPointer(value);
|
||||
break;
|
||||
|
||||
case 0xB0:
|
||||
arraystrides[sub_cmd & 0xF] = value & 0xFF;
|
||||
_arraystrides[sub_cmd & 0xF] = value & 0xFF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user