Merged master fixes into D3DFormat branch

This commit is contained in:
PatrickvL 2017-04-06 13:13:01 +02:00
commit a0e3b13546
1 changed files with 26 additions and 15 deletions

View File

@ -107,7 +107,8 @@ static const FormatInfo FormatInfos[] = {
// X_D3DFMT_L8 = 0x00,
{ 8, Swizzled, NoComponents, XTL::D3DFMT_L8 },
// X_D3DFMT_AL8 = 0x01,
{ 8, Swizzled, NoComponents, XTL::D3DFMT_A4L4, "X_D3DFMT_AL8 -> D3DFMT_A4L4" }, // Was : D3DFMT_A8 // Cxbx NOTE: Hack: Alpha ignored, basically
{ 8, Swizzled, NoComponents, XTL::D3DFMT_L8, "X_D3DFMT_AL8 -> D3DFMT_L8" }, // Cxbx NOTE: Hack: Alpha ignored, basically
// TODO : { 8, Swizzled, _____AL8, XTL::D3DFMT_A8L8, "X_D3DFMT_AL8 -> D3DFMT_A8L8" }, // Was : D3DFMT_L8 // TODO : Requires conversion
// X_D3DFMT_A1R5G5B5 = 0x02,
{ 16, Swizzled, A1R5G5B5, XTL::D3DFMT_A1R5G5B5 },
// X_D3DFMT_X1R5G5B5 = 0x03,
@ -143,7 +144,8 @@ static const FormatInfo FormatInfos[] = {
// X_D3DFMT_LIN_A8R8G8B8 = 0x12,
{ 32, Linear, A8R8G8B8, XTL::D3DFMT_A8R8G8B8 },
// X_D3DFMT_LIN_L8 = 0x13,
{ 8, Linear, NoComponents, XTL::D3DFMT_L8 },
{ 8, Linear, NoComponents, XTL::D3DFMT_UNKNOWN },
// TODO : { 8, Linear, ______L8, XTL::D3DFMT_L8 },
// undefined : 0x14,
{ },
// undefined : 0x15,
@ -160,7 +162,8 @@ static const FormatInfo FormatInfos[] = {
{ 16, Swizzled, NoComponents, XTL::D3DFMT_R5G6B5, "X_D3DFMT_A8L8 -> D3DFMT_R5G6B5" }, // Cxbx NOTE: HACK: Totally and utterly wrong :)
// TODO : { 16, Swizzled, NoComponents, XTL::D3DFMT_A8L8 },
// X_D3DFMT_LIN_AL8 = 0x1B,
{ 8, Linear, NoComponents, XTL::D3DFMT_A4L4, "X_D3DFMT_LIN_AL8 -> D3DFMT_A4L4" },
{ 8, Linear, NoComponents, XTL::D3DFMT_UNKNOWN },
// TODO : { 8, Linear, _____AL8, XTL::D3DFMT_A8L8, "X_D3DFMT_LIN_AL8 -> D3DFMT_A8L8" }, // Was : D3DFMT_L8 // TODO : Requires conversion
// X_D3DFMT_LIN_X1R5G5B5 = 0x1C,
{ 16, Linear, X1R5G5B5, XTL::D3DFMT_X1R5G5B5 },
// X_D3DFMT_LIN_A4R4G4B4 = 0x1D,
@ -168,9 +171,11 @@ static const FormatInfo FormatInfos[] = {
// X_D3DFMT_LIN_X8R8G8B8 = 0x1E, // Alias : X_D3DFMT_LIN_X8L8V8U8
{ 32, Linear, X8R8G8B8, XTL::D3DFMT_X8R8G8B8 },
// X_D3DFMT_LIN_A8 = 0x1F,
{ 8, Linear, A8______, XTL::D3DFMT_A8 },
{ 8, Linear, A8______, XTL::D3DFMT_L8 },
// TODO : { 8, Linear, ______A8, XTL::D3DFMT_A8 },
// X_D3DFMT_LIN_A8L8 = 0x20,
{ 16, Linear, NoComponents, XTL::D3DFMT_A8L8 },
{ 16, Linear, NoComponents, XTL::D3DFMT_UNKNOWN },
// TODO : { 16, Linear, ____A8L8, XTL::D3DFMT_A8L8 },
// undefined : 0x21,
{ },
// undefined : 0x22,
@ -178,11 +183,11 @@ static const FormatInfo FormatInfos[] = {
// undefined : 0x23,
{ },
// X_D3DFMT_YUY2 = 0x24,
{ 8, Undefined, NoComponents, XTL::D3DFMT_YUY2 },
{ 16, Undefined, NoComponents, XTL::D3DFMT_YUY2 },
// X_D3DFMT_UYVY = 0x25,
{ 16, Undefined, NoComponents, XTL::D3DFMT_UYVY },
// undefined : 0x26,
{ },
{ 8, Undefined, NoComponents, XTL::D3DFMT_UYVY },
// X_D3DFMT_L6V5U5 = 0x27, // Alias : X_D3DFMT_R6G5B5
{ 16, Swizzled, __R6G5B5, XTL::D3DFMT_L6V5U5 }, // XQEMU NOTE: This might be signed
// X_D3DFMT_V8U8 = 0x28, // Alias : X_D3DFMT_G8B8
@ -214,19 +219,24 @@ static const FormatInfo FormatInfos[] = {
// X_D3DFMT_LIN_L16 = 0x35,
{ 16, Linear, NoComponents, XTL::D3DFMT_UNKNOWN },
// X_D3DFMT_LIN_V16U16 = 0x36,
{ 32, Linear, NoComponents, XTL::D3DFMT_V16U16 },
{ 32, Linear, NoComponents, XTL::D3DFMT_UNKNOWN },
// TODO : { 32, Linear, NoComponents, XTL::D3DFMT_V16U16 },
// X_D3DFMT_LIN_L6V5U5 = 0x37, // Alias : X_D3DFMT_LIN_R6G5B5
{ 16, Linear, __R6G5B5, XTL::D3DFMT_L6V5U5 }, // Untested...
{ 16, Linear, __R6G5B5, XTL::D3DFMT_UNKNOWN },
// TODO : { 16, Linear, __R6G5B5, XTL::D3DFMT_L6V5U5 },
// X_D3DFMT_R5G5B5A1 = 0x38,
{ 16, Swizzled, R5G5B5A1, XTL::D3DFMT_A1R5G5B5, "X_D3DFMT_R5G5B5A1 -> D3DFMT_A1R5G5B5" }, // TODO : Requires conversion
{ 16, Swizzled, R5G5B5A1, XTL::D3DFMT_UNKNOWN },
// TODO : { 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
{ 16, Swizzled, R4G4B4A4, XTL::D3DFMT_UNKNOWN },
// TODO : { 16, Swizzled, R4G4B4A4, XTL::D3DFMT_A4R4G4B4, "X_D3DFMT_R4G4B4A4 -> D3DFMT_A4R4G4B4" }, // TODO : Requires conversion
// X_D3DFMT_A8B8G8R8 = 0x3A, // Alias : X_D3DFMT_Q8W8V8U8
{ 32, Swizzled, A8B8G8R8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_A8B8G8R8 -> D3DFMT_A8R8G8B8" }, // Cxbx NOTE: HACK: R<->B Swapped!
// TODO : // X_D3DFMT_Q8W8V8U8 = 0x3A, // Alias : X_D3DFMT_A8B8G8R8
// TODO : { 32, Swizzled, NoComponents, XTL::D3DFMT_Q8W8V8U8 }, // Untested...
// X_D3DFMT_B8G8R8A8 = 0x3B,
{ 32, Swizzled, B8G8R8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_B8G8R8A8 -> D3DFMT_A8R8G8B8" }, // TODO : Requires conversion
{ 32, Swizzled, B8G8R8A8, XTL::D3DFMT_UNKNOWN },
// TODO : { 32, Swizzled, B8G8R8A8, XTL::D3DFMT_A8R8G8B8, "X_D3DFMT_B8G8R8A8 -> D3DFMT_A8R8G8B8" }, // TODO : Requires conversion
// X_D3DFMT_R8G8B8A8 = 0x3C,
{ 32, Swizzled, R8G8B8A8, XTL::D3DFMT_UNKNOWN },
// X_D3DFMT_LIN_R5G5B5A1 = 0x3D,
@ -272,9 +282,10 @@ const XTL::ComponentEncodingInfo *XTL::EmuXBFormatComponentEncodingInfo(X_D3DFOR
DWORD XTL::EmuXBFormatBitsPerPixel(X_D3DFORMAT Format)
{
if (Format <= X_D3DFMT_LIN_R8G8B8A8)
return FormatInfos[Format].bits_per_pixel;
if (FormatInfos[Format].bits_per_pixel > 0) // TODO : Remove this
return FormatInfos[Format].bits_per_pixel;
return 8;
return 16; // TODO : 8
}
DWORD XTL::EmuXBFormatBytesPerPixel(X_D3DFORMAT Format)
@ -295,7 +306,7 @@ BOOL XTL::EmuXBFormatIsLinear(X_D3DFORMAT Format)
if (Format <= X_D3DFMT_LIN_R8G8B8A8)
return (FormatInfos[Format].stored == Linear);
return false;
return (Format == X_D3DFMT_VERTEXDATA); // TODO : false;
}
BOOL XTL::EmuXBFormatIsSwizzled(X_D3DFORMAT Format)