Merge pull request #615 from JeffProgrammer/gl_meminfo

OpenGL Memory Info Extensions
This commit is contained in:
Brian Roberts 2021-10-11 19:31:10 -05:00 committed by GitHub
commit ed80136322
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 88 additions and 16 deletions

View file

@ -51,6 +51,12 @@
#include "shaderGen/shaderGen.h"
#include "gfxGLUtils.h"
#if defined(TORQUE_OS_WIN)
#include "gfx/gl/tGL/tWGL.h"
#elif defined(TORQUE_OS_LINUX)
#include "gfx/gl/tGL/tXGL.h"
#endif
GFXAdapter::CreateDeviceInstanceDelegate GFXGLDevice::mCreateDeviceInstance(GFXGLDevice::createInstance);
GFXDevice *GFXGLDevice::createInstance( U32 adapterIndex )
@ -1073,8 +1079,36 @@ U32 GFXGLDevice::getTotalVideoMemory_GL_EXT()
return mem / 1024;
}
// TODO OPENGL, add supprt for INTEL cards.
#if defined(TORQUE_OS_WIN)
else if( (gglHasWExtension(AMD_gpu_association)) )
{
// Just assume 1 AMD gpu. Who uses crossfire anyways now? And, crossfire doesn't double
// vram anyways, so does it really matter?
UINT id;
if (wglGetGPUIDsAMD(1, &id) != 0)
{
S32 memorySize;
if (wglGetGPUInfoAMD(id, WGL_GPU_RAM_AMD, GL_INT, 1, &memorySize) != -1)
{
// memory size is returned in MB
return memorySize;
}
}
}
#endif
#if defined(TORQUE_OS_LINUX)
else if ( (gglHasXExtension(NULL, NULL, MESA_query_renderer)) )
{
// memory size is in mb
U32 memorySize;
glXQueryCurrentRendererIntegerMESA(GLX_RENDERER_VIDEO_MEMORY_MESA, &memorySize);
return memorySize;
}
#endif
// No other way, sad. Probably windows Intel.
return 0;
}

View file

@ -25,8 +25,10 @@
#include "core/strings/stringFunctions.h"
#include "console/console.h"
#ifdef TORQUE_OS_WIN
#include "tWGL.h"
#if defined(TORQUE_OS_WIN)
#include "tWGL.h"
#elif defined(TORQUE_OS_LINUX)
#include "tXGL.h"
#endif
namespace GL
@ -41,7 +43,18 @@ namespace GL
void gglPerformExtensionBinds(void *context)
{
#if defined(TORQUE_OS_WIN)
if (!gladLoadWGL((HDC)context))
{
AssertFatal(false, "Unable to load WGL in GLAD. Make sure your OpenGL drivers are up to date!");
}
#elif defined(TORQUE_OS_LINUX)
if (!gladLoadGLX(NULL, 0))
{
AssertFatal(false, "Unable to load GLX in GLAD. Make sure your OpenGL drivers are up to date!");
}
#endif
}
}