Merge pull request #887 from daleglass/fix-ati-auto-vram

Fix getting the free VRAM on ATI cards
This commit is contained in:
kasenvr 2020-11-28 14:17:02 -05:00 committed by GitHub
commit 0157d5f804
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -219,19 +219,21 @@ void GLBackend::init() {
}
size_t GLBackend::getAvailableMemory() {
GLint mem;
// GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX returns 1 value
// GL_TEXTURE_FREE_MEMORY_ATI returns 4 values, we only need the first
GLint mem[4] = {0,0,0,0};
switch( _videoCard ) {
case NVIDIA:
#if !defined(Q_OS_ANDROID)
glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &mem);
glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &mem[0]);
#endif
return mem * BYTES_PER_KIB;
return mem[0] * BYTES_PER_KIB;
case ATI:
#if !defined(Q_OS_ANDROID)
glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, &mem);
glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, &mem[0]);
#endif
return mem * BYTES_PER_KIB;
return mem[0] * BYTES_PER_KIB;
case MESA:
return 0; // Don't know the current value
case Unknown:
@ -1002,4 +1004,4 @@ void GLBackend::setCameraCorrection(const Mat4& correction, const Mat4& prevRend
void GLBackend::syncProgram(const gpu::ShaderPointer& program) {
gpu::gl::GLShader::sync(*this, *program);
}
}