1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

add fallback solution for rgb555 texture format issues

This commit is contained in:
FunkyFr3sh 2023-10-21 06:27:59 +02:00
parent 4da01c3683
commit 5fc3764253
2 changed files with 44 additions and 12 deletions

View File

@ -1441,7 +1441,7 @@ HRESULT dd_CreateEx(GUID* lpGuid, LPVOID* lplpDD, REFIID iid, IUnknown* pUnkOute
TRACE(" proc_affinity=%08X, system_affinity=%08X\n", proc_affinity, system_affinity); TRACE(" proc_affinity=%08X, system_affinity=%08X\n", proc_affinity, system_affinity);
} }
if (_strcmpi(g_config.renderer, "direct3d9on12") == 0) if (_strcmpi(g_config.renderer, "direct3d9on12") == 0)
{ {
g_ddraw->d3d9on12 = TRUE; g_ddraw->d3d9on12 = TRUE;

View File

@ -275,17 +275,49 @@ static BOOL d3d9_create_resources()
for (int i = 0; i < D3D9_TEXTURE_COUNT; i++) for (int i = 0; i < D3D9_TEXTURE_COUNT; i++)
{ {
err = err || FAILED( if (g_ddraw->bpp == 16 && g_config.rgb555)
IDirect3DDevice9_CreateTexture( {
g_d3d9.device, BOOL error = FAILED(
g_d3d9.tex_width, IDirect3DDevice9_CreateTexture(
g_d3d9.tex_height, g_d3d9.device,
1, g_d3d9.tex_width,
0, g_d3d9.tex_height,
g_ddraw->bpp == 16 ? (g_config.rgb555 ? D3DFMT_X1R5G5B5 : D3DFMT_R5G6B5) : g_ddraw->bpp == 32 ? D3DFMT_X8R8G8B8 : D3DFMT_L8, 1,
D3DPOOL_MANAGED, 0,
&g_d3d9.surface_tex[i], D3DFMT_X1R5G5B5,
0)); D3DPOOL_MANAGED,
&g_d3d9.surface_tex[i],
0));
if (error)
{
err = err || FAILED(
IDirect3DDevice9_CreateTexture(
g_d3d9.device,
g_d3d9.tex_width,
g_d3d9.tex_height,
1,
0,
D3DFMT_A1R5G5B5,
D3DPOOL_MANAGED,
&g_d3d9.surface_tex[i],
0));
}
}
else
{
err = err || FAILED(
IDirect3DDevice9_CreateTexture(
g_d3d9.device,
g_d3d9.tex_width,
g_d3d9.tex_height,
1,
0,
g_ddraw->bpp == 16 ? D3DFMT_R5G6B5 : g_ddraw->bpp == 32 ? D3DFMT_X8R8G8B8 : D3DFMT_L8,
D3DPOOL_MANAGED,
&g_d3d9.surface_tex[i],
0));
}
err = err || !g_d3d9.surface_tex[i]; err = err || !g_d3d9.surface_tex[i];