Moved a few functions to a better suitable location, and marked a few class functions 'static'
This commit is contained in:
parent
18a27a64de
commit
ebbb8e961f
|
@ -657,112 +657,6 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define D3DDECLUSAGE_UNSUPPORTED ((D3DDECLUSAGE)-1)
|
|
||||||
|
|
||||||
D3DDECLUSAGE Xb2PCRegisterType
|
|
||||||
(
|
|
||||||
DWORD VertexRegister,
|
|
||||||
BYTE& PCUsageIndex
|
|
||||||
)
|
|
||||||
{
|
|
||||||
D3DDECLUSAGE PCRegisterType;
|
|
||||||
PCUsageIndex = 0;
|
|
||||||
|
|
||||||
switch (VertexRegister)
|
|
||||||
{
|
|
||||||
case XTL::X_D3DVSDE_VERTEX: // -1
|
|
||||||
PCRegisterType = D3DDECLUSAGE_UNSUPPORTED;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_POSITION: // 0
|
|
||||||
PCRegisterType = D3DDECLUSAGE_POSITION;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_BLENDWEIGHT: // 1
|
|
||||||
PCRegisterType = D3DDECLUSAGE_BLENDWEIGHT;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_NORMAL: // 2
|
|
||||||
PCRegisterType = D3DDECLUSAGE_NORMAL;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_DIFFUSE: // 3
|
|
||||||
PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 0;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_SPECULAR: // 4
|
|
||||||
PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 1;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_FOG: // 5
|
|
||||||
PCRegisterType = D3DDECLUSAGE_FOG;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_POINTSIZE: // 6
|
|
||||||
PCRegisterType = D3DDECLUSAGE_PSIZE;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_BACKDIFFUSE: // 7
|
|
||||||
PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 2;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_BACKSPECULAR: // 8
|
|
||||||
PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 3;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_TEXCOORD0: // 9
|
|
||||||
PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 0;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_TEXCOORD1: // 10
|
|
||||||
PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 1;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_TEXCOORD2: // 11
|
|
||||||
PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 2;
|
|
||||||
break;
|
|
||||||
case XTL::X_D3DVSDE_TEXCOORD3: // 12
|
|
||||||
PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 3;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
PCRegisterType = D3DDECLUSAGE_UNSUPPORTED;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return PCRegisterType;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* XboxVertexRegisterAsString(DWORD VertexRegister)
|
|
||||||
{
|
|
||||||
switch (VertexRegister)
|
|
||||||
{
|
|
||||||
case XTL::X_D3DVSDE_VERTEX: // -1
|
|
||||||
return "D3DVSDE_VERTEX /* xbox ext. */";
|
|
||||||
case XTL::X_D3DVSDE_POSITION: // 0
|
|
||||||
return "D3DVSDE_POSITION";
|
|
||||||
case XTL::X_D3DVSDE_BLENDWEIGHT: // 1
|
|
||||||
return "D3DVSDE_BLENDWEIGHT";
|
|
||||||
case XTL::X_D3DVSDE_NORMAL: // 2
|
|
||||||
return "D3DVSDE_NORMAL";
|
|
||||||
case XTL::X_D3DVSDE_DIFFUSE: // 3
|
|
||||||
return "D3DVSDE_DIFFUSE";
|
|
||||||
case XTL::X_D3DVSDE_SPECULAR: // 4
|
|
||||||
return "D3DVSDE_SPECULAR";
|
|
||||||
case XTL::X_D3DVSDE_FOG: // 5
|
|
||||||
return "D3DVSDE_FOG";
|
|
||||||
case XTL::X_D3DVSDE_POINTSIZE: // 6
|
|
||||||
return "D3DVDSE_POINTSIZE";
|
|
||||||
case XTL::X_D3DVSDE_BACKDIFFUSE: // 7
|
|
||||||
return "D3DVSDE_BACKDIFFUSE /* xbox ext. */";
|
|
||||||
case XTL::X_D3DVSDE_BACKSPECULAR: // 8
|
|
||||||
return "D3DVSDE_BACKSPECULAR /* xbox ext. */";
|
|
||||||
case XTL::X_D3DVSDE_TEXCOORD0: // 9
|
|
||||||
return "D3DVSDE_TEXCOORD0";
|
|
||||||
case XTL::X_D3DVSDE_TEXCOORD1: // 10
|
|
||||||
return "D3DVSDE_TEXCOORD1";
|
|
||||||
case XTL::X_D3DVSDE_TEXCOORD2: // 11
|
|
||||||
return "D3DVSDE_TEXCOORD2";
|
|
||||||
case XTL::X_D3DVSDE_TEXCOORD3: // 12
|
|
||||||
return "D3DVSDE_TEXCOORD3";
|
|
||||||
case 13:
|
|
||||||
return "13 /* unknown register */";
|
|
||||||
case 14:
|
|
||||||
return "14 /* unknown register */";
|
|
||||||
case 15:
|
|
||||||
return "15 /* unknown register */";
|
|
||||||
default:
|
|
||||||
return "16 /* or higher, unknown register */";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ****************************************************************************
|
// ****************************************************************************
|
||||||
// * Vertex shader declaration recompiler
|
// * Vertex shader declaration recompiler
|
||||||
// ****************************************************************************
|
// ****************************************************************************
|
||||||
|
@ -785,6 +679,112 @@ public:
|
||||||
DWORD HostDeclarationSize;
|
DWORD HostDeclarationSize;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
#define D3DDECLUSAGE_UNSUPPORTED ((D3DDECLUSAGE)-1)
|
||||||
|
|
||||||
|
static D3DDECLUSAGE Xb2PCRegisterType
|
||||||
|
(
|
||||||
|
DWORD VertexRegister,
|
||||||
|
BYTE& PCUsageIndex
|
||||||
|
)
|
||||||
|
{
|
||||||
|
D3DDECLUSAGE PCRegisterType;
|
||||||
|
PCUsageIndex = 0;
|
||||||
|
|
||||||
|
switch (VertexRegister)
|
||||||
|
{
|
||||||
|
case XTL::X_D3DVSDE_VERTEX: // -1
|
||||||
|
PCRegisterType = D3DDECLUSAGE_UNSUPPORTED;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_POSITION: // 0
|
||||||
|
PCRegisterType = D3DDECLUSAGE_POSITION;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_BLENDWEIGHT: // 1
|
||||||
|
PCRegisterType = D3DDECLUSAGE_BLENDWEIGHT;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_NORMAL: // 2
|
||||||
|
PCRegisterType = D3DDECLUSAGE_NORMAL;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_DIFFUSE: // 3
|
||||||
|
PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 0;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_SPECULAR: // 4
|
||||||
|
PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 1;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_FOG: // 5
|
||||||
|
PCRegisterType = D3DDECLUSAGE_FOG;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_POINTSIZE: // 6
|
||||||
|
PCRegisterType = D3DDECLUSAGE_PSIZE;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_BACKDIFFUSE: // 7
|
||||||
|
PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 2;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_BACKSPECULAR: // 8
|
||||||
|
PCRegisterType = D3DDECLUSAGE_COLOR; PCUsageIndex = 3;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_TEXCOORD0: // 9
|
||||||
|
PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 0;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_TEXCOORD1: // 10
|
||||||
|
PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 1;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_TEXCOORD2: // 11
|
||||||
|
PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 2;
|
||||||
|
break;
|
||||||
|
case XTL::X_D3DVSDE_TEXCOORD3: // 12
|
||||||
|
PCRegisterType = D3DDECLUSAGE_TEXCOORD; PCUsageIndex = 3;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
PCRegisterType = D3DDECLUSAGE_UNSUPPORTED;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return PCRegisterType;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char* XboxVertexRegisterAsString(DWORD VertexRegister)
|
||||||
|
{
|
||||||
|
switch (VertexRegister)
|
||||||
|
{
|
||||||
|
case XTL::X_D3DVSDE_VERTEX: // -1
|
||||||
|
return "D3DVSDE_VERTEX /* xbox ext. */";
|
||||||
|
case XTL::X_D3DVSDE_POSITION: // 0
|
||||||
|
return "D3DVSDE_POSITION";
|
||||||
|
case XTL::X_D3DVSDE_BLENDWEIGHT: // 1
|
||||||
|
return "D3DVSDE_BLENDWEIGHT";
|
||||||
|
case XTL::X_D3DVSDE_NORMAL: // 2
|
||||||
|
return "D3DVSDE_NORMAL";
|
||||||
|
case XTL::X_D3DVSDE_DIFFUSE: // 3
|
||||||
|
return "D3DVSDE_DIFFUSE";
|
||||||
|
case XTL::X_D3DVSDE_SPECULAR: // 4
|
||||||
|
return "D3DVSDE_SPECULAR";
|
||||||
|
case XTL::X_D3DVSDE_FOG: // 5
|
||||||
|
return "D3DVSDE_FOG";
|
||||||
|
case XTL::X_D3DVSDE_POINTSIZE: // 6
|
||||||
|
return "D3DVDSE_POINTSIZE";
|
||||||
|
case XTL::X_D3DVSDE_BACKDIFFUSE: // 7
|
||||||
|
return "D3DVSDE_BACKDIFFUSE /* xbox ext. */";
|
||||||
|
case XTL::X_D3DVSDE_BACKSPECULAR: // 8
|
||||||
|
return "D3DVSDE_BACKSPECULAR /* xbox ext. */";
|
||||||
|
case XTL::X_D3DVSDE_TEXCOORD0: // 9
|
||||||
|
return "D3DVSDE_TEXCOORD0";
|
||||||
|
case XTL::X_D3DVSDE_TEXCOORD1: // 10
|
||||||
|
return "D3DVSDE_TEXCOORD1";
|
||||||
|
case XTL::X_D3DVSDE_TEXCOORD2: // 11
|
||||||
|
return "D3DVSDE_TEXCOORD2";
|
||||||
|
case XTL::X_D3DVSDE_TEXCOORD3: // 12
|
||||||
|
return "D3DVSDE_TEXCOORD3";
|
||||||
|
case 13:
|
||||||
|
return "13 /* unknown register */";
|
||||||
|
case 14:
|
||||||
|
return "14 /* unknown register */";
|
||||||
|
case 15:
|
||||||
|
return "15 /* unknown register */";
|
||||||
|
default:
|
||||||
|
return "16 /* or higher, unknown register */";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// VERTEX SHADER
|
// VERTEX SHADER
|
||||||
|
|
||||||
static DWORD VshGetDeclarationCount(DWORD *pXboxDeclaration)
|
static DWORD VshGetDeclarationCount(DWORD *pXboxDeclaration)
|
||||||
|
@ -808,13 +808,13 @@ private:
|
||||||
return (XboxToken & X_D3DVSD_STREAMNUMBERMASK) >> X_D3DVSD_STREAMNUMBERSHIFT;
|
return (XboxToken & X_D3DVSD_STREAMNUMBERMASK) >> X_D3DVSD_STREAMNUMBERSHIFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline DWORD VshGetVertexRegister(DWORD XboxToken)
|
static inline DWORD VshGetVertexRegister(DWORD XboxToken)
|
||||||
{
|
{
|
||||||
DWORD regNum = (XboxToken & X_D3DVSD_VERTEXREGMASK) >> X_D3DVSD_VERTEXREGSHIFT;
|
DWORD regNum = (XboxToken & X_D3DVSD_VERTEXREGMASK) >> X_D3DVSD_VERTEXREGSHIFT;
|
||||||
return regNum;
|
return regNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline DWORD VshGetVertexRegisterIn(DWORD XboxToken)
|
static inline DWORD VshGetVertexRegisterIn(DWORD XboxToken)
|
||||||
{
|
{
|
||||||
DWORD regNum = (XboxToken & X_D3DVSD_VERTEXREGINMASK) >> X_D3DVSD_VERTEXREGINSHIFT;
|
DWORD regNum = (XboxToken & X_D3DVSD_VERTEXREGINMASK) >> X_D3DVSD_VERTEXREGINSHIFT;
|
||||||
return regNum;
|
return regNum;
|
||||||
|
@ -1006,7 +1006,7 @@ private:
|
||||||
DbgVshPrintf("// NbrStreams: %d\n", iNumberOfVertexStreams);
|
DbgVshPrintf("// NbrStreams: %d\n", iNumberOfVertexStreams);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VshConvertToken_NOP(DWORD *pXboxToken)
|
static void VshConvertToken_NOP(DWORD *pXboxToken)
|
||||||
{
|
{
|
||||||
if(*pXboxToken != X_D3DVSD_NOP())
|
if(*pXboxToken != X_D3DVSD_NOP())
|
||||||
{
|
{
|
||||||
|
@ -1014,7 +1014,7 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD VshConvertToken_CONSTMEM(DWORD *pXboxToken)
|
static DWORD VshConvertToken_CONSTMEM(DWORD *pXboxToken)
|
||||||
{
|
{
|
||||||
// DWORD ConstantAddress = (*pXboxToken & X_D3DVSD_CONSTADDRESSMASK) >> X_D3DVSD_CONSTADDRESSSHIFT;
|
// DWORD ConstantAddress = (*pXboxToken & X_D3DVSD_CONSTADDRESSMASK) >> X_D3DVSD_CONSTADDRESSSHIFT;
|
||||||
DWORD Count = (*pXboxToken & X_D3DVSD_CONSTCOUNTMASK) >> X_D3DVSD_CONSTCOUNTSHIFT;
|
DWORD Count = (*pXboxToken & X_D3DVSD_CONSTCOUNTMASK) >> X_D3DVSD_CONSTCOUNTSHIFT;
|
||||||
|
@ -1411,7 +1411,7 @@ private:
|
||||||
return Step;
|
return Step;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD* RemoveXboxDeclarationRedefinition(DWORD* pXboxDeclaration)
|
static DWORD* RemoveXboxDeclarationRedefinition(DWORD* pXboxDeclaration)
|
||||||
{
|
{
|
||||||
// Detect and remove register redefinitions by preprocessing the Xbox Vertex Declaration
|
// Detect and remove register redefinitions by preprocessing the Xbox Vertex Declaration
|
||||||
// Test Case: King Kong
|
// Test Case: King Kong
|
||||||
|
|
Loading…
Reference in New Issue