mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-15 06:04:49 +01:00
add option to enable direct3d 12 renderer (via MS 9on12)
This commit is contained in:
parent
9ac9aa3c6a
commit
5616af006b
1
inc/dd.h
1
inc/dd.h
@ -149,6 +149,7 @@ typedef struct CNCDDRAW
|
||||
BOOL lock_surfaces;
|
||||
BOOL d3d9linear;
|
||||
BOOL gdilinear;
|
||||
BOOL d3d9on12;
|
||||
int resolutions;
|
||||
BOOL armadahack;
|
||||
BOOL tshack;
|
||||
|
@ -27,6 +27,17 @@ typedef struct D3D9RENDERER
|
||||
int tex_height;
|
||||
} D3D9RENDERER;
|
||||
|
||||
#define MAX_D3D9ON12_QUEUES 2
|
||||
|
||||
typedef struct _D3D9ON12_ARGS
|
||||
{
|
||||
BOOL Enable9On12;
|
||||
IUnknown* pD3D12Device;
|
||||
IUnknown* ppD3D12Queues[MAX_D3D9ON12_QUEUES];
|
||||
UINT NumQueues;
|
||||
UINT NodeMask;
|
||||
} D3D9ON12_ARGS;
|
||||
|
||||
BOOL d3d9_is_available();
|
||||
DWORD WINAPI d3d9_render_main(void);
|
||||
BOOL d3d9_create();
|
||||
|
@ -46,6 +46,7 @@ void cfg_load()
|
||||
g_ddraw->releasealt = cfg_get_bool("releasealt", FALSE);
|
||||
g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE);
|
||||
g_ddraw->gdilinear = cfg_get_bool("gdilinear", FALSE);
|
||||
g_ddraw->d3d9on12 = cfg_get_bool("d3d9on12", FALSE);
|
||||
g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL);
|
||||
g_ddraw->fpupreserve = cfg_get_bool("fpupreserve", FALSE);
|
||||
g_ddraw->allow_wmactivate = cfg_get_bool("allow_wmactivate", FALSE);
|
||||
@ -154,7 +155,7 @@ void cfg_load()
|
||||
{
|
||||
g_ddraw->renderer = gdi_render_main;
|
||||
}
|
||||
else if (tolower(tmp[0]) == 'd') /* direct3d9 */
|
||||
else if (tolower(tmp[0]) == 'd' || g_ddraw->d3d9on12) /* direct3d9 */
|
||||
{
|
||||
g_ddraw->renderer = d3d9_render_main;
|
||||
}
|
||||
@ -347,7 +348,8 @@ static void cfg_create_ini()
|
||||
"fpupreserve=false\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"; Undocumented compatibility settings\n"
|
||||
"; Undocumented settings\n"
|
||||
"d3d9on12=false\n"
|
||||
"accuratetimers=false\n"
|
||||
"fixpitch=true\n"
|
||||
"fixwndprochook=false\n"
|
||||
|
@ -53,10 +53,21 @@ BOOL d3d9_create()
|
||||
d3d9_enable_shim(TRUE);
|
||||
}
|
||||
|
||||
IDirect3D9* (WINAPI * d3d_create9)(UINT) =
|
||||
(IDirect3D9 * (WINAPI*)(UINT))GetProcAddress(g_d3d9.hmodule, "Direct3DCreate9");
|
||||
D3D9ON12_ARGS args;
|
||||
memset(&args, 0, sizeof(args));
|
||||
args.Enable9On12 = TRUE;
|
||||
|
||||
if (d3d_create9 && (g_d3d9.instance = d3d_create9(D3D_SDK_VERSION)))
|
||||
IDirect3D9* (WINAPI * d3d_create9on12)(INT, D3D9ON12_ARGS*, UINT) = NULL;
|
||||
|
||||
if (g_ddraw->d3d9on12)
|
||||
{
|
||||
d3d_create9on12 = (void*)GetProcAddress(g_d3d9.hmodule, "Direct3DCreate9On12");
|
||||
}
|
||||
|
||||
IDirect3D9* (WINAPI * d3d_create9)(UINT) = (void*)GetProcAddress(g_d3d9.hmodule, "Direct3DCreate9");
|
||||
|
||||
if ((d3d_create9on12 && (g_d3d9.instance = d3d_create9on12(D3D_SDK_VERSION, &args, 1))) ||
|
||||
(d3d_create9 && (g_d3d9.instance = d3d_create9(D3D_SDK_VERSION))))
|
||||
{
|
||||
g_d3d9.bits_per_pixel = g_ddraw->render.bpp ? g_ddraw->render.bpp : g_ddraw->mode.dmBitsPerPel;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user