Compacted FormatInfos table
This commit is contained in:
parent
695491c97f
commit
2a60c17c4e
|
@ -49,7 +49,7 @@
|
||||||
// L = luminance, byte : 0 = pure black ARGB(1, 0,0,0) to 255 = pure white ARGB(1,255,255,255)
|
// L = luminance, byte : 0 = pure black ARGB(1, 0,0,0) to 255 = pure white ARGB(1,255,255,255)
|
||||||
// P = pallete
|
// P = pallete
|
||||||
enum _ComponentEncoding {
|
enum _ComponentEncoding {
|
||||||
NoComponents = 0, // Format doesn't contain any component (ARGB/QWVU)
|
NoCmpnts = 0, // Format doesn't contain any component (ARGB/QWVU)
|
||||||
A1R5G5B5,
|
A1R5G5B5,
|
||||||
X1R5G5B5,
|
X1R5G5B5,
|
||||||
A4R4G4B4,
|
A4R4G4B4,
|
||||||
|
@ -103,10 +103,10 @@ static const XTL::ComponentEncodingInfo ComponentEncodingInfos[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum _FormatStorage {
|
enum _FormatStorage {
|
||||||
Undefined = 0,
|
Undfnd = 0, // Undefined
|
||||||
Linear,
|
Linear,
|
||||||
Swizzled,
|
Swzzld, // Swizzled
|
||||||
Compressed
|
Cmprsd // Compressed
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _FormatInfo {
|
typedef struct _FormatInfo {
|
||||||
|
@ -118,147 +118,87 @@ typedef struct _FormatInfo {
|
||||||
} FormatInfo;
|
} FormatInfo;
|
||||||
|
|
||||||
static const FormatInfo FormatInfos[] = {
|
static const FormatInfo FormatInfos[] = {
|
||||||
// X_D3DFMT_L8 = 0x00,
|
// Notes :
|
||||||
{ 8, Swizzled, ______L8, XTL::D3DFMT_L8 },
|
// * This table should use a native format that most closely mirrors the Xbox format,
|
||||||
// X_D3DFMT_AL8 = 0x01,
|
// and (for now) MUST use a format that uses the same number of bits/bytes per pixel,
|
||||||
{ 8, Swizzled, _____AL8, XTL::D3DFMT_L8, "X_D3DFMT_AL8 -> D3DFMT_L8" }, // Cxbx NOTE: Hack: Alpha ignored, basically // TODO : Requires conversion
|
// as otherwise locked buffers wouldn't be of the same size as on the Xbox, which
|
||||||
// X_D3DFMT_A1R5G5B5 = 0x02,
|
// could lead to out-of-bounds access violations.
|
||||||
{ 16, Swizzled, A1R5G5B5, XTL::D3DFMT_A1R5G5B5 },
|
// * Each format for which the host D3D8 doesn't have an identical native format,
|
||||||
// X_D3DFMT_X1R5G5B5 = 0x03,
|
// and does specify color components (other than NoComponents), MUST specify this fact
|
||||||
{ 16, Swizzled, X1R5G5B5, XTL::D3DFMT_X1R5G5B5 },
|
// in the warning field, so EmuXBFormatRequiresConversionToARGB can return a conversion
|
||||||
// X_D3DFMT_A4R4G4B4 = 0x04,
|
// to ARGB is needed (which is implemented in EMUPATCH(D3DResource_Register).
|
||||||
{ 16, Swizzled, A4R4G4B4, XTL::D3DFMT_A4R4G4B4 },
|
|
||||||
// X_D3DFMT_R5G6B5 = 0x05,
|
/* 0x00 X_D3DFMT_L8 */ { 8, Swzzld, ______L8, XTL::D3DFMT_L8 },
|
||||||
{ 16, Swizzled, __R5G6B5, XTL::D3DFMT_R5G6B5 },
|
/* 0x01 X_D3DFMT_AL8 */ { 8, Swzzld, _____AL8, XTL::D3DFMT_L8, "X_D3DFMT_AL8 -> D3DFMT_L8" },
|
||||||
// X_D3DFMT_A8R8G8B8 = 0x06,
|
/* 0x02 X_D3DFMT_A1R5G5B5 */ { 16, Swzzld, A1R5G5B5, XTL::D3DFMT_A1R5G5B5 },
|
||||||
{ 32, Swizzled, A8R8G8B8, XTL::D3DFMT_A8R8G8B8 },
|
/* 0x03 X_D3DFMT_X1R5G5B5 */ { 16, Swzzld, X1R5G5B5, XTL::D3DFMT_X1R5G5B5 },
|
||||||
// X_D3DFMT_X8R8G8B8 = 0x07, // Alias : X_D3DFMT_X8L8V8U8
|
/* 0x04 X_D3DFMT_A4R4G4B4 */ { 16, Swzzld, A4R4G4B4, XTL::D3DFMT_A4R4G4B4 },
|
||||||
{ 32, Swizzled, X8R8G8B8, XTL::D3DFMT_X8R8G8B8 },
|
/* 0x05 X_D3DFMT_R5G6B5 */ { 16, Swzzld, __R5G6B5, XTL::D3DFMT_R5G6B5 },
|
||||||
// undefined : 0x08,
|
/* 0x06 X_D3DFMT_A8R8G8B8 */ { 32, Swzzld, A8R8G8B8, XTL::D3DFMT_A8R8G8B8 },
|
||||||
{ },
|
/* 0x07 X_D3DFMT_X8R8G8B8 */ { 32, Swzzld, X8R8G8B8, XTL::D3DFMT_X8R8G8B8 }, // Alias : X_D3DFMT_X8L8V8U8
|
||||||
// undefined : 0x09,
|
/* 0x08 undefined */ {},
|
||||||
{ },
|
/* 0x09 undefined */ {},
|
||||||
// undefined : 0x0A,
|
/* 0x0A undefined */ {},
|
||||||
{ },
|
/* 0x0B X_D3DFMT_P8 */ { 8, Swzzld, NoCmpnts, XTL::D3DFMT_P8 }, // 8-bit palletized
|
||||||
// X_D3DFMT_P8 = 0x0B, // 8-bit Palletized
|
/* 0x0C X_D3DFMT_DXT1 */ { 4, Cmprsd, NoCmpnts, XTL::D3DFMT_DXT1 }, // opaque/one-bit alpha // NOTE : DXT1 is half byte per pixel, so divide Size and Pitch calculations by two!
|
||||||
{ 8, Swizzled, NoComponents, XTL::D3DFMT_P8 },
|
// 0x0D undefined */ {},
|
||||||
// X_D3DFMT_DXT1 = 0x0C, // opaque/one-bit alpha
|
/* 0x0E X_D3DFMT_DXT3 */ { 8, Cmprsd, NoCmpnts, XTL::D3DFMT_DXT3 }, // Alias : X_D3DFMT_DXT2 // linear alpha
|
||||||
{ 4, Compressed, NoComponents, XTL::D3DFMT_DXT1 }, // NOTE : DXT1 is half byte per pixel, so divide Size and Pitch calculations by two!
|
/* 0x0F X_D3DFMT_DXT5 */ { 8, Cmprsd, NoCmpnts, XTL::D3DFMT_DXT5 }, // Alias : X_D3DFMT_DXT4 // interpolated alpha
|
||||||
// undefined : 0x0D,
|
/* 0x10 X_D3DFMT_LIN_A1R5G5B5 */ { 16, Linear, A1R5G5B5, XTL::D3DFMT_A1R5G5B5 },
|
||||||
{ },
|
/* 0x11 X_D3DFMT_LIN_R5G6B5 */ { 16, Linear, __R5G6B5, XTL::D3DFMT_R5G6B5 },
|
||||||
// X_D3DFMT_DXT3 = 0x0E, // linear alpha. Alias : X_D3DFMT_DXT2
|
/* 0x12 X_D3DFMT_LIN_A8R8G8B8 */ { 32, Linear, A8R8G8B8, XTL::D3DFMT_A8R8G8B8 },
|
||||||
{ 8, Compressed, NoComponents, XTL::D3DFMT_DXT3 },
|
/* 0x13 X_D3DFMT_LIN_L8 */ { 8, Linear, ______L8, XTL::D3DFMT_L8 },
|
||||||
// X_D3DFMT_DXT5 = 0x0F, // interpolated alpha. Alias : X_D3DFMT_DXT4
|
/* 0x14 undefined */ {},
|
||||||
{ 8, Compressed, NoComponents, XTL::D3DFMT_DXT5 },
|
/* 0x15 undefined */ {},
|
||||||
// X_D3DFMT_LIN_A1R5G5B5 = 0x10,
|
/* 0x16 X_D3DFMT_LIN_R8B8 */ { 16, Linear, ____R8B8, XTL::D3DFMT_R5G6B5, "X_D3DFMT_LIN_R8B8 -> D3DFMT_R5G6B5" },
|
||||||
{ 16, Linear, A1R5G5B5, XTL::D3DFMT_A1R5G5B5 },
|
/* 0x17 X_D3DFMT_LIN_G8B8 */ { 16, Linear, ____G8B8, XTL::D3DFMT_R5G6B5, "X_D3DFMT_LIN_G8B8 -> D3DFMT_R5G6B5" }, // Alias : X_D3DFMT_LIN_V8U8
|
||||||
// X_D3DFMT_LIN_R5G6B5 = 0x11,
|
// 0x18 undefined */ {},
|
||||||
{ 16, Linear, __R5G6B5, XTL::D3DFMT_R5G6B5 },
|
/* 0x19 X_D3DFMT_A8 */ { 8, Swzzld, ______A8, XTL::D3DFMT_A8 },
|
||||||
// X_D3DFMT_LIN_A8R8G8B8 = 0x12,
|
/* 0x1A X_D3DFMT_A8L8 */ { 16, Swzzld, ____A8L8, XTL::D3DFMT_A8L8 },
|
||||||
{ 32, Linear, A8R8G8B8, XTL::D3DFMT_A8R8G8B8 },
|
/* 0x1B X_D3DFMT_LIN_AL8 */ { 8, Linear, _____AL8, XTL::D3DFMT_L8, "X_D3DFMT_LIN_AL8 -> D3DFMT_L8" },
|
||||||
// X_D3DFMT_LIN_L8 = 0x13,
|
/* 0x1C X_D3DFMT_LIN_X1R5G5B5 */ { 16, Linear, X1R5G5B5, XTL::D3DFMT_X1R5G5B5 },
|
||||||
{ 8, Linear, ______L8, XTL::D3DFMT_L8 },
|
/* 0x1D X_D3DFMT_LIN_A4R4G4B4 */ { 16, Linear, A4R4G4B4, XTL::D3DFMT_A4R4G4B4 },
|
||||||
// undefined : 0x14,
|
/* 0x1E X_D3DFMT_LIN_X8R8G8B8 */ { 32, Linear, X8R8G8B8, XTL::D3DFMT_X8R8G8B8 }, // Alias : X_D3DFMT_LIN_X8L8V8U8
|
||||||
{ },
|
/* 0x1F X_D3DFMT_LIN_A8 */ { 8, Linear, ______A8, XTL::D3DFMT_A8 },
|
||||||
// undefined : 0x15,
|
/* 0x20 X_D3DFMT_LIN_A8L8 */ { 16, Linear, ____A8L8, XTL::D3DFMT_A8L8 },
|
||||||
{ },
|
/* 0x21 undefined */ {},
|
||||||
// X_D3DFMT_LIN_R8B8 = 0x16,
|
/* 0x22 undefined */ {},
|
||||||
{ 16, Linear, ____R8B8, XTL::D3DFMT_R5G6B5, "X_D3DFMT_LIN_R8B8 -> D3DFMT_R5G6B5" }, // Cxbx NOTE: HACK: Totally and utterly wrong :) // TODO : Requires conversion
|
/* 0x23 undefined */ {},
|
||||||
// X_D3DFMT_LIN_G8B8 = 0x17, // Alias : X_D3DFMT_LIN_V8U8
|
/* 0x24 X_D3DFMT_YUY2 */ { 16, Undfnd, NoCmpnts, XTL::D3DFMT_YUY2 },
|
||||||
{ 16, Linear, ____G8B8, XTL::D3DFMT_R5G6B5, "X_D3DFMT_LIN_G8B8 -> D3DFMT_R5G6B5" }, // Cxbx NOTE: HACK: Totally and utterly wrong :) // TODO : Requires conversion
|
/* 0x25 X_D3DFMT_UYVY */ { 16, Undfnd, NoCmpnts, XTL::D3DFMT_UYVY },
|
||||||
// undefined : 0x18,
|
// 0x26 undefined */ {},
|
||||||
{ },
|
/* 0x27 X_D3DFMT_L6V5U5 */ { 16, Swzzld, __R6G5B5, XTL::D3DFMT_L6V5U5 }, // Alias : X_D3DFMT_R6G5B5 // XQEMU NOTE : This might be signed
|
||||||
// X_D3DFMT_A8 = 0x19,
|
/* 0x28 X_D3DFMT_V8U8 */ { 16, Swzzld, ____G8B8, XTL::D3DFMT_V8U8 }, // Alias : X_D3DFMT_G8B8 // XQEMU NOTE : This might be signed
|
||||||
{ 8, Swizzled, ______A8, XTL::D3DFMT_A8 },
|
/* 0x29 X_D3DFMT_R8B8 */ { 16, Swzzld, ____R8B8, XTL::D3DFMT_R5G6B5, "X_D3DFMT_R8B8 -> D3DFMT_R5G6B5" }, // XQEMU NOTE : This might be signed
|
||||||
// X_D3DFMT_A8L8 = 0x1A,
|
/* 0x2A X_D3DFMT_D24S8 */ { 32, Swzzld, NoCmpnts, XTL::D3DFMT_D24S8 },
|
||||||
{ 16, Swizzled, ____A8L8, XTL::D3DFMT_A8L8 },
|
/* 0x2B X_D3DFMT_F24S8 */ { 32, Swzzld, NoCmpnts, XTL::D3DFMT_D24S8, "X_D3DFMT_F24S8 -> D3DFMT_D24S8" }, // HACK : PC doesn't have D3DFMT_F24S8 (Float vs Int)
|
||||||
// X_D3DFMT_LIN_AL8 = 0x1B,
|
/* 0x2C X_D3DFMT_D16 */ { 16, Swzzld, NoCmpnts, XTL::D3DFMT_D16 }, // Alias : X_D3DFMT_D16_LOCKABLE // TODO : D3DFMT_D16 is always lockable on Xbox; Should PC use D3DFMT_D16_LOCKABLE instead? Needs testcase.
|
||||||
{ 8, Linear, _____AL8, XTL::D3DFMT_L8, "X_D3DFMT_LIN_AL8 -> D3DFMT_L8" }, // Cxbx NOTE: Hack: Alpha ignored, basically // TODO : Requires conversion
|
/* 0x2D X_D3DFMT_F16 */ { 16, Swzzld, NoCmpnts, XTL::D3DFMT_D16, "X_D3DFMT_F16 -> D3DFMT_D16" }, // HACK : PC doesn't have D3DFMT_F16 (Float vs Int)
|
||||||
// X_D3DFMT_LIN_X1R5G5B5 = 0x1C,
|
/* 0x2E X_D3DFMT_LIN_D24S8 */ { 32, Linear, NoCmpnts, XTL::D3DFMT_D24S8 },
|
||||||
{ 16, Linear, X1R5G5B5, XTL::D3DFMT_X1R5G5B5 },
|
/* 0x2F X_D3DFMT_LIN_F24S8 */ { 32, Linear, NoCmpnts, XTL::D3DFMT_D24S8, "X_D3DFMT_LIN_F24S8 -> D3DFMT_D24S8" }, // HACK : PC doesn't have D3DFMT_F24S8 (Float vs Int)
|
||||||
// X_D3DFMT_LIN_A4R4G4B4 = 0x1D,
|
/* 0x30 X_D3DFMT_LIN_D16 */ { 16, Linear, NoCmpnts, XTL::D3DFMT_D16 }, // TODO : D3DFMT_D16 is always lockable on Xbox; Should PC use D3DFMT_D16_LOCKABLE instead? Needs testcase.
|
||||||
{ 16, Linear, A4R4G4B4, XTL::D3DFMT_A4R4G4B4 },
|
/* 0x31 X_D3DFMT_LIN_F16 */ { 16, Linear, NoCmpnts, XTL::D3DFMT_D16, "X_D3DFMT_LIN_F16 -> D3DFMT_D16" }, // HACK : PC doesn't have D3DFMT_F16 (Float vs Int)
|
||||||
// X_D3DFMT_LIN_X8R8G8B8 = 0x1E, // Alias : X_D3DFMT_LIN_X8L8V8U8
|
/* 0x32 X_D3DFMT_L16 */ { 16, Swzzld, _____L16, XTL::D3DFMT_A8L8, "X_D3DFMT_L16 -> D3DFMT_A8L8" },
|
||||||
{ 32, Linear, X8R8G8B8, XTL::D3DFMT_X8R8G8B8 },
|
/* 0x33 X_D3DFMT_V16U16 */ { 32, Swzzld, NoCmpnts, XTL::D3DFMT_V16U16 },
|
||||||
// X_D3DFMT_LIN_A8 = 0x1F,
|
// 0x34 undefined */ {},
|
||||||
{ 8, Linear, ______A8, XTL::D3DFMT_A8 },
|
/* 0x35 X_D3DFMT_LIN_L16 */ { 16, Linear, _____L16, XTL::D3DFMT_A8L8, "X_D3DFMT_LIN_L16 -> D3DFMT_A8L8" },
|
||||||
// X_D3DFMT_LIN_A8L8 = 0x20,
|
/* 0x36 X_D3DFMT_LIN_V16U16 */ { 32, Linear, NoCmpnts, XTL::D3DFMT_V16U16 },
|
||||||
{ 16, Linear, ____A8L8, XTL::D3DFMT_A8L8 },
|
/* 0x37 X_D3DFMT_LIN_L6V5U5 */ { 16, Linear, __R6G5B5, XTL::D3DFMT_L6V5U5 }, // Alias : X_D3DFMT_LIN_R6G5B5
|
||||||
// undefined : 0x21,
|
/* 0x38 X_D3DFMT_R5G5B5A1 */ { 16, Swzzld, R5G5B5A1, XTL::D3DFMT_A1R5G5B5, "X_D3DFMT_R5G5B5A1 -> D3DFMT_A1R5G5B5" },
|
||||||
{ },
|
/* 0x39 X_D3DFMT_R4G4B4A4 */ { 16, Swzzld, R4G4B4A4, XTL::D3DFMT_A4R4G4B4, "X_D3DFMT_R4G4B4A4 -> D3DFMT_A4R4G4B4" },
|
||||||
// undefined : 0x22,
|
/* 0x3A X_D3DFMT_Q8W8V8U8 */ { 32, Swzzld, A8B8G8R8, XTL::D3DFMT_Q8W8V8U8 }, // Alias : X_D3DFMT_A8B8G8R8 // TODO : Needs testcase.
|
||||||
{ },
|
/* 0x3B X_D3DFMT_B8G8R8A8 */ { 32, Swzzld, B8G8R8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_B8G8R8A8 -> D3DFMT_A8R8G8B8" },
|
||||||
// undefined : 0x23,
|
/* 0x3C X_D3DFMT_R8G8B8A8 */ { 32, Swzzld, R8G8B8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_R8G8B8A8 -> D3DFMT_A8R8G8B8" },
|
||||||
{ },
|
/* 0x3D X_D3DFMT_LIN_R5G5B5A1 */ { 16, Linear, R5G5B5A1, XTL::D3DFMT_A1R5G5B5, "X_D3DFMT_LIN_R5G5B5A1 -> D3DFMT_A1R5G5B5" },
|
||||||
// X_D3DFMT_YUY2 = 0x24,
|
/* 0x3E X_D3DFMT_LIN_R4G4B4A4 */ { 16, Linear, R4G4B4A4, XTL::D3DFMT_A4R4G4B4, "X_D3DFMT_LIN_R4G4B4A4 -> D3DFMT_A4R4G4B4" },
|
||||||
{ 16, Undefined, NoComponents, XTL::D3DFMT_YUY2 },
|
/* 0x3F X_D3DFMT_LIN_A8B8G8R8 */ { 32, Linear, A8B8G8R8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_LIN_A8B8G8R8 -> D3DFMT_A8R8G8B8" },
|
||||||
// X_D3DFMT_UYVY = 0x25,
|
/* 0x40 X_D3DFMT_LIN_B8G8R8A8 */ { 32, Linear, B8G8R8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_LIN_B8G8R8A8 -> D3DFMT_A8R8G8B8" },
|
||||||
{ 16, Undefined, NoComponents, XTL::D3DFMT_UYVY },
|
/* 0x41 X_D3DFMT_LIN_R8G8B8A8 */ { 32, Linear, R8G8B8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_LIN_R8G8B8A8 -> D3DFMT_A8R8G8B8" },
|
||||||
// undefined : 0x26,
|
#if 0
|
||||||
{ },
|
/* 0x42 to 0x63 undefined */ {},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},
|
||||||
// X_D3DFMT_L6V5U5 = 0x27, // Alias : X_D3DFMT_R6G5B5
|
/* 0x64 X_D3DFMT_VERTEXDATA */ { 8, Linear, NoCmpnts, XTL::D3DFMT_VERTEXDATA },
|
||||||
{ 16, Swizzled, __R6G5B5, XTL::D3DFMT_L6V5U5 }, // XQEMU NOTE: This might be signed
|
/* 0x65 X_D3DFMT_INDEX16 */ { 16, Linear, NoCmpnts, XTL::D3DFMT_INDEX16 }, // Dxbx addition : X_D3DFMT_INDEX16 is not an Xbox format, but used internally
|
||||||
// X_D3DFMT_V8U8 = 0x28, // Alias : X_D3DFMT_G8B8
|
#endif
|
||||||
{ 16, Swizzled, ____G8B8, XTL::D3DFMT_V8U8 }, // XQEMU NOTE: This might be signed
|
|
||||||
// X_D3DFMT_R8B8 = 0x29,
|
|
||||||
{ 16, Swizzled, ____R8B8, XTL::D3DFMT_R5G6B5, "X_D3DFMT_R8B8 -> D3DFMT_R5G6B5" }, // Cxbx NOTE: HACK: Totally and utterly wrong, // XQEMU NOTE : This might be signed // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_D24S8 = 0x2A,
|
|
||||||
{ 32, Swizzled, NoComponents, XTL::D3DFMT_D24S8 },
|
|
||||||
// X_D3DFMT_F24S8 = 0x2B,
|
|
||||||
{ 32, Swizzled, NoComponents, XTL::D3DFMT_D24S8, "X_D3DFMT_F24S8 -> D3DFMT_D24S8" }, // NOTE: Hack!! PC does not have XTL::D3DFMT_F24S8 (Float vs Int)
|
|
||||||
// X_D3DFMT_D16 = 0x2C, // Alias : X_D3DFMT_D16_LOCKABLE
|
|
||||||
{ 16, Swizzled, NoComponents, XTL::D3DFMT_D16 }, // TODO -oCXBX: XTL::D3DFMT_D16 on Xbox is always lockable - Should we use XTL::D3DFMT_D16_LOCKABLE instead? Needs testcase...
|
|
||||||
// X_D3DFMT_F16 = 0x2D,
|
|
||||||
{ 16, Swizzled, NoComponents, XTL::D3DFMT_D16, "X_D3DFMT_F16 -> D3DFMT_D16" }, // NOTE: Hack!! PC does not have XTL::D3DFMT_F16 (Float vs Int)
|
|
||||||
// X_D3DFMT_LIN_D24S8 = 0x2E,
|
|
||||||
{ 32, Linear, NoComponents, XTL::D3DFMT_D24S8 },
|
|
||||||
// X_D3DFMT_LIN_F24S8 = 0x2F,
|
|
||||||
{ 32, Linear, NoComponents, XTL::D3DFMT_D24S8, "X_D3DFMT_LIN_F24S8 -> D3DFMT_D24S8" }, // NOTE: Hack!! PC does not have XTL::D3DFMT_F24S8 (Float vs Int)
|
|
||||||
// X_D3DFMT_LIN_D16 = 0x30,
|
|
||||||
{ 16, Linear, NoComponents, XTL::D3DFMT_D16 }, // TODO -oCXBX: XTL::D3DFMT_D16 on Xbox is always lockable - Should we use XTL::D3DFMT_D16_LOCKABLE instead? Needs testcase...
|
|
||||||
// X_D3DFMT_LIN_F16 = 0x31,
|
|
||||||
{ 16, Linear, NoComponents, XTL::D3DFMT_D16, "X_D3DFMT_LIN_F16 -> D3DFMT_D16" }, // NOTE: Hack!! PC does not have XTL::D3DFMT_F16 (Float vs Int)
|
|
||||||
// X_D3DFMT_L16 = 0x32,
|
|
||||||
{ 16, Swizzled, _____L16, XTL::D3DFMT_A8L8, "X_D3DFMT_L16 -> D3DFMT_A8L8" }, // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_V16U16 = 0x33,
|
|
||||||
{ 32, Swizzled, NoComponents, XTL::D3DFMT_V16U16 },
|
|
||||||
// undefined : 0x34,
|
|
||||||
{ },
|
|
||||||
// X_D3DFMT_LIN_L16 = 0x35,
|
|
||||||
{ 16, Linear, _____L16, XTL::D3DFMT_A8L8, "X_D3DFMT_L16 -> D3DFMT_A8L8" }, // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_LIN_V16U16 = 0x36,
|
|
||||||
{ 32, Linear, NoComponents, XTL::D3DFMT_V16U16 },
|
|
||||||
// X_D3DFMT_LIN_L6V5U5 = 0x37, // Alias : X_D3DFMT_LIN_R6G5B5
|
|
||||||
{ 16, Linear, __R6G5B5, XTL::D3DFMT_L6V5U5 },
|
|
||||||
// X_D3DFMT_R5G5B5A1 = 0x38,
|
|
||||||
{ 16, Swizzled, R5G5B5A1, XTL::D3DFMT_A1R5G5B5, "X_D3DFMT_R5G5B5A1 -> D3DFMT_A1R5G5B5" }, // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_R4G4B4A4 = 0x39,
|
|
||||||
{ 16, Swizzled, R4G4B4A4, XTL::D3DFMT_A4R4G4B4, "X_D3DFMT_R4G4B4A4 -> D3DFMT_A4R4G4B4" }, // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_Q8W8V8U8 = 0x3A, // Alias : X_D3DFMT_A8B8G8R8
|
|
||||||
{ 32, Swizzled, A8B8G8R8, XTL::D3DFMT_Q8W8V8U8 }, // Was : D3DFMT_A8R8G8B8 // TODO : Test
|
|
||||||
// X_D3DFMT_B8G8R8A8 = 0x3B,
|
|
||||||
{ 32, Swizzled, B8G8R8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_B8G8R8A8 -> D3DFMT_A8R8G8B8" }, // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_R8G8B8A8 = 0x3C,
|
|
||||||
{ 32, Swizzled, R8G8B8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_R8G8B8A8 -> D3DFMT_A8R8G8B8" }, // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_LIN_R5G5B5A1 = 0x3D,
|
|
||||||
{ 16, Linear, R5G5B5A1, XTL::D3DFMT_A1R5G5B5, "X_D3DFMT_LIN_R5G5B5A1 -> D3DFMT_A1R5G5B5" }, // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_LIN_R4G4B4A4 = 0x3E,
|
|
||||||
{ 16, Linear, R4G4B4A4, XTL::D3DFMT_A4R4G4B4, "X_D3DFMT_LIN_R4G4B4A4 -> D3DFMT_A4R4G4B4" }, // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_LIN_A8B8G8R8 = 0x3F,
|
|
||||||
{ 32, Linear, A8B8G8R8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_LIN_A8B8G8R8 -> D3DFMT_A8R8G8B8" }, // Cxbx NOTE: HACK: R<->B Swapped! // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_LIN_B8G8R8A8 = 0x40,
|
|
||||||
{ 32, Linear, B8G8R8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_LIN_B8G8R8A8 -> D3DFMT_A8R8G8B8" }, // TODO : Requires conversion
|
|
||||||
// X_D3DFMT_LIN_R8G8B8A8 = 0x41,
|
|
||||||
{ 32, Linear, R8G8B8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_LIN_R8G8B8A8 -> D3DFMT_A8R8G8B8" }, // TODO : Requires conversion
|
|
||||||
/*
|
|
||||||
// undefined : 0x42-0x63
|
|
||||||
{},
|
|
||||||
// X_D3DFMT_VERTEXDATA = 0x64,
|
|
||||||
{ 8, Linear, NoComponents, XTL::D3DFMT_VERTEXDATA },
|
|
||||||
// Dxbx addition : X_D3DFMT_INDEX16 is not an Xbox format, but used internally
|
|
||||||
// X_D3DFMT_INDEX16 = 0x65
|
|
||||||
{ 16, Linear, NoComponents, XTL::D3DFMT_INDEX16 },
|
|
||||||
*/
|
|
||||||
};
|
};
|
||||||
|
|
||||||
XTL::D3DCOLOR XTL::DecodeUInt32ToColor(const ComponentEncodingInfo * encoding, const uint32 value)
|
XTL::D3DCOLOR XTL::DecodeUInt32ToColor(const ComponentEncodingInfo * encoding, const uint32 value)
|
||||||
|
@ -274,7 +214,7 @@ XTL::D3DCOLOR XTL::DecodeUInt32ToColor(const ComponentEncodingInfo * encoding, c
|
||||||
const XTL::ComponentEncodingInfo *XTL::EmuXBFormatComponentEncodingInfo(X_D3DFORMAT Format)
|
const XTL::ComponentEncodingInfo *XTL::EmuXBFormatComponentEncodingInfo(X_D3DFORMAT Format)
|
||||||
{
|
{
|
||||||
if (Format <= X_D3DFMT_LIN_R8G8B8A8)
|
if (Format <= X_D3DFMT_LIN_R8G8B8A8)
|
||||||
if (FormatInfos[Format].components != NoComponents)
|
if (FormatInfos[Format].components != NoCmpnts)
|
||||||
return &(ComponentEncodingInfos[FormatInfos[Format].components]);
|
return &(ComponentEncodingInfos[FormatInfos[Format].components]);
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -308,7 +248,7 @@ DWORD XTL::EmuXBFormatBytesPerPixel(X_D3DFORMAT Format)
|
||||||
BOOL XTL::EmuXBFormatIsCompressed(X_D3DFORMAT Format)
|
BOOL XTL::EmuXBFormatIsCompressed(X_D3DFORMAT Format)
|
||||||
{
|
{
|
||||||
if (Format <= X_D3DFMT_LIN_R8G8B8A8)
|
if (Format <= X_D3DFMT_LIN_R8G8B8A8)
|
||||||
return (FormatInfos[Format].stored == Compressed);
|
return (FormatInfos[Format].stored == Cmprsd);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -324,7 +264,7 @@ BOOL XTL::EmuXBFormatIsLinear(X_D3DFORMAT Format)
|
||||||
BOOL XTL::EmuXBFormatIsSwizzled(X_D3DFORMAT Format)
|
BOOL XTL::EmuXBFormatIsSwizzled(X_D3DFORMAT Format)
|
||||||
{
|
{
|
||||||
if (Format <= X_D3DFMT_LIN_R8G8B8A8)
|
if (Format <= X_D3DFMT_LIN_R8G8B8A8)
|
||||||
return (FormatInfos[Format].stored == Swizzled);
|
return (FormatInfos[Format].stored == Swzzld);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue