Following this post from @dlacewell I’d like to use DLSS RR in my OptiX rendering pipeline on a Linux (24.04) x86_64 system with an NVIDIA GeForce RTX 5090 (Display Driver 590.44.01, with the Open GPU Kernel Modules built from source).
I’ve downloaded the latest DLSS 310.4.0 SDK and copied libnvidia-ngx-dlssd.so.310.4.0 next to my executable so NGX can find it. However, the call to NVSDK_NGX_CUDA_GetFeatureRequirements with FeatureID set to NVSDK_NGX_Feature_RayReconstruction fails with error NVSDK_NGX_Result_FAIL_FeatureNotSupported. Here’s the minimal sample program:
#include <stdio.h>
#include <cuda.h>
#include <nvsdk_ngx.h>
int main(void) {
CUdevice device;
cuInit(0);
cuDeviceGet(&device, 0);
NVSDK_NGX_FeatureRequirement req = {0};
NVSDK_NGX_FeatureCommonInfo commonInfo = {0};
NVSDK_NGX_FeatureDiscoveryInfo info = {
.SDKVersion = NVSDK_NGX_Version_API,
.FeatureID = NVSDK_NGX_Feature_SuperSampling,
.Identifier.IdentifierType = NVSDK_NGX_Application_Identifier_Type_Project_Id,
.Identifier.v.ProjectDesc.ProjectId = "a0f57b54-1daf-4934-90ae-c4035c19df04",
.Identifier.v.ProjectDesc.EngineType = NVSDK_NGX_ENGINE_TYPE_CUSTOM,
.Identifier.v.ProjectDesc.EngineVersion = "0.1",
.ApplicationDataPath = L"./",
.FeatureInfo = &commonInfo
};
printf("0x%x %u\n", NVSDK_NGX_CUDA_GetFeatureRequirements(device, &info, &req), req.FeatureSupported);
return 0;
}
// prints: 0xbad00001 0
Here’s how I compile it:
nvcc ngx.c -o ngx \
-I/usr/local/cuda/include \
-I$HOME/DLSS/include \
-L/usr/local/cuda/lib64 \
-L$HOME/DLSS/lib/Linux_x86_64 \
-lcuda -lnvsdk_ngx -ldl -lstdc++
According to this comment, NVSDK_NGX_Init doesn’t need to be called before calling NVSDK_NGX_CUDA_GetFeatureRequirements so I don’t get any logs even when specifying the LoggingCallback and defining __NGX_LOG_LEVEL. Following these instructions, I’ve created /usr/share/nvidia/nvidia-ngx-conf.json with this content:
{
"file_format_version": "1.0.0",
"ngx_models_path": "/usr/share/nvidia/ngx",
"allow_ngx_updater": true
}
When adding a call to NVSDK_NGX_CUDA_Init_with_ProjectID I get these logs:
[NGXLoadFromPath:1751] Loading most recent 'libnvidia-ngx-dlssd.so' snippet from '.'...
[NGXLoadFromPath:1774] Found 3 snippets:
[NGXLoadFromPath:1776] libnvidia-ngx-dlssg.so.310.4.0
[NGXLoadFromPath:1776] libnvidia-ngx-dlssd.so.310.4.0
[NGXLoadFromPath:1776] libnvidia-ngx-dlss.so.310.4.0
[NGXLoadLibrary:70] Loaded library from path (/home/v/dr/libnvidia-ngx-dlssd.so.310.4.0)
[NGXValidateSnippetMetaData:1518] Validating snippet /home/v/dr/libnvidia-ngx-dlssd.so.310.4.0
[NGXValidateSnippetMetaData:1520] NGX CORE API version : 0x15, Snippet requires at least : 0x13
[NGXValidateSnippetMetaData:1524] GPU architecture : 0x1B0, Snippet expects at least : 0x140
[NGXValidateSnippetMetaData:1539] Driver support flags : 0xF(SEAMLESS_OTA|LINUX_EXTENDED_DRIVER_VERSIONS|API_SPECIFIC_POPULATE_PARAMS|REQUIRE_CMSID), Snippet required flags : 0xF(SEAMLESS_OTA|LINUX_EXTENDED_DRIVER_VERSIONS|API_SPECIFIC_POPULATE_PARAMS|REQUIRE_CMSID)
[NGXValidateSnippetMetaData:1567] Driver version : 590.44.1, Snippet expects at least : 535.101
[NGXValidateSnippetMetaData:1594] Snippet version : 310.4.0, Embedded app Id : E658703 (0)
[LaunchNGXUpdater:330] starting nvidia-ngx-updater with command line " -api update -cmsid 1 -feature dlssd -bootstrap -gpuarch 352"
[LaunchNGXUpdater:386] successfully launched nvidia-ngx-updater!
[NGXLoadFromPath:1751] Loading most recent '160_E658703.bin' snippet from '/usr/share/nvidia/ngx/models/dlssd/versions/0/files'...
[NGXLoadFromPath:1770] Found no snippets
[load:677] NGXLoadFromPath failed: -1160773628
[NGXSecureLoadFeature:1307] Feature dlssd failed to load (cmsid 241534723) from cache (location: /usr/share/nvidia/ngx/models/dlssd/versions/0/files, name: 160_E658703.bin)
[LaunchNGXUpdater:330] starting nvidia-ngx-updater with command line " -api update -cmsid 0 -feature dlssd -bootstrap -gpuarch 352"
[LaunchNGXUpdater:386] successfully launched nvidia-ngx-updater!
[LaunchNGXUpdater:330] starting nvidia-ngx-updater with command line " -api update -cmsid 2 -feature dlssd -bootstrap -gpuarch 352"
[LaunchNGXUpdater:386] successfully launched nvidia-ngx-updater!
[LaunchNGXUpdater:330] starting nvidia-ngx-updater with command line " -api update -cmsid 3 -feature dlssd -bootstrap -gpuarch 352"
[LaunchNGXUpdater:386] successfully launched nvidia-ngx-updater!
[NGXLoadFromPath:1751] Loading most recent 'libnvidia-ngx-dlssd.so' snippet from ''...
[NGXLoadFromPath:1770] Found no snippets
[load:677] NGXLoadFromPath failed: -1160773628
[NGXSecureLoadFeature:1423] app E658702 feature dlssd snippet: ./libnvidia-ngx-dlssd.so version: 310.4.0
[NGXLoadFeature:1499] Setting show info tip callback for dlssd
[NGXLoadFeature:1514] Setting override status callback for dlssd
[NGXSecureLoadFeature:1148] unable to read the deny list. Assuming that the feature is allowed.
...
NVSDK_NGX_CUDA_Init_with_ProjectID: 0x1
[nvmlArchToNGX:46] Blackwell detected, chip is 55
[LaunchNGXUpdater:330] starting nvidia-ngx-updater with command line " -api update -cmsid 1 -feature dlssd -gpuarch 352"
[LaunchNGXUpdater:386] successfully launched nvidia-ngx-updater!
NVSDK_NGX_CUDA_GetFeatureRequirements: 0xbad00001 0
NVSDK_NGX_CUDA_Shutdown: 0x1
The DLL is loaded, the snippet seems to pass all checks, nvidia-ngx-updater is launched, the config file is read, and it seems like NGX is trying to load 160_E658703.bin but no models are downloaded to the /usr/share/nvidia/ngx directory — probably because my custom ID is not whitelisted.
Setting FeatureID to NVSDK_NGX_Feature_SuperSampling returns NVSDK_NGX_Result_Success. I know for sure that this PC supports DLSS RR because I’m able to use it on Windows (running on the same machine).
Could someone at NVIDIA please provide instructions on how to get this set up correctly?