我尝试用代码获得gpu可用内存
bool bMemInfo1 = GLEW_NVX_gpu_memory_info; // false
bool bMemInfo2 = glewIsSupported("GL_NVX_gpu_memory_info"); // false
bool bMemInfo3 = glewGetExtension("GL_NVX_gpu_memory_info"); // false
GLint info = 0;
glGetIntegerv(GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, @info);
GLenum err = glGetError(); // 1280
if (GLEW_OK != err)
{
cout << glewGetErrorString(err) << endl; // Unknown error
}
在我的情况下我做不到。你能解释一下原因吗?是否有可能获得可用的GPU内存?
OpenGL早在3D gpu之前就被发明了。你尝试使用的这些东西是GL扩展,不是任何OpenGL标准的一部分。它们可能工作,也可能不工作,这取决于操作系统版本和GPU模型。
如果你是在Windows上,请参阅IDXGIAdapter::GetDesc()方法返回的dedicatedvideommemory字段。
如果你在OSX系统上,你可以查询kIOFBMemorySizeKey
值
在Linux上,你就不走运了,操作系统没有公开一致的API来查询这些信息。有设备特定的方式依赖于GPU模型,并且差异很大:lspci
工具不会在许多嵌入式soc上工作,nvidia-smi
工具只适用于nVidia,vkGetPhysicalDeviceMemoryProperties()
功能需要支持vulkan的GPU和驱动程序…