diff --git a/thirdparty/nvapi/nvapi.c b/thirdparty/nvapi/nvapi.c index 734cb37dac..5246eb4113 100644 --- a/thirdparty/nvapi/nvapi.c +++ b/thirdparty/nvapi/nvapi.c @@ -152,6 +152,18 @@ bool nvapi_setup_profile(NvApiProfileOpts opts) goto cleanup; } + NVDRS_SETTING setting_dxpresent = { + .version = NVDRS_SETTING_VER, + .settingId = OGL_CPL_PREFER_DXPRESENT_ID, + .settingType = NVDRS_DWORD_TYPE, + .u32CurrentValue = opts.present_method, + }; + if (NvAPI_DRS_SetSetting(session, profile, &setting_dxpresent)) { + LOG("NvAPI_DRS_SetSetting for settingId %x failed", + setting_dxpresent.settingId); + goto cleanup; + } + if (NvAPI_DRS_SaveSettings(session)) { LOG("NvAPI_DRS_SaveSettings failed"); goto cleanup; diff --git a/thirdparty/nvapi/nvapi.h b/thirdparty/nvapi/nvapi.h index e353e8b228..265bcfc913 100644 --- a/thirdparty/nvapi/nvapi.h +++ b/thirdparty/nvapi/nvapi.h @@ -27,10 +27,19 @@ #include #include +enum EValues_OGL_CPL_PREFER_DXPRESENT { + OGL_CPL_PREFER_DXPRESENT_PREFER_DISABLED = 0x00000000, + OGL_CPL_PREFER_DXPRESENT_PREFER_ENABLED = 0x00000001, + OGL_CPL_PREFER_DXPRESENT_AUTO = 0x00000002, + OGL_CPL_PREFER_DXPRESENT_NUM_VALUES = 3, + OGL_CPL_PREFER_DXPRESENT_DEFAULT = OGL_CPL_PREFER_DXPRESENT_AUTO +}; + typedef struct NvApiProfileOpts { const wchar_t *profile_name; const wchar_t *executable_name; bool threaded_optimization; + enum EValues_OGL_CPL_PREFER_DXPRESENT present_method; } NvApiProfileOpts; bool nvapi_init(void); diff --git a/thirdparty/nvapi/nvapi_defs.h b/thirdparty/nvapi/nvapi_defs.h index 2672a7cc89..8037094d83 100644 --- a/thirdparty/nvapi/nvapi_defs.h +++ b/thirdparty/nvapi/nvapi_defs.h @@ -32,6 +32,7 @@ enum ESetting { OGL_THREAD_CONTROL_ID = 0x20C1221E, + OGL_CPL_PREFER_DXPRESENT_ID = 0x20D690F8, }; enum EValues_OGL_THREAD_CONTROL { diff --git a/ui/xemu.c b/ui/xemu.c index 0f8512303b..f0a56d1647 100644 --- a/ui/xemu.c +++ b/ui/xemu.c @@ -1257,6 +1257,7 @@ static void setup_nvidia_profile(void) .profile_name = L"xemu", .executable_name = exe_name, .threaded_optimization = false, + .present_method = OGL_CPL_PREFER_DXPRESENT_PREFER_DISABLED, }); nvapi_finalize(); }