diff --git a/inc/dd.h b/inc/dd.h index ac31d23..6742a3e 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -138,6 +138,7 @@ typedef struct CNCDDRAW BOOL novidmem; BOOL fpupreserve; BOOL allow_wmactivate; + int d3d9_adapter; BOOL accurate_timers; BOOL resizable; BOOL nonexclusive; diff --git a/src/config.c b/src/config.c index 6d87ab8..19f7a5f 100644 --- a/src/config.c +++ b/src/config.c @@ -50,6 +50,7 @@ void cfg_load() 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); + g_ddraw->d3d9_adapter = cfg_get_int("d3d9_adapter", 0); cfg_get_string("screenshotdir", ".\\Screenshots\\", g_ddraw->screenshot_dir, sizeof(g_ddraw->screenshot_dir)); if (g_ddraw->locktopleft) @@ -350,6 +351,7 @@ static void cfg_create_ini() "\n" "\n" "; Undocumented settings\n" + "d3d9_adapter=0\n" "d3d9on12=false\n" "game_handles_close=false\n" "accuratetimers=false\n" diff --git a/src/render_d3d9.c b/src/render_d3d9.c index 2db1336..01c1b5a 100644 --- a/src/render_d3d9.c +++ b/src/render_d3d9.c @@ -78,7 +78,7 @@ BOOL d3d9_create() { #if _DEBUG D3DADAPTER_IDENTIFIER9 ai = {0}; - const HRESULT hr = IDirect3D9_GetAdapterIdentifier(g_d3d9.instance, 0, 0, &ai); + const HRESULT hr = IDirect3D9_GetAdapterIdentifier(g_d3d9.instance, g_ddraw->d3d9_adapter, 0, &ai); if (SUCCEEDED(hr)) { @@ -124,7 +124,7 @@ BOOL d3d9_create() if (SUCCEEDED( IDirect3D9_CreateDevice( g_d3d9.instance, - D3DADAPTER_DEFAULT, + g_ddraw->d3d9_adapter, D3DDEVTYPE_HAL, g_ddraw->hwnd, behavior_flags[i] | (g_ddraw->fpupreserve ? D3DCREATE_FPU_PRESERVE : 0),