DLSS Enabler 2.90.800.0 onwards exposes two public functions as part of its main dll file called "dlss-enabler.dll".

As a game modder, you can use them to enable, disable or check the general status of Frame Generation.

Function 1: Returns the current state of Frame Generation

DLSS_Enabler_Result GetFrameGenerationMode(DLSS_Enabler_FrameGeneration_Mode &mode);


Function 2: Enables or Disables the Frame Generation feature real-time

DLSS_Enabler_Result SetFrameGenerationMode(DLSS_Enabler_FrameGeneration_Mode mode)


Both functions operate on the following enum structure:

typedef enum DLSS_Enabler_FrameGeneration_Mode
{
DLSS_Enabler_FrameGeneration_Disabled, // translates to mode = 0
DLSS_Enabler_FrameGeneration_Enabled,  // translates to mode = 1
} DLSS_Enabler_FrameGeneration_Mode;

And return one of the following results:

typedef enum DLSS_Enabler_Result
{
DLSS_Enabler_Result_Success = 1, // get/set operation succeeded
DLSS_Enabler_Result_Fail_Unsupported = 0, // user did not enable Frame Generation feature in game settings first
DLSS_Enabler_Result_Fail_Bad_Argument = -1,
} DLSS_Enabler_Result;


Examples:


#include <windows.h>
#include <iostream>

// Define the enums and function prototypes as provided
typedef enum DLSS_Enabler_FrameGeneration_Mode
{
DLSS_Enabler_FrameGeneration_Disabled = 0,
DLSS_Enabler_FrameGeneration_Enabled = 1,
} DLSS_Enabler_FrameGeneration_Mode;

typedef enum DLSS_Enabler_Result
{
DLSS_Enabler_Result_Success = 1,
DLSS_Enabler_Result_Fail_Unsupported = 0,
DLSS_Enabler_Result_Fail_Bad_Argument = -1,
} DLSS_Enabler_Result;

typedef DLSS_Enabler_Result (*GetFrameGenerationModeFunc)(DLSS_Enabler_FrameGeneration_Mode &mode);
typedef DLSS_Enabler_Result (*SetFrameGenerationModeFunc)(DLSS_Enabler_FrameGeneration_Mode mode);

int frameGenExample()
{
// Load the DLL
HMODULE hDll = LoadLibrary("dlss-enabler.dll");
if (!hDll)
{
std::cerr << "Failed to load dlss-enabler.dll" << std::endl;
return 1;
}

// Get the function pointers
GetFrameGenerationModeFunc GetFrameGenerationMode = (GetFrameGenerationModeFunc)GetProcAddress(hDll, "GetFrameGenerationMode");
if (!GetFrameGenerationMode)
{
std::cerr << "Failed to get address of GetFrameGenerationMode" << std::endl;
FreeLibrary(hDll);
return 1;
}

// Assuming there's a SetFrameGenerationMode function to set the mode
SetFrameGenerationModeFunc SetFrameGenerationMode = (SetFrameGenerationModeFunc)GetProcAddress(hDll, "SetFrameGenerationMode");
if (!SetFrameGenerationMode)
{
std::cerr << "Failed to get address of SetFrameGenerationMode" << std::endl;
FreeLibrary(hDll);
return 1;
}

// Get the current mode
DLSS_Enabler_FrameGeneration_Mode currentMode;
DLSS_Enabler_Result result = GetFrameGenerationMode(currentMode);
if (result != DLSS_Enabler_Result_Success)
{
std::cerr << "GetFrameGenerationMode failed with error code " << result << std::endl;
if (result == DLSS_Enabler_Result_Fail_Unsupported)
std::cerr << "Error: Operation unsupported" << std::endl;
else if (result == DLSS_Enabler_Result_Fail_Bad_Argument)
std::cerr << "Error: Bad argument passed" << std::endl;
FreeLibrary(hDll);
return 1;
}

std::cout << "Current Frame Generation Mode: " << (currentMode == DLSS_Enabler_FrameGeneration_Disabled ? "Disabled" : "Enabled") << std::endl;

// Change the mode if it's disabled
if (currentMode == DLSS_Enabler_FrameGeneration_Disabled)
{
result = SetFrameGenerationMode(DLSS_Enabler_FrameGeneration_Enabled);
if (result != DLSS_Enabler_Result_Success)
{
std::cerr << "SetFrameGenerationMode failed with error code " << result << std::endl;
if (result == DLSS_Enabler_Result_Fail_Unsupported)
std::cerr << "Error: Operation unsupported" << std::endl;
else if (result == DLSS_Enabler_Result_Fail_Bad_Argument)
std::cerr << "Error: Bad argument passed" << std::endl;
FreeLibrary(hDll);
return 1;
}
std::cout << "Frame Generation Mode set to Enabled" << std::endl;
}
else
{
std::cout << "Frame Generation Mode is already Enabled" << std::endl;
}

// Free the DLL
FreeLibrary(hDll);

return 0;
}

Article information

Added on

Edited on

Written by

artur07305

0 comments