Skip to content

Commit

Permalink
Fix Anti-Aliasing on Nvidia
Browse files Browse the repository at this point in the history
by disabling forced Anti-Aliasing Gamma Correction in the driver
  • Loading branch information
substring authored and oomek committed Jan 21, 2024
1 parent c9b67ea commit a826951
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 9 deletions.
17 changes: 13 additions & 4 deletions Makefile
Expand Up @@ -319,8 +319,10 @@ endif
ifeq ($(FE_DEBUG),1)
CFLAGS += -g -Wall
FE_FLAGS += -DFE_DEBUG
SFML_RELEASE= Debug
else
CFLAGS += -O$(OPTIMIZE) -DNDEBUG
SFML_RELEASE= Release
endif

ifeq ($(USE_MMAL),1)
Expand Down Expand Up @@ -499,20 +501,27 @@ endif
ifeq ($(FE_MACOSX_COMPILE),1)
$(eval SFML_FLAGS += -DSFML_USE_SYSTEM_DEPS=1)
endif
$(SILENT)$(CMAKE) -S extlibs/SFML -B $(SFML_OBJ_DIR) -DCMAKE_INSTALL_PREFIX=$(SFML_OBJ_DIR)/install -DOpenGL_GL_PREFERENCE=GLVND -DSFML_INSTALL_PKGCONFIG_FILES=TRUE -DSFML_BUILD_NETWORK=FALSE $(SFML_FLAGS)
+$(SILENT)$(CMAKE) --build obj/sfml --config Release --target install
touch $(SFML_TOKEN)
$(SILENT)$(CMAKE) -S extlibs/SFML -B $(SFML_OBJ_DIR) -DCMAKE_INSTALL_PREFIX=$(SFML_OBJ_DIR)/install -DOpenGL_GL_PREFERENCE=GLVND -DSFML_INSTALL_PKGCONFIG_FILES=TRUE -DSFML_BUILD_NETWORK=FALSE -DCMAKE_BUILD_TYPE=$(SFML_RELEASE) $(SFML_FLAGS)
+$(SILENT)$(CMAKE) --build obj/sfml --target install
@touch $(SFML_TOKEN)
endif
else
sfmlbuild:

endif

sfml: sfmlbuild
ifeq ($(STATIC)$(FE_DEBUG),11)
$(info Using SFML debug)
$(eval SFML_EXT=s-d)
else
$(eval SFML_EXT=s)
endif

ifeq ($(STATIC),1)
$(eval SFML_LIBS += $(shell PKG_CONFIG_PATH$(PKG_CONFIG_MXE)="$(SFML_PKG_CONFIG_PATH)" $(PKG_CONFIG) --static --libs-only-L $(SFML_PC)))
$(info Manually adding sfml libs as pkg-config has no --static version)
$(eval SFML_LIBS += -lsfml-graphics-s -lsfml-window-s -lsfml-system-s)
$(eval SFML_LIBS += -lsfml-graphics-$(SFML_EXT) -lsfml-window-$(SFML_EXT) -lsfml-system-$(SFML_EXT))
$(eval CFLAGS += -DSFML_STATIC $(shell PKG_CONFIG_PATH$(PKG_CONFIG_MXE)="$(SFML_PKG_CONFIG_PATH)" $(PKG_CONFIG) --static --cflags $(SFML_PC)))
ifeq ($(FE_WINDOWS_COMPILE),1)
else ifeq ($(FE_MACOSX_COMPILE),1)
Expand Down
25 changes: 21 additions & 4 deletions extlibs/nvapi/nvapi.hpp
Expand Up @@ -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"";
Expand Down Expand Up @@ -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 );
Expand Down
15 changes: 14 additions & 1 deletion extlibs/nvapi/nvapi_definitions.hpp
Expand Up @@ -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 {
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit a826951

Please sign in to comment.