Instead of having to deal with unsupported formats, lets just remove the whole EmuPC2XB_D3DFormat function, as there was only 1 place remaining that called it, which selected the input format just a few lines earlier. So instead, just select the Xbox format and skip the whole intermediate format type. We should have done that from the start...
This commit is contained in:
parent
81b5380206
commit
1fec9fa344
|
@ -1,4 +1,102 @@
|
|||
// ensure a given width/height are powers of 2
|
||||
// convert from pc to xbox color formats
|
||||
//extern
|
||||
xbox::X_D3DFORMAT EmuPC2XB_D3DFormat(CXBXFORMAT Format, bool bPreferLinear = true);
|
||||
{
|
||||
xbox::X_D3DFORMAT result;
|
||||
switch(Format)
|
||||
{
|
||||
case CXBXFMT_YUY2:
|
||||
result = xbox::X_D3DFMT_YUY2;
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_UYVY:
|
||||
result = xbox::X_D3DFMT_UYVY;
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_R5G6B5:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_R5G6B5 : xbox::X_D3DFMT_R5G6B5;
|
||||
break;
|
||||
case CXBXFMT_D24S8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_D24S8 : xbox::X_D3DFMT_D24S8;
|
||||
break;
|
||||
case CXBXFMT_DXT5:
|
||||
result = xbox::X_D3DFMT_DXT5; // Compressed
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_DXT4:
|
||||
result = xbox::X_D3DFMT_DXT4; // Compressed // Same as xbox::X_D3DFMT_DXT5
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_DXT3:
|
||||
result = xbox::X_D3DFMT_DXT3; // Compressed
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_DXT2:
|
||||
result = xbox::X_D3DFMT_DXT2; // Compressed // Same as xbox::X_D3DFMT_DXT3
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_DXT1:
|
||||
result = xbox::X_D3DFMT_DXT1; // Compressed
|
||||
break;
|
||||
case CXBXFMT_A1R5G5B5:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_A1R5G5B5 : xbox::X_D3DFMT_A1R5G5B5;
|
||||
break;
|
||||
case CXBXFMT_X8R8G8B8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_X8R8G8B8 : xbox::X_D3DFMT_X8R8G8B8;
|
||||
break;
|
||||
case CXBXFMT_A8R8G8B8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_A8R8G8B8 : xbox::X_D3DFMT_A8R8G8B8;
|
||||
break;
|
||||
case CXBXFMT_A4R4G4B4:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_A4R4G4B4 : xbox::X_D3DFMT_A4R4G4B4;
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Note : CXBXFMT_A1R5G5B5 maps to same DXGI_FORMAT_B5G5R5A1_UNORM
|
||||
case CXBXFMT_X1R5G5B5:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_X1R5G5B5 : xbox::X_D3DFMT_X1R5G5B5;
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_A8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_A8 : xbox::X_D3DFMT_A8;
|
||||
break;
|
||||
case CXBXFMT_L8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_L8 : xbox::X_D3DFMT_L8;
|
||||
break;
|
||||
case CXBXFMT_D16:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_D16 : xbox::X_D3DFMT_D16;
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_D16_LOCKABLE:
|
||||
result = xbox::X_D3DFMT_D16_LOCKABLE;
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_UNKNOWN:
|
||||
result = ((xbox::X_D3DFORMAT)0xffffffff); // TODO : return xbox::X_D3DFMT_UNKNOWN ?
|
||||
break;
|
||||
// Dxbx additions :
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_L6V5U5:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_L6V5U5 : xbox::X_D3DFMT_L6V5U5;
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_V8U8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_V8U8 : xbox::X_D3DFMT_V8U8;
|
||||
break;
|
||||
case CXBXFMT_V16U16:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_V16U16 : xbox::X_D3DFMT_V16U16;
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_VERTEXDATA:
|
||||
result = xbox::X_D3DFMT_VERTEXDATA;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
CxbxrAbort("EmuPC2XB_D3DFormat: Unknown Format (%d)", Format);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// ensure a given width/height are powers of 2
|
||||
static void EmuAdjustPower2(UINT *dwWidth, UINT *dwHeight)
|
||||
{
|
||||
UINT NewWidth=0, NewHeight=0;
|
||||
|
|
|
@ -1058,102 +1058,6 @@ CXBXFORMAT EmuXB2PC_D3DFormat(xbox::X_D3DFORMAT Format)
|
|||
return CXBXFMT_UNKNOWN;
|
||||
}
|
||||
|
||||
xbox::X_D3DFORMAT EmuPC2XB_D3DFormat(CXBXFORMAT Format, bool bPreferLinear)
|
||||
{
|
||||
xbox::X_D3DFORMAT result;
|
||||
switch(Format)
|
||||
{
|
||||
case CXBXFMT_YUY2:
|
||||
result = xbox::X_D3DFMT_YUY2;
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_UYVY:
|
||||
result = xbox::X_D3DFMT_UYVY;
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_R5G6B5:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_R5G6B5 : xbox::X_D3DFMT_R5G6B5;
|
||||
break;
|
||||
case CXBXFMT_D24S8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_D24S8 : xbox::X_D3DFMT_D24S8;
|
||||
break;
|
||||
case CXBXFMT_DXT5:
|
||||
result = xbox::X_D3DFMT_DXT5; // Compressed
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_DXT4:
|
||||
result = xbox::X_D3DFMT_DXT4; // Compressed // Same as xbox::X_D3DFMT_DXT5
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_DXT3:
|
||||
result = xbox::X_D3DFMT_DXT3; // Compressed
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_DXT2:
|
||||
result = xbox::X_D3DFMT_DXT2; // Compressed // Same as xbox::X_D3DFMT_DXT3
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_DXT1:
|
||||
result = xbox::X_D3DFMT_DXT1; // Compressed
|
||||
break;
|
||||
case CXBXFMT_A1R5G5B5:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_A1R5G5B5 : xbox::X_D3DFMT_A1R5G5B5;
|
||||
break;
|
||||
case CXBXFMT_X8R8G8B8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_X8R8G8B8 : xbox::X_D3DFMT_X8R8G8B8;
|
||||
break;
|
||||
case CXBXFMT_A8R8G8B8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_A8R8G8B8 : xbox::X_D3DFMT_A8R8G8B8;
|
||||
break;
|
||||
case CXBXFMT_A4R4G4B4:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_A4R4G4B4 : xbox::X_D3DFMT_A4R4G4B4;
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Note : CXBXFMT_A1R5G5B5 maps to same DXGI_FORMAT_B5G5R5A1_UNORM
|
||||
case CXBXFMT_X1R5G5B5:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_X1R5G5B5 : xbox::X_D3DFMT_X1R5G5B5;
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_A8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_A8 : xbox::X_D3DFMT_A8;
|
||||
break;
|
||||
case CXBXFMT_L8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_L8 : xbox::X_D3DFMT_L8;
|
||||
break;
|
||||
case CXBXFMT_D16:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_D16 : xbox::X_D3DFMT_D16;
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_D16_LOCKABLE:
|
||||
result = xbox::X_D3DFMT_D16_LOCKABLE;
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_UNKNOWN:
|
||||
result = ((xbox::X_D3DFORMAT)0xffffffff); // TODO : return xbox::X_D3DFMT_UNKNOWN ?
|
||||
break;
|
||||
// Dxbx additions :
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_L6V5U5:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_L6V5U5 : xbox::X_D3DFMT_L6V5U5;
|
||||
break;
|
||||
#endif
|
||||
case CXBXFMT_V8U8:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_V8U8 : xbox::X_D3DFMT_V8U8;
|
||||
break;
|
||||
case CXBXFMT_V16U16:
|
||||
result = bPreferLinear ? xbox::X_D3DFMT_LIN_V16U16 : xbox::X_D3DFMT_V16U16;
|
||||
break;
|
||||
#ifndef CXBX_USE_D3D11 // Mapped to DXGI_FORMAT_NOT_AVAILABLE
|
||||
case CXBXFMT_VERTEXDATA:
|
||||
result = xbox::X_D3DFMT_VERTEXDATA;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
CxbxrAbort("EmuPC2XB_D3DFormat: Unknown Format (%d)", Format);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
DWORD EmuXB2PC_D3DLock(DWORD Flags)
|
||||
{
|
||||
DWORD NewFlags = 0;
|
||||
|
|
|
@ -73,9 +73,6 @@ extern BOOL EmuXBFormatIsDepthBuffer(xbox::X_D3DFORMAT Format);
|
|||
// convert from xbox to pc color formats
|
||||
extern CXBXFORMAT EmuXB2PC_D3DFormat(xbox::X_D3DFORMAT Format);
|
||||
|
||||
// convert from pc to xbox color formats
|
||||
extern xbox::X_D3DFORMAT EmuPC2XB_D3DFormat(CXBXFORMAT Format, bool bPreferLinear = true);
|
||||
|
||||
// convert from xbox to pc d3d lock flags
|
||||
extern DWORD EmuXB2PC_D3DLock(DWORD Flags);
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
#include "common\xbe\XbePrinter.h" // For DumpInformation
|
||||
#include "EmuShared.h"
|
||||
#include "core\hle\D3D8\Direct3D9\Direct3D9.h" // For CxbxSetPixelContainerHeader
|
||||
#include "core\hle\D3D8\XbConvert.h" // For EmuPC2XB_D3DFormat
|
||||
#include "common\Settings.hpp"
|
||||
#include "common/util/cliConfig.hpp"
|
||||
#include "common/win32/WineEnv.h"
|
||||
|
@ -1502,19 +1501,19 @@ void WndMain::LoadGameLogo()
|
|||
switch (*(DWORD*)pSection) {
|
||||
case MAKEFOURCC('D', 'D', 'S', ' '): {
|
||||
DDS_HEADER *pDDSHeader = (DDS_HEADER *)(pSection + sizeof(DWORD));
|
||||
CXBXFORMAT Format = CXBXFMT_UNKNOWN;
|
||||
xbox::X_D3DFORMAT XbFormat = xbox::X_D3DFMT_UNKNOWN;
|
||||
if (pDDSHeader->ddspf.dwFlags & DDPF_FOURCC) {
|
||||
switch (pDDSHeader->ddspf.dwFourCC) {
|
||||
case MAKEFOURCC('D', 'X', 'T', '1'): Format = CXBXFMT_DXT1; break;
|
||||
case MAKEFOURCC('D', 'X', 'T', '3'): Format = CXBXFMT_DXT3; break;
|
||||
case MAKEFOURCC('D', 'X', 'T', '5'): Format = CXBXFMT_DXT5; break;
|
||||
case MAKEFOURCC('D', 'X', 'T', '1'): XbFormat = xbox::X_D3DFMT_DXT1; break;
|
||||
case MAKEFOURCC('D', 'X', 'T', '3'): XbFormat = xbox::X_D3DFMT_DXT3; break;
|
||||
case MAKEFOURCC('D', 'X', 'T', '5'): XbFormat = xbox::X_D3DFMT_DXT5; break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// TODO : Determine D3D format based on pDDSHeader->ddspf.dwABitMask, .dwRBitMask, .dwGBitMask and .dwBBitMask
|
||||
}
|
||||
|
||||
if (Format == CXBXFMT_UNKNOWN)
|
||||
if (XbFormat == xbox::X_D3DFMT_UNKNOWN)
|
||||
return;
|
||||
|
||||
ImageData = (uint8_t *)(pSection + sizeof(DWORD) + pDDSHeader->dwSize);
|
||||
|
@ -1527,7 +1526,7 @@ void WndMain::LoadGameLogo()
|
|||
(UINT)pDDSHeader->dwWidth,
|
||||
(UINT)pDDSHeader->dwHeight,
|
||||
1,
|
||||
EmuPC2XB_D3DFormat(Format),
|
||||
XbFormat,
|
||||
2,
|
||||
(UINT)pDDSHeader->dwPitchOrLinearSize);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue