0

我想使用Nvidia API调用来检测视频内存NvAPI。问题是dedicatedVideoMemory总是显示 0,但它应该显示 4096 MB。

代码:

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();

屏幕截图(NVIDIA 控制面板):

屏幕截图(NVIDIA 控制面板):

问题:

  1. 如何解决?
  2. 如何在 AMD/Intel 上获得正确的图形内存检测?

在此先感谢您的帮助。

更新:

 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);

现在,当我添加检查版本和显卡名称时,它显示nvidiaDisplayDriverMemory.dedicatedVideoMemory为 4096,但仅在Qt调试模式下,当我进入发布模式时,它显示 0。有什么想法吗?谢谢。

4

0 回答 0