diff --git a/extlibs/nvapi/nvapi.hpp b/extlibs/nvapi/nvapi.hpp index 4259a11c..d04f0b76 100644 --- a/extlibs/nvapi/nvapi.hpp +++ b/extlibs/nvapi/nvapi.hpp @@ -32,10 +32,11 @@ namespace { int nvapi_init() { - const bool disableThreadedOptimizations = true; - const bool setMaximumPerformance = true; - const bool disableTripleBuffering = true; - const bool setPrerenderedFrames = true; + const bool disableThreadedOptimizations = true; + const bool setMaximumPerformance = true; + const bool disableTripleBuffering = true; + const bool setPrerenderedFrames = true; + const bool disableAntialiasingGammaCorrection = true; const wchar_t* profileName = L"Attract Mode"; const wchar_t* appName = L""; @@ -229,6 +230,22 @@ namespace { FeDebug() << "NvAPI: GPU Maximum Performance ON: " << nvapi_get_error_msg( status ); } + // Set Antialiasing Gamma Correction + if ( disableAntialiasingGammaCorrection ) + { + setting.version = NVDRS_SETTING_VER; + setting.settingId = AA_MODE_GAMMACORRECTION_ID; + setting.settingType = NVDRS_DWORD_TYPE; + setting.settingLocation = NVDRS_CURRENT_PROFILE_LOCATION; + setting.isCurrentPredefined = 0; + setting.isPredefinedValid = 0; + setting.u32CurrentValue = AA_MODE_GAMMACORRECTION_OFF; + setting.u32PredefinedValue = AA_MODE_GAMMACORRECTION_OFF; + + status = NvAPI_DRS_SetSetting( hSession, hProfile, &setting ); + FeDebug() << "NvAPI: Antialiasing Gamma Correction OFF: " << nvapi_get_error_msg( status ); + } + // Save changes status = NvAPI_DRS_SaveSettings( hSession ); FeDebug() << "NvAPI: Saving Nvidia profile: " << nvapi_get_error_msg( status ); diff --git a/extlibs/nvapi/nvapi_definitions.hpp b/extlibs/nvapi/nvapi_definitions.hpp index ca7219cd..9ecc56cb 100644 --- a/extlibs/nvapi/nvapi_definitions.hpp +++ b/extlibs/nvapi/nvapi_definitions.hpp @@ -11,7 +11,8 @@ enum Esetting { OGL_TRIPLE_BUFFER_ID = 0x20FDD1F9, PREFERRED_PSTATE_ID = 0x1057EB71, PRERENDERLIMIT_ID = 0x007BA09E, - OGL_MAX_FRAMES_ALLOWED_ID = 0x208E55E3 + OGL_MAX_FRAMES_ALLOWED_ID = 0x208E55E3, + AA_MODE_GAMMACORRECTION_ID = 0x107D639D }; enum EValues_OGL_THREAD_CONTROL { @@ -49,6 +50,18 @@ enum EValues_PRERENDERLIMIT { PRERENDERLIMIT_DEFAULT = PRERENDERLIMIT_APP_CONTROLLED }; +enum EValues_AA_MODE_GAMMACORRECTION { + AA_MODE_GAMMACORRECTION_MASK = 0x00000003, + AA_MODE_GAMMACORRECTION_OFF = 0x00000000, + AA_MODE_GAMMACORRECTION_ON_IF_FOS = 0x00000001, + AA_MODE_GAMMACORRECTION_ON_ALWAYS = 0x00000002, + AA_MODE_GAMMACORRECTION_MAX = 0x00000002, + AA_MODE_GAMMACORRECTION_DEFAULT = 0x00000000, + AA_MODE_GAMMACORRECTION_DEFAULT_TESLA = 0x00000002, + AA_MODE_GAMMACORRECTION_DEFAULT_FERMI = 0x00000002, + AA_MODE_GAMMACORRECTION_NUM_VALUES = 8, +}; + typedef enum _NvAPI_Status { NVAPI_OK = 0, //!< Success. Request is completed.