mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
static-ified a lot of vars to prevent name collisions with plugins, other cosmetic stuff, prep for jit debug
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@147 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
ac366022f4
commit
b370386983
@ -5,13 +5,9 @@
|
||||
#include "../HW/Memmap.h"
|
||||
#include "ElfReader.h"
|
||||
|
||||
//#include "../PSP/HLE/sceKernelMemory.h"
|
||||
|
||||
|
||||
void bswap(Elf32_Word &w) {w = Common::swap32(w);}
|
||||
void bswap(Elf32_Half &w) {w = Common::swap16(w);}
|
||||
|
||||
|
||||
void byteswapHeader(Elf32_Ehdr &ELF_H)
|
||||
{
|
||||
bswap(ELF_H.e_type);
|
||||
|
@ -29,11 +29,12 @@
|
||||
#include "PowerPC/Jit64/JitCache.h"
|
||||
#include "PowerPCDisasm.h"
|
||||
|
||||
#define CASE(x) else if (memcmp(cmd, x,4*sizeof(TCHAR))==0)
|
||||
#define CASE1(x) if (memcmp(cmd, x,2*sizeof(TCHAR))==0)
|
||||
#define CASE(x) else if (memcmp(cmd, x, 4*sizeof(TCHAR))==0)
|
||||
#define CASE1(x) if (memcmp(cmd, x, 2*sizeof(TCHAR))==0)
|
||||
|
||||
Common::Thread *cons_thread;
|
||||
/*
|
||||
static Common::Thread *cons_thread;
|
||||
|
||||
THREAD_RETURN ConsoleThreadFunc(void *) {
|
||||
printf("Welcome to the console thread!\n\n");
|
||||
while (true) {
|
||||
|
@ -27,7 +27,7 @@
|
||||
namespace Debugger
|
||||
{
|
||||
|
||||
XVectorSymbol m_VectorSymbols;
|
||||
static XVectorSymbol m_VectorSymbols;
|
||||
|
||||
CSymbol::CSymbol(u32 _Address, u32 _Size, ESymbolType _Type, const char *_rName) :
|
||||
vaddress(_Address),
|
||||
|
@ -45,7 +45,7 @@ struct SPatch
|
||||
int returnType;
|
||||
};
|
||||
|
||||
SPatch OSPatches[] =
|
||||
static const SPatch OSPatches[] =
|
||||
{
|
||||
{ "FAKE_TO_SKIP_0", HLE_Misc::UnimplementedFunction },
|
||||
|
||||
@ -69,7 +69,7 @@ SPatch OSPatches[] =
|
||||
// { "GXPeekARGB", HLE_Misc::GXPeekARGB},
|
||||
};
|
||||
|
||||
SPatch OSBreakPoints[] =
|
||||
static const SPatch OSBreakPoints[] =
|
||||
{
|
||||
{ "FAKE_TO_SKIP_0", HLE_Misc::UnimplementedFunction },
|
||||
};
|
||||
|
@ -28,9 +28,9 @@
|
||||
|
||||
using namespace PowerPC;
|
||||
namespace {
|
||||
bool g_Branch;
|
||||
Common::Event m_StepEvent;
|
||||
Common::Event *m_SyncEvent;
|
||||
static bool g_Branch;
|
||||
static Common::Event m_StepEvent;
|
||||
static Common::Event *m_SyncEvent;
|
||||
}
|
||||
|
||||
void CCPU::Init()
|
||||
|
@ -264,9 +264,9 @@ namespace Jit64
|
||||
// windoze goes to 8010feb0
|
||||
// after they they are completely out of sync.
|
||||
// branches from the cmp result of r0, which comes from an lbz (loaded from stack)
|
||||
bool ImHereDebug = false;
|
||||
bool ImHereLog = false;
|
||||
std::map<u32, int> been_here;
|
||||
static const bool ImHereDebug = false;
|
||||
static const bool ImHereLog = false;
|
||||
static std::map<u32, int> been_here;
|
||||
void ImHere()
|
||||
{
|
||||
static FILE *f = 0;
|
||||
|
@ -45,17 +45,17 @@ const u8 *dispatcherNoCheck;
|
||||
const u8 *dispatcherPcInEAX;
|
||||
const u8 *computeRc;
|
||||
|
||||
bool blockMode = false; //doesn't work as true!
|
||||
static bool blockMode = false; //doesn't work as true!
|
||||
bool compareEnabled = false;
|
||||
|
||||
//TODO - make an option
|
||||
//#if _DEBUG
|
||||
bool enableDebug = false;
|
||||
static bool enableDebug = false;
|
||||
//#else
|
||||
// bool enableDebug = false;
|
||||
//#endif
|
||||
|
||||
bool enableStatistics = false;
|
||||
static bool enableStatistics = false;
|
||||
|
||||
//GLOBAL STATIC ALLOCATIONS x86
|
||||
//EAX - ubiquitous scratch register - EVERYBODY scratches this
|
||||
|
@ -39,9 +39,9 @@ using namespace Gen;
|
||||
|
||||
namespace Jit64
|
||||
{
|
||||
u8 *codeCache;
|
||||
u8 *genFunctions;
|
||||
u8 *trampolineCache;
|
||||
static u8 *codeCache;
|
||||
static u8 *genFunctions;
|
||||
static u8 *trampolineCache;
|
||||
u8 *trampolineCodePtr;
|
||||
#define INVALID_EXIT 0xFFFFFFFF
|
||||
void LinkBlockExits(int i);
|
||||
@ -55,15 +55,14 @@ namespace Jit64
|
||||
MAX_NUM_BLOCKS = 65536,
|
||||
};
|
||||
|
||||
u8 **blockCodePointers; // cut these in half and force below 2GB?
|
||||
static u8 **blockCodePointers; // cut these in half and force below 2GB?
|
||||
|
||||
std::multimap<u32, int> links_to;
|
||||
|
||||
JitBlock *blocks;
|
||||
int numBlocks;
|
||||
static std::multimap<u32, int> links_to;
|
||||
|
||||
static JitBlock *blocks;
|
||||
static int numBlocks;
|
||||
//stats
|
||||
int numFlushes;
|
||||
static int numFlushes;
|
||||
|
||||
void PrintStats()
|
||||
{
|
||||
|
@ -27,10 +27,8 @@
|
||||
#include "../../HW/SerialInterface.h"
|
||||
#include "../../Core.h"
|
||||
|
||||
|
||||
namespace Jit64
|
||||
{
|
||||
|
||||
void Jit64Core::Init()
|
||||
{
|
||||
InitCache();
|
||||
|
@ -14,6 +14,8 @@
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
#include "Common.h"
|
||||
|
||||
#include "../PowerPC.h"
|
||||
#include "../PPCTables.h"
|
||||
#include "x64Emitter.h"
|
||||
@ -23,6 +25,9 @@
|
||||
#include "JitCache.h"
|
||||
#include "JitAsm.h"
|
||||
|
||||
// The branches are known good, or at least reasonably good.
|
||||
// No need for a disable-mechanism.
|
||||
|
||||
using namespace Gen;
|
||||
namespace Jit64
|
||||
{
|
||||
|
@ -24,6 +24,9 @@
|
||||
#include "JitCache.h"
|
||||
#include "JitRegCache.h"
|
||||
|
||||
// #define INSTRUCTION_START Default(inst); return;
|
||||
#define INSTRUCTION_START
|
||||
|
||||
namespace Jit64
|
||||
{
|
||||
const u64 GC_ALIGNED16(psSignBits2[2]) = {0x8000000000000000ULL, 0x8000000000000000ULL};
|
||||
@ -46,7 +49,7 @@ namespace Jit64
|
||||
}
|
||||
else if (a != d && b != d)
|
||||
{
|
||||
//sources different from d, can use rather quick solution
|
||||
// Sources different from d, can use rather quick solution
|
||||
fpr.LoadToX64(d, !dupe);
|
||||
MOVSD(fpr.RX(d), fpr.R(a));
|
||||
fpr.GetReadyForOp(d, b);
|
||||
@ -59,7 +62,7 @@ namespace Jit64
|
||||
MOVSD(fpr.RX(d), fpr.R(a));
|
||||
op(fpr.RX(d), Gen::R(XMM0));
|
||||
}
|
||||
else //Other combo, must use two temps :(
|
||||
else // Other combo, must use two temps :(
|
||||
{
|
||||
MOVSD(XMM0, fpr.R(a));
|
||||
MOVSD(XMM1, fpr.R(b));
|
||||
@ -76,6 +79,7 @@ namespace Jit64
|
||||
|
||||
void fp_arith_s(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
bool dupe = inst.OPCD == 59;
|
||||
switch (inst.SUBOP5)
|
||||
{
|
||||
@ -94,11 +98,9 @@ namespace Jit64
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void fmaddXX(UGeckoInstruction inst)
|
||||
{
|
||||
LOG(DYNA_REC, "Got one %08x", js.compilerPC);
|
||||
INSTRUCTION_START;
|
||||
int a = inst.FA;
|
||||
int b = inst.FB;
|
||||
int c = inst.FC;
|
||||
@ -128,14 +130,15 @@ namespace Jit64
|
||||
break;
|
||||
}
|
||||
fpr.LoadToX64(d, false);
|
||||
//YES it is necessary to dupe :(
|
||||
//TODO : analysis - does the top reg get used?
|
||||
MOVDDUP(fpr.RX(d), Gen::R(XMM0)); //can also be done with SHUF
|
||||
//YES it is necessary to dupe the result :(
|
||||
//TODO : analysis - does the top reg get used? If so, dupe, if not, don't.
|
||||
MOVDDUP(fpr.RX(d), Gen::R(XMM0));
|
||||
fpr.UnlockAll();
|
||||
}
|
||||
|
||||
void fcmpx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
if (jo.fpAccurateFlags)
|
||||
{
|
||||
Default(inst);
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "../PowerPC.h"
|
||||
#include "../PPCTables.h"
|
||||
#include "x64Emitter.h"
|
||||
@ -23,16 +24,16 @@
|
||||
#include "JitRegCache.h"
|
||||
#include "JitAsm.h"
|
||||
|
||||
#define OLD
|
||||
//#define OLD Default(inst); return;
|
||||
// #define INSTRUCTION_START Default(inst); return;
|
||||
#define INSTRUCTION_START
|
||||
|
||||
namespace Jit64
|
||||
{
|
||||
typedef u32 (*Operation)(u32 a, u32 b);
|
||||
u32 Add(u32 a, u32 b) {return a+b;}
|
||||
u32 Or (u32 a, u32 b) {return a|b;}
|
||||
u32 And(u32 a, u32 b) {return a&b;}
|
||||
u32 Xor(u32 a, u32 b) {return a^b;}
|
||||
u32 Add(u32 a, u32 b) {return a + b;}
|
||||
u32 Or (u32 a, u32 b) {return a | b;}
|
||||
u32 And(u32 a, u32 b) {return a & b;}
|
||||
u32 Xor(u32 a, u32 b) {return a ^ b;}
|
||||
|
||||
void regimmop(int d, int a, bool binary, u32 value, Operation doop, void(*op)(int, const OpArg&, const OpArg&), bool Rc = false)
|
||||
{
|
||||
@ -78,19 +79,20 @@ namespace Jit64
|
||||
|
||||
void reg_imm(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int d = inst.RD, a = inst.RA, s = inst.RS;
|
||||
switch (inst.OPCD)
|
||||
{
|
||||
case 14: regimmop(d,a,false,(u32)(s32)inst.SIMM_16,Add,ADD); break; //addi
|
||||
case 15: regimmop(d,a,false,(u32)inst.SIMM_16<<16,Add,ADD); break; //addis
|
||||
case 14: regimmop(d, a, false, (u32)(s32)inst.SIMM_16, Add, ADD); break; //addi
|
||||
case 15: regimmop(d, a, false, (u32)inst.SIMM_16 << 16, Add, ADD); break; //addis
|
||||
case 24:
|
||||
if (a == 0 && s == 0 && inst.UIMM == 0) //check for nop
|
||||
{NOP();return;} //make the nop visible.. or turn to int3? we shouldn't get nops
|
||||
regimmop(a,s,true,inst.UIMM,Or,OR);
|
||||
{NOP(); return;} //make the nop visible.. or turn to int3? we shouldn't get nops
|
||||
regimmop(a, s, true, inst.UIMM, Or, OR);
|
||||
break;//ori
|
||||
case 25: regimmop(a,s,true,inst.UIMM<<16,Or,OR); break;//oris
|
||||
case 28: regimmop(a,s,true,inst.UIMM,And,AND,true); break;
|
||||
case 29: regimmop(a,s,true,inst.UIMM<<16,And,AND,true); break;
|
||||
case 25: regimmop(a, s, true, inst.UIMM << 16, Or, OR, false); break;//oris
|
||||
case 28: regimmop(a, s, true, inst.UIMM, And, AND, true); break;
|
||||
case 29: regimmop(a, s, true, inst.UIMM << 16, And, AND, true); break;
|
||||
case 12: //addic
|
||||
case 13: //addic_rc
|
||||
case 26: //xori
|
||||
@ -104,6 +106,7 @@ namespace Jit64
|
||||
// unsigned
|
||||
void cmpli(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA;
|
||||
u32 uimm = inst.UIMM;
|
||||
int crf = inst.CRFD;
|
||||
@ -152,7 +155,7 @@ namespace Jit64
|
||||
// signed
|
||||
void cmpi(UGeckoInstruction inst)
|
||||
{
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA;
|
||||
s32 simm = (s32)(s16)inst.UIMM;
|
||||
int crf = inst.CRFD;
|
||||
@ -180,6 +183,7 @@ namespace Jit64
|
||||
// signed
|
||||
void cmp(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA;
|
||||
int b = inst.RB;
|
||||
int crf = inst.CRFD;
|
||||
@ -209,6 +213,7 @@ namespace Jit64
|
||||
// unsigned
|
||||
void cmpl(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA;
|
||||
int b = inst.RB;
|
||||
int crf = inst.CRFD;
|
||||
@ -237,6 +242,7 @@ namespace Jit64
|
||||
|
||||
void orx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA;
|
||||
int s = inst.RS;
|
||||
int b = inst.RB;
|
||||
@ -271,6 +277,7 @@ namespace Jit64
|
||||
|
||||
void andx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, s = inst.RS, b = inst.RB;
|
||||
if (a != s && a != b) {
|
||||
gpr.LoadToX64(a, false, true);
|
||||
@ -291,6 +298,7 @@ namespace Jit64
|
||||
|
||||
void extsbx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, s = inst.RS;
|
||||
gpr.LoadToX64(a, a == s, true);
|
||||
gpr.KillImmediate(s);
|
||||
@ -304,6 +312,7 @@ namespace Jit64
|
||||
|
||||
void extshx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, s = inst.RS;
|
||||
gpr.LoadToX64(a, a == s, true);
|
||||
gpr.KillImmediate(s);
|
||||
@ -316,6 +325,7 @@ namespace Jit64
|
||||
|
||||
void subfic(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, d = inst.RD;
|
||||
gpr.FlushR(ECX);
|
||||
gpr.LockX(ECX);
|
||||
@ -341,6 +351,7 @@ namespace Jit64
|
||||
|
||||
void subfx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, b = inst.RB, d = inst.RD;
|
||||
gpr.Lock(a, b, d);
|
||||
if (d != a && d != b) {
|
||||
@ -361,6 +372,7 @@ namespace Jit64
|
||||
|
||||
void mulli(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, d = inst.RD;
|
||||
gpr.FlushR(EDX);
|
||||
gpr.LockX(EDX);
|
||||
@ -380,6 +392,7 @@ namespace Jit64
|
||||
|
||||
void mullwx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, b = inst.RB, d = inst.RD;
|
||||
gpr.FlushR(EDX);
|
||||
gpr.LockX(EDX);
|
||||
@ -403,6 +416,7 @@ namespace Jit64
|
||||
|
||||
void mulhwux(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, b = inst.RB, d = inst.RD;
|
||||
gpr.FlushR(EDX);
|
||||
gpr.LockX(EDX);
|
||||
@ -469,6 +483,7 @@ namespace Jit64
|
||||
|
||||
void addx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, b = inst.RB, d = inst.RD;
|
||||
_assert_msg_(DYNA_REC, !inst.OE, "Add - OE enabled :(");
|
||||
|
||||
@ -519,6 +534,7 @@ namespace Jit64
|
||||
// This can be optimized
|
||||
void addex(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, b = inst.RB, d = inst.RD;
|
||||
gpr.FlushR(ECX);
|
||||
gpr.LockX(ECX);
|
||||
@ -546,6 +562,7 @@ namespace Jit64
|
||||
|
||||
void rlwinmx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA;
|
||||
int s = inst.RS;
|
||||
if (gpr.R(a).IsImm() || gpr.R(s).IsImm())
|
||||
@ -596,7 +613,7 @@ namespace Jit64
|
||||
|
||||
void rlwimix(UGeckoInstruction inst)
|
||||
{
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA;
|
||||
int s = inst.RS;
|
||||
if (gpr.R(a).IsImm() || gpr.R(s).IsImm())
|
||||
@ -628,6 +645,7 @@ namespace Jit64
|
||||
|
||||
void rlwnmx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, b = inst.RB, s = inst.RS;
|
||||
if (gpr.R(a).IsImm())
|
||||
{
|
||||
@ -657,6 +675,7 @@ namespace Jit64
|
||||
|
||||
void srwx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
// BUGGY?
|
||||
Default(inst); return;
|
||||
int a = inst.RA;
|
||||
@ -690,6 +709,7 @@ namespace Jit64
|
||||
// another crazy instruction :(
|
||||
void srawix(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA;
|
||||
int s = inst.RS;
|
||||
int amount = inst.SH;
|
||||
@ -731,6 +751,7 @@ namespace Jit64
|
||||
|
||||
void cntlzwx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA;
|
||||
int s = inst.RS;
|
||||
if (gpr.R(a).IsImm() || gpr.R(s).IsImm() || s == a)
|
||||
|
@ -18,6 +18,8 @@
|
||||
// TODO(ector): Tons of pshufb optimization of the loads/stores, for SSSE3+, possibly SSE4, only.
|
||||
// Should give a very noticable speed boost to paired single heavy code.
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "../PowerPC.h"
|
||||
#include "../../Core.h"
|
||||
#include "../../HW/GPFifo.h"
|
||||
@ -33,13 +35,13 @@
|
||||
#include "JitAsm.h"
|
||||
#include "JitRegCache.h"
|
||||
|
||||
#define OLD
|
||||
//#define OLD Default(inst); return;
|
||||
// #define INSTRUCTION_START Default(inst); return;
|
||||
#define INSTRUCTION_START
|
||||
|
||||
#ifdef _M_IX86
|
||||
#define BIT32OLD Default(inst); return;
|
||||
#define DISABLE_32BIT Default(inst); return;
|
||||
#else
|
||||
#define BIT32OLD ;
|
||||
#define DISABLE_32BIT ;
|
||||
#endif
|
||||
|
||||
namespace Jit64
|
||||
@ -81,6 +83,7 @@ namespace Jit64
|
||||
|
||||
void lbzx(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int a = inst.RA, b = inst.RB, d = inst.RD;
|
||||
gpr.Lock(a, b, d);
|
||||
if (b == d || a == d)
|
||||
@ -97,6 +100,7 @@ namespace Jit64
|
||||
|
||||
void lXz(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int d = inst.RD;
|
||||
int a = inst.RA;
|
||||
|
||||
@ -171,7 +175,7 @@ namespace Jit64
|
||||
|
||||
void lfs(UGeckoInstruction inst)
|
||||
{
|
||||
// BIT32OLD;
|
||||
INSTRUCTION_START;
|
||||
int d = inst.RD;
|
||||
int a = inst.RA;
|
||||
if (!a)
|
||||
@ -211,7 +215,8 @@ namespace Jit64
|
||||
|
||||
void lfd(UGeckoInstruction inst)
|
||||
{
|
||||
BIT32OLD;
|
||||
INSTRUCTION_START;
|
||||
DISABLE_32BIT;
|
||||
int d = inst.RD;
|
||||
int a = inst.RA;
|
||||
if (!a)
|
||||
@ -235,8 +240,8 @@ namespace Jit64
|
||||
|
||||
void stfd(UGeckoInstruction inst)
|
||||
{
|
||||
BIT32OLD;
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
DISABLE_32BIT;
|
||||
int s = inst.RS;
|
||||
int a = inst.RA;
|
||||
if (!a)
|
||||
@ -259,8 +264,8 @@ namespace Jit64
|
||||
|
||||
void stfs(UGeckoInstruction inst)
|
||||
{
|
||||
BIT32OLD;
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
DISABLE_32BIT;
|
||||
bool update = inst.OPCD & 1;
|
||||
int s = inst.RS;
|
||||
int a = inst.RA;
|
||||
@ -301,10 +306,8 @@ namespace Jit64
|
||||
|
||||
void lfsx(UGeckoInstruction inst)
|
||||
{
|
||||
#ifdef _M_IX86
|
||||
Default(inst);
|
||||
return;
|
||||
#endif
|
||||
INSTRUCTION_START;
|
||||
DISABLE_32BIT;
|
||||
fpr.Lock(inst.RS);
|
||||
fpr.LoadToX64(inst.RS, false, true);
|
||||
MOV(32, R(EAX), gpr.R(inst.RB));
|
||||
@ -321,10 +324,8 @@ namespace Jit64
|
||||
// Zero cache line.
|
||||
void dcbz(UGeckoInstruction inst)
|
||||
{
|
||||
#ifdef _M_IX86
|
||||
Default(inst);
|
||||
return;
|
||||
#endif
|
||||
INSTRUCTION_START;
|
||||
DISABLE_32BIT;
|
||||
MOV(32, R(EAX), gpr.R(inst.RB));
|
||||
if (inst.RA)
|
||||
ADD(32, R(EAX), gpr.R(inst.RA));
|
||||
@ -336,6 +337,7 @@ namespace Jit64
|
||||
|
||||
void stX(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int s = inst.RS;
|
||||
int a = inst.RA;
|
||||
|
||||
@ -471,6 +473,7 @@ namespace Jit64
|
||||
// A few games use these heavily.
|
||||
void lmw(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
Default(inst);
|
||||
return;
|
||||
/// BUGGY
|
||||
@ -496,6 +499,7 @@ namespace Jit64
|
||||
|
||||
void stmw(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
Default(inst);
|
||||
return;
|
||||
/*
|
||||
|
@ -18,6 +18,8 @@
|
||||
// TODO(ector): Tons of pshufb optimization of the loads/stores, for SSSE3+, possibly SSE4, only.
|
||||
// Should give a very noticable speed boost to paired single heavy code.
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "../PowerPC.h"
|
||||
#include "../../Core.h"
|
||||
#include "../../HW/GPFifo.h"
|
||||
@ -33,13 +35,13 @@
|
||||
#include "JitAsm.h"
|
||||
#include "JitRegCache.h"
|
||||
|
||||
#define OLD
|
||||
//#define OLD Default(inst); return;
|
||||
// #define INSTRUCTION_START Default(inst); return;
|
||||
#define INSTRUCTION_START
|
||||
|
||||
#ifdef _M_IX86
|
||||
#define BIT32OLD Default(inst); return;
|
||||
#define DISABLE_32BIT Default(inst); return;
|
||||
#else
|
||||
#define BIT32OLD ;
|
||||
#define DISABLE_32BIT ;
|
||||
#endif
|
||||
|
||||
namespace Jit64 {
|
||||
@ -47,7 +49,7 @@ namespace Jit64 {
|
||||
static double GC_ALIGNED16(psTemp[2]) = {1.0, 1.0};
|
||||
static u64 GC_ALIGNED16(temp64);
|
||||
static u32 GC_ALIGNED16(temp32);
|
||||
|
||||
static u32 temp;
|
||||
|
||||
// TODO(ector): Improve 64-bit version
|
||||
void WriteDual32(u64 value, u32 address)
|
||||
@ -56,7 +58,7 @@ void WriteDual32(u64 value, u32 address)
|
||||
Memory::Write_U32((u32)value, address + 4);
|
||||
}
|
||||
|
||||
const double m_quantizeTableD[] =
|
||||
static const double m_quantizeTableD[] =
|
||||
{
|
||||
(1 << 0), (1 << 1), (1 << 2), (1 << 3),
|
||||
(1 << 4), (1 << 5), (1 << 6), (1 << 7),
|
||||
@ -76,7 +78,7 @@ const double m_quantizeTableD[] =
|
||||
1.0 / (1 << 4), 1.0 / (1 << 3), 1.0 / (1 << 2), 1.0 / (1 << 1),
|
||||
};
|
||||
|
||||
const double m_dequantizeTableD[] =
|
||||
static const double m_dequantizeTableD[] =
|
||||
{
|
||||
1.0 / (1 << 0), 1.0 / (1 << 1), 1.0 / (1 << 2), 1.0 / (1 << 3),
|
||||
1.0 / (1 << 4), 1.0 / (1 << 5), 1.0 / (1 << 6), 1.0 / (1 << 7),
|
||||
@ -98,11 +100,10 @@ const double m_dequantizeTableD[] =
|
||||
|
||||
// The big problem is likely instructions that set the quantizers in the same block.
|
||||
// We will have to break block after quantizers are written to.
|
||||
u32 temp;
|
||||
void psq_st(UGeckoInstruction inst)
|
||||
{
|
||||
BIT32OLD;
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
DISABLE_32BIT;
|
||||
if (js.blockSetsQuantizers || !Core::GetStartupParameter().bOptimizeQuantizers)
|
||||
{
|
||||
Default(inst);
|
||||
@ -112,7 +113,7 @@ void psq_st(UGeckoInstruction inst)
|
||||
const EQuantizeType stType = static_cast<EQuantizeType>(gqr.ST_TYPE);
|
||||
int stScale = gqr.ST_SCALE;
|
||||
bool update = inst.OPCD == 61;
|
||||
if (update || !inst.RA || inst.W)
|
||||
if (!inst.RA || inst.W)
|
||||
{
|
||||
// PanicAlert(inst.RA ? "W" : "inst");
|
||||
Default(inst);
|
||||
@ -223,8 +224,8 @@ void psq_st(UGeckoInstruction inst)
|
||||
|
||||
void psq_l(UGeckoInstruction inst)
|
||||
{
|
||||
BIT32OLD;
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
DISABLE_32BIT;
|
||||
if (js.blockSetsQuantizers || !Core::GetStartupParameter().bOptimizeQuantizers)
|
||||
{
|
||||
Default(inst);
|
||||
@ -234,7 +235,7 @@ void psq_l(UGeckoInstruction inst)
|
||||
const EQuantizeType ldType = static_cast<EQuantizeType>(gqr.LD_TYPE);
|
||||
int ldScale = gqr.LD_SCALE;
|
||||
bool update = inst.OPCD == 57;
|
||||
if (update || !inst.RA || inst.W)
|
||||
if (!inst.RA || inst.W)
|
||||
{
|
||||
// 0 1 during load
|
||||
//PanicAlert("ld:%i %i", ldType, (int)inst.W);
|
||||
|
@ -14,6 +14,9 @@
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "../PowerPC.h"
|
||||
#include "../PPCTables.h"
|
||||
#include "x64Emitter.h"
|
||||
@ -29,18 +32,24 @@
|
||||
// ps_madds1
|
||||
|
||||
|
||||
//#define OLD Default(inst); return;
|
||||
#define OLD
|
||||
// #define INSTRUCTION_START Default(inst); return;
|
||||
#define INSTRUCTION_START
|
||||
|
||||
#ifdef _M_IX86
|
||||
#define DISABLE_32BIT Default(inst); return;
|
||||
#else
|
||||
#define DISABLE_32BIT ;
|
||||
#endif
|
||||
|
||||
namespace Jit64
|
||||
{
|
||||
const u64 GC_ALIGNED16(psSignBits[2]) = {0x8000000000000000ULL, 0x8000000000000000ULL};
|
||||
const u64 GC_ALIGNED16(psAbsMask[2]) = {0x7FFFFFFFFFFFFFFFULL, 0x7FFFFFFFFFFFFFFFULL};
|
||||
const double GC_ALIGNED16(psOneOne[2]) = {1.0, 1.0};
|
||||
static const u64 GC_ALIGNED16(psSignBits[2]) = {0x8000000000000000ULL, 0x8000000000000000ULL};
|
||||
static const u64 GC_ALIGNED16(psAbsMask[2]) = {0x7FFFFFFFFFFFFFFFULL, 0x7FFFFFFFFFFFFFFFULL};
|
||||
static const double GC_ALIGNED16(psOneOne[2]) = {1.0, 1.0};
|
||||
|
||||
void ps_sign(UGeckoInstruction inst)
|
||||
{
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
int d = inst.FD;
|
||||
int b = inst.FB;
|
||||
|
||||
@ -73,6 +82,7 @@ namespace Jit64
|
||||
|
||||
void ps_rsqrte(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
int d = inst.FD;
|
||||
int b = inst.FB;
|
||||
fpr.Lock(d, b);
|
||||
@ -143,7 +153,7 @@ namespace Jit64
|
||||
|
||||
void ps_arith(UGeckoInstruction inst)
|
||||
{
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
switch (inst.SUBOP5)
|
||||
{
|
||||
case 18: tri_op(inst.FD, inst.FA, inst.FB, false, &DIVPD); break; //div
|
||||
@ -164,7 +174,7 @@ namespace Jit64
|
||||
//TODO: find easy cases and optimize them, do a breakout like ps_arith
|
||||
void ps_mergeXX(UGeckoInstruction inst)
|
||||
{
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
int d = inst.FD;
|
||||
int a = inst.FA;
|
||||
int b = inst.FB;
|
||||
@ -202,7 +212,7 @@ namespace Jit64
|
||||
//TODO: add optimized cases
|
||||
void ps_maddXX(UGeckoInstruction inst)
|
||||
{
|
||||
OLD;
|
||||
INSTRUCTION_START;
|
||||
int a = inst.FA;
|
||||
int b = inst.FB;
|
||||
int c = inst.FC;
|
||||
@ -243,6 +253,7 @@ namespace Jit64
|
||||
|
||||
void ps_mulsX(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
Default(inst);
|
||||
return;
|
||||
|
||||
|
@ -14,6 +14,9 @@
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
#include "../../CoreTiming.h"
|
||||
#include "../../HW/SystemTimers.h"
|
||||
#include "../PowerPC.h"
|
||||
@ -24,10 +27,20 @@
|
||||
#include "JitCache.h"
|
||||
#include "JitRegCache.h"
|
||||
|
||||
// #define INSTRUCTION_START Default(inst); return;
|
||||
#define INSTRUCTION_START
|
||||
|
||||
#ifdef _M_IX86
|
||||
#define DISABLE_32BIT Default(inst); return;
|
||||
#else
|
||||
#define DISABLE_32BIT ;
|
||||
#endif
|
||||
|
||||
namespace Jit64
|
||||
{
|
||||
void mtspr(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
u32 iIndex = (inst.SPRU << 5) | (inst.SPRL & 0x1F);
|
||||
int d = inst.RD;
|
||||
|
||||
@ -65,6 +78,7 @@ namespace Jit64
|
||||
|
||||
void mfspr(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
u32 iIndex = (inst.SPRU << 5) | (inst.SPRL & 0x1F);
|
||||
int d = inst.RD;
|
||||
switch (iIndex)
|
||||
@ -87,12 +101,14 @@ namespace Jit64
|
||||
|
||||
void mtmsr(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
gpr.LoadToX64(inst.RS);
|
||||
MOV(32, M(&MSR), gpr.R(inst.RS));
|
||||
}
|
||||
|
||||
void mfmsr(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
//Privileged?
|
||||
gpr.LoadToX64(inst.RD, false);
|
||||
MOV(32, gpr.R(inst.RD), M(&MSR));
|
||||
@ -100,6 +116,7 @@ namespace Jit64
|
||||
|
||||
void mftb(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START;
|
||||
mfspr(inst);
|
||||
}
|
||||
}
|
||||
|
@ -14,8 +14,10 @@
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "Common.h"
|
||||
#include "PPCTables.h"
|
||||
#include "Interpreter/Interpreter.h"
|
||||
|
||||
@ -38,20 +40,21 @@ struct GekkoOPTemplate
|
||||
int runCount;
|
||||
};
|
||||
|
||||
// The eventual goal is to be able to constify as much as possible in this file.
|
||||
// Currently, the main obstacle is runCount above.
|
||||
static GekkoOPInfo *m_infoTable[64];
|
||||
static GekkoOPInfo *m_infoTable4[1024];
|
||||
static GekkoOPInfo *m_infoTable19[1024];
|
||||
static GekkoOPInfo *m_infoTable31[1024];
|
||||
static GekkoOPInfo *m_infoTable59[32];
|
||||
static GekkoOPInfo *m_infoTable63[1024];
|
||||
|
||||
GekkoOPInfo *m_infoTable[64];
|
||||
GekkoOPInfo *m_infoTable4[1024];
|
||||
GekkoOPInfo *m_infoTable19[1024];
|
||||
GekkoOPInfo *m_infoTable31[1024];
|
||||
GekkoOPInfo *m_infoTable59[32];
|
||||
GekkoOPInfo *m_infoTable63[1024];
|
||||
|
||||
_recompilerInstruction dynaOpTable[64];
|
||||
_recompilerInstruction dynaOpTable4[1024];
|
||||
_recompilerInstruction dynaOpTable19[1024];
|
||||
_recompilerInstruction dynaOpTable31[1024];
|
||||
_recompilerInstruction dynaOpTable59[32];
|
||||
_recompilerInstruction dynaOpTable63[1024];
|
||||
static _recompilerInstruction dynaOpTable[64];
|
||||
static _recompilerInstruction dynaOpTable4[1024];
|
||||
static _recompilerInstruction dynaOpTable19[1024];
|
||||
static _recompilerInstruction dynaOpTable31[1024];
|
||||
static _recompilerInstruction dynaOpTable59[32];
|
||||
static _recompilerInstruction dynaOpTable63[1024];
|
||||
|
||||
void DynaRunTable4(UGeckoInstruction _inst) {dynaOpTable4 [_inst.SUBOP10](_inst);}
|
||||
void DynaRunTable19(UGeckoInstruction _inst) {dynaOpTable19[_inst.SUBOP10](_inst);}
|
||||
@ -59,9 +62,8 @@ void DynaRunTable31(UGeckoInstruction _inst) {dynaOpTable31[_inst.SUBOP10](_inst
|
||||
void DynaRunTable59(UGeckoInstruction _inst) {dynaOpTable59[_inst.SUBOP5 ](_inst);}
|
||||
void DynaRunTable63(UGeckoInstruction _inst) {dynaOpTable63[_inst.SUBOP10](_inst);}
|
||||
|
||||
GekkoOPInfo *m_allInstructions[2048];
|
||||
int m_numInstructions;
|
||||
|
||||
static GekkoOPInfo *m_allInstructions[2048];
|
||||
static int m_numInstructions;
|
||||
|
||||
GekkoOPInfo *GetOpInfo(UGeckoInstruction _inst)
|
||||
{
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8,00"
|
||||
Version="8.00"
|
||||
Name="VideoCommon"
|
||||
ProjectGUID="{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}"
|
||||
RootNamespace="VideoCommon"
|
||||
@ -405,10 +405,6 @@
|
||||
RelativePath=".\Src\CPMemory.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\GPUInterface.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Src\LookUpTables.cpp"
|
||||
>
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "PixelShaderManager.h"
|
||||
|
||||
// State translation lookup tables
|
||||
const GLenum glSrcFactors[8] =
|
||||
static const GLenum glSrcFactors[8] =
|
||||
{
|
||||
GL_ZERO,
|
||||
GL_ONE,
|
||||
@ -40,13 +40,13 @@ const GLenum glSrcFactors[8] =
|
||||
GL_ONE_MINUS_DST_ALPHA
|
||||
};
|
||||
|
||||
const GLenum glDestFactors[8] = {
|
||||
static const GLenum glDestFactors[8] = {
|
||||
GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR,
|
||||
GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA };
|
||||
|
||||
const GLenum glCmpFuncs[8] = { GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL, GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, GL_ALWAYS };
|
||||
static const GLenum glCmpFuncs[8] = { GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL, GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, GL_ALWAYS };
|
||||
|
||||
const GLenum glLogicOpCodes[16] = {
|
||||
static const GLenum glLogicOpCodes[16] = {
|
||||
GL_CLEAR, GL_SET, GL_COPY, GL_COPY_INVERTED, GL_NOOP, GL_INVERT, GL_AND, GL_NAND,
|
||||
GL_OR, GL_NOR, GL_XOR, GL_EQUIV, GL_AND_REVERSE, GL_AND_INVERTED, GL_OR_REVERSE, GL_OR_INVERTED };
|
||||
|
||||
|
@ -28,8 +28,8 @@
|
||||
FifoReader fifo;
|
||||
static u8 *videoBuffer;
|
||||
|
||||
int size = 0;
|
||||
int readptr = 0;
|
||||
static int size = 0;
|
||||
static int readptr = 0;
|
||||
|
||||
void Fifo_Init()
|
||||
{
|
||||
|
@ -32,7 +32,7 @@ u32 s_nTargetWidth = 0, s_nTargetHeight = 0;
|
||||
u32 g_AAx = 0, g_AAy = 0;
|
||||
|
||||
#ifndef _WIN32
|
||||
GLWindow GLWin;
|
||||
static GLWindow GLWin;
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
|
@ -576,7 +576,7 @@ void DVProfClear()
|
||||
|
||||
#ifdef _WIN32
|
||||
// The one for Linux is in Linux/Linux.cpp
|
||||
HANDLE hConsole = NULL;
|
||||
static HANDLE hConsole = NULL;
|
||||
void OpenConsole() {
|
||||
COORD csize;
|
||||
CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
|
||||
@ -605,7 +605,7 @@ void CloseConsole() {
|
||||
#endif
|
||||
|
||||
|
||||
FILE* pfLog = NULL;
|
||||
static FILE* pfLog = NULL;
|
||||
void __Log(const char *fmt, ...)
|
||||
{
|
||||
char* Msg = (char*)alloca(strlen(fmt)+512);
|
||||
|
@ -41,7 +41,7 @@ bool WriteAlphaTest(char *&p);
|
||||
|
||||
const float epsilon = 1.0f/255.0f;
|
||||
|
||||
const char *tevKSelTableC[] = // KCSEL
|
||||
static const char *tevKSelTableC[] = // KCSEL
|
||||
{
|
||||
"1.0f,1.0f,1.0f", //1 = 0x00
|
||||
"0.875,0.875,0.875",//7_8 = 0x01
|
||||
@ -77,7 +77,7 @@ const char *tevKSelTableC[] = // KCSEL
|
||||
I_KCOLORS"[3].aaa",//K3_A = 0x1F
|
||||
};
|
||||
|
||||
const char *tevKSelTableA[] = // KASEL
|
||||
static const char *tevKSelTableA[] = // KASEL
|
||||
{
|
||||
"1.0f", //1 = 0x00
|
||||
"0.875f",//7_8 = 0x01
|
||||
@ -113,7 +113,7 @@ const char *tevKSelTableA[] = // KASEL
|
||||
I_KCOLORS"[3].a",//K3_A = 0x1F
|
||||
};
|
||||
|
||||
const char *tevScaleTable[] = // CS
|
||||
static const char *tevScaleTable[] = // CS
|
||||
{
|
||||
"1.0f", //SCALE_1
|
||||
"2.0f", //SCALE_2
|
||||
@ -121,7 +121,7 @@ const char *tevScaleTable[] = // CS
|
||||
"0.5f",//DIVIDE_2
|
||||
};
|
||||
|
||||
const char *tevBiasTable[] = // TB
|
||||
static const char *tevBiasTable[] = // TB
|
||||
{
|
||||
"", //ZERO,
|
||||
"+0.5f", //ADDHALF,
|
||||
@ -129,19 +129,19 @@ const char *tevBiasTable[] = // TB
|
||||
"",
|
||||
};
|
||||
|
||||
const char *tevOpTable[] = { // TEV
|
||||
static const char *tevOpTable[] = { // TEV
|
||||
"+", //TEVOP_ADD = 0,
|
||||
"-", //TEVOP_SUB = 1,
|
||||
};
|
||||
|
||||
const char *tevCompOpTable[] = { ">", "==" };
|
||||
static const char *tevCompOpTable[] = { ">", "==" };
|
||||
|
||||
#define TEVCMP_R8 0
|
||||
#define TEVCMP_GR16 1
|
||||
#define TEVCMP_BGR24 2
|
||||
#define TEVCMP_RGB8 3
|
||||
|
||||
const char *tevCInputTable[] = // CC
|
||||
static const char *tevCInputTable[] = // CC
|
||||
{
|
||||
"prev.rgb", //CPREV,
|
||||
"prev.aaa", //APREV,
|
||||
@ -165,7 +165,8 @@ const char *tevCInputTable[] = // CC
|
||||
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||
};
|
||||
const char *tevCInputTable2[] = // CC
|
||||
|
||||
static const char *tevCInputTable2[] = // CC
|
||||
{
|
||||
"prev", //CPREV,
|
||||
"(prev.aaa)", //APREV,
|
||||
@ -190,7 +191,7 @@ const char *tevCInputTable2[] = // CC
|
||||
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||
};
|
||||
|
||||
const char *tevAInputTable[] = // CA
|
||||
static const char *tevAInputTable[] = // CA
|
||||
{
|
||||
"prev.a", //APREV,
|
||||
"c0.a", //A0,
|
||||
@ -206,7 +207,7 @@ const char *tevAInputTable[] = // CA
|
||||
"PADERROR", "PADERROR", "PADERROR",
|
||||
};
|
||||
|
||||
const char *tevAInputTable2[] = // CA
|
||||
static const char *tevAInputTable2[] = // CA
|
||||
{
|
||||
"prev", //APREV,
|
||||
"c0", //A0,
|
||||
@ -222,7 +223,7 @@ const char *tevAInputTable2[] = // CA
|
||||
"PADERROR", "PADERROR", "PADERROR", "PADERROR",
|
||||
};
|
||||
|
||||
const char *tevRasTable[] =
|
||||
static const char *tevRasTable[] =
|
||||
{
|
||||
"colors[0]",
|
||||
"colors[1]",
|
||||
@ -234,27 +235,28 @@ const char *tevRasTable[] =
|
||||
"float4(0,0,0,0)", // zero
|
||||
};
|
||||
|
||||
const char *alphaRef[2] =
|
||||
static const char *alphaRef[2] =
|
||||
{
|
||||
I_ALPHA"[0].x",
|
||||
I_ALPHA"[0].y"
|
||||
};
|
||||
|
||||
const char *tevTexFunc[] = { "tex2D", "texRECT" };
|
||||
static const char *tevTexFunc[] = { "tex2D", "texRECT" };
|
||||
|
||||
const char *tevCOutputTable[] = { "prev.rgb", "c0.rgb", "c1.rgb", "c2.rgb" };
|
||||
const char *tevAOutputTable[] = { "prev.a", "c0.a", "c1.a", "c2.a" };
|
||||
const char* tevIndAlphaSel[] = {"", "x", "y", "z"};
|
||||
const char* tevIndAlphaScale[] = {"", "*32","*16","*8"};
|
||||
const char* tevIndBiasField[] = {"", "x", "y", "xy", "z", "xz", "yz", "xyz"}; // indexed by bias
|
||||
const char* tevIndBiasAdd[] = {"-128.0f", "1.0f", "1.0f", "1.0f" }; // indexed by fmt
|
||||
const char* tevIndWrapStart[] = {"0", "256", "128", "64", "32", "16", "0.001" };
|
||||
const char* tevIndFmtScale[] = {"255.0f", "31.0f", "15.0f", "8.0f" };
|
||||
static const char *tevCOutputTable[] = { "prev.rgb", "c0.rgb", "c1.rgb", "c2.rgb" };
|
||||
static const char *tevAOutputTable[] = { "prev.a", "c0.a", "c1.a", "c2.a" };
|
||||
static const char* tevIndAlphaSel[] = {"", "x", "y", "z"};
|
||||
static const char* tevIndAlphaScale[] = {"", "*32","*16","*8"};
|
||||
static const char* tevIndBiasField[] = {"", "x", "y", "xy", "z", "xz", "yz", "xyz"}; // indexed by bias
|
||||
static const char* tevIndBiasAdd[] = {"-128.0f", "1.0f", "1.0f", "1.0f" }; // indexed by fmt
|
||||
static const char* tevIndWrapStart[] = {"0", "256", "128", "64", "32", "16", "0.001" };
|
||||
static const char* tevIndFmtScale[] = {"255.0f", "31.0f", "15.0f", "8.0f" };
|
||||
|
||||
#define WRITE p+=sprintf
|
||||
|
||||
const char *swapColors = "rgba";
|
||||
char swapModeTable[4][5];
|
||||
static const char *swapColors = "rgba";
|
||||
static char swapModeTable[4][5];
|
||||
static char text[16384];
|
||||
|
||||
void BuildSwapModeTable()
|
||||
{
|
||||
@ -269,7 +271,6 @@ void BuildSwapModeTable()
|
||||
}
|
||||
}
|
||||
|
||||
static char text[16384];
|
||||
char *GeneratePixelShader(u32 texture_mask, bool has_zbuffer_target, bool bRenderZToCol0)
|
||||
{
|
||||
DVSTARTPROFILE();
|
||||
|
@ -47,13 +47,13 @@ static vector< pair<int, int> > s_vStoredPrimitives; // every element, mode and
|
||||
static void (*fnSetupVertexPointers)() = NULL;
|
||||
|
||||
//these don't need to be saved
|
||||
float posScale;
|
||||
float tcScale[8];
|
||||
int colElements[2];
|
||||
float tcScaleU[8];
|
||||
float tcScaleV[8];
|
||||
int tcIndex;
|
||||
int colIndex;
|
||||
static float posScale;
|
||||
static float tcScale[8];
|
||||
static int colElements[2];
|
||||
static float tcScaleU[8];
|
||||
static float tcScaleV[8];
|
||||
static int tcIndex;
|
||||
static int colIndex;
|
||||
#ifndef _WIN32
|
||||
#undef inline
|
||||
#define inline
|
||||
@ -473,7 +473,6 @@ void VertexLoader::ProcessFormat()
|
||||
u8 *old_code_ptr = GetWritableCodePtr();
|
||||
SetCodePtr(m_compiledCode);
|
||||
Util::EmitPrologue(6);
|
||||
//INT3();
|
||||
int offset = 0;
|
||||
|
||||
// Position
|
||||
|
@ -32,6 +32,7 @@ int bound(int i)
|
||||
{
|
||||
return (i>255)?255:((i<0)?0:i);
|
||||
}
|
||||
|
||||
void yuv2rgb(int y, int u, int v, int &r, int &g, int &b)
|
||||
{
|
||||
b = bound((76283*(y - 16) + 132252*(u - 128))>>16);
|
||||
|
Loading…
Reference in New Issue
Block a user