I want to detect video memory using Nvidia API
called NvAPI
. The problem is that dedicatedVideoMemory
always displays 0, but it should display 4096 MB.
Code:
NvAPI_Status result;
result = NvAPI_Initialize();
if (result != NVAPI_OK) {
NvAPI_ShortString string;
NvAPI_GetErrorMessage(result, string);
printf("NVAPI NvAPI_Initialize: %s\n", string);
}
NvU32 cnt;
NvPhysicalGpuHandle phys;
result = NvAPI_EnumPhysicalGPUs(&phys, &cnt);
if (result != NVAPI_OK) {
NvAPI_ShortString string;
NvAPI_GetErrorMessage(result, string);
printf("NVAPI NvAPI_EnumPhysicalGPUs: %s\n", string);
}
NV_DISPLAY_DRIVER_MEMORY_INFO nvidiaDisplayDriverMemory;
NvAPI_GPU_GetMemoryInfo(phys, &nvidiaDisplayDriverMemory);
qDebug() << nvidiaDisplayDriverMemory.dedicatedVideoMemory;
NvAPI_Unload();
Screenshot (NVIDIA Control Panel):
Questions:
- How to fix it?
- How to get proper graphics memory detection on AMD/Intel?
Thanks in advance for the help.
Update:
NvAPI_ShortString ver;
NvAPI_GetInterfaceVersionString(ver);
printf("NVAPI Version: %s\n", ver);
NvAPI_ShortString name;
NvAPI_GPU_GetFullName(phys, name);
if (result != NVAPI_OK) {
NvAPI_ShortString string;
NvAPI_GetErrorMessage(result, string);
printf("NVAPI NvAPI_GPU_GetFullName: %s\n", string); // emit signal - error
}
printf("Name: %s\n", name);
Now when I add to check version and graphics card name it displays nvidiaDisplayDriverMemory.dedicatedVideoMemory
as 4096, but only in Qt
debug mode, when I get to release mode, it displays 0. Any ideas? Thanks.