Changeset View
Changeset View
Standalone View
Standalone View
source/ps/GameSetup/HWDetect.cpp
Show First 20 Lines • Show All 362 Lines • ▼ Show 20 Lines | #define STRING(id) do { \ | ||||
const char* c = (const char*)glGetString(GL_##id); \ | const char* c = (const char*)glGetString(GL_##id); \ | ||||
if (!c) c = ""; \ | if (!c) c = ""; \ | ||||
if (ogl_SquelchError(GL_INVALID_ENUM)) c = errstr; \ | if (ogl_SquelchError(GL_INVALID_ENUM)) c = errstr; \ | ||||
scriptInterface.SetProperty(settings, "GL_" #id, std::string(c)); \ | scriptInterface.SetProperty(settings, "GL_" #id, std::string(c)); \ | ||||
} while (false) | } while (false) | ||||
#define QUERY(target, pname) do { \ | #define QUERY(target, pname) do { \ | ||||
GLint i = -1; \ | GLint i = -1; \ | ||||
pglGetQueryivARB(GL_##target, GL_##pname, &i); \ | glGetQueryiv(GL_##target, GL_##pname, &i); \ | ||||
if (ogl_SquelchError(GL_INVALID_ENUM)) \ | if (ogl_SquelchError(GL_INVALID_ENUM)) \ | ||||
scriptInterface.SetProperty(settings, "GL_" #target ".GL_" #pname, errstr); \ | scriptInterface.SetProperty(settings, "GL_" #target ".GL_" #pname, errstr); \ | ||||
else \ | else \ | ||||
scriptInterface.SetProperty(settings, "GL_" #target ".GL_" #pname, i); \ | scriptInterface.SetProperty(settings, "GL_" #target ".GL_" #pname, i); \ | ||||
} while (false) | } while (false) | ||||
#define VERTEXPROGRAM(id) do { \ | #define VERTEXPROGRAM(id) do { \ | ||||
GLint i = -1; \ | GLint i = -1; \ | ||||
pglGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_##id, &i); \ | glGetProgramiv(GL_VERTEX_PROGRAM_ARB, GL_##id, &i); \ | ||||
if (ogl_SquelchError(GL_INVALID_ENUM)) \ | if (ogl_SquelchError(GL_INVALID_ENUM)) \ | ||||
scriptInterface.SetProperty(settings, "GL_VERTEX_PROGRAM_ARB.GL_" #id, errstr); \ | scriptInterface.SetProperty(settings, "GL_VERTEX_PROGRAM_ARB.GL_" #id, errstr); \ | ||||
else \ | else \ | ||||
scriptInterface.SetProperty(settings, "GL_VERTEX_PROGRAM_ARB.GL_" #id, i); \ | scriptInterface.SetProperty(settings, "GL_VERTEX_PROGRAM_ARB.GL_" #id, i); \ | ||||
} while (false) | } while (false) | ||||
#define FRAGMENTPROGRAM(id) do { \ | #define FRAGMENTPROGRAM(id) do { \ | ||||
GLint i = -1; \ | GLint i = -1; \ | ||||
pglGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_##id, &i); \ | glGetProgramiv(GL_FRAGMENT_PROGRAM_ARB, GL_##id, &i); \ | ||||
if (ogl_SquelchError(GL_INVALID_ENUM)) \ | if (ogl_SquelchError(GL_INVALID_ENUM)) \ | ||||
scriptInterface.SetProperty(settings, "GL_FRAGMENT_PROGRAM_ARB.GL_" #id, errstr); \ | scriptInterface.SetProperty(settings, "GL_FRAGMENT_PROGRAM_ARB.GL_" #id, errstr); \ | ||||
else \ | else \ | ||||
scriptInterface.SetProperty(settings, "GL_FRAGMENT_PROGRAM_ARB.GL_" #id, i); \ | scriptInterface.SetProperty(settings, "GL_FRAGMENT_PROGRAM_ARB.GL_" #id, i); \ | ||||
} while (false) | } while (false) | ||||
#define BOOL(id) INTEGER(id) | #define BOOL(id) INTEGER(id) | ||||
▲ Show 20 Lines • Show All 261 Lines • ▼ Show 20 Lines | |||||
#endif // CONFIG2_GLES | #endif // CONFIG2_GLES | ||||
// TODO: Support OpenGL platforms which don’t use GLX as well. | // TODO: Support OpenGL platforms which don’t use GLX as well. | ||||
#if defined(SDL_VIDEO_DRIVER_X11) && !CONFIG2_GLES | #if defined(SDL_VIDEO_DRIVER_X11) && !CONFIG2_GLES | ||||
#define GLXQCR_INTEGER(id) do { \ | #define GLXQCR_INTEGER(id) do { \ | ||||
unsigned int i = UINT_MAX; \ | unsigned int i = UINT_MAX; \ | ||||
if (pglXQueryCurrentRendererIntegerMESA(id, &i)) \ | if (glXQueryCurrentRendererIntegerMESA(id, &i)) \ | ||||
scriptInterface.SetProperty(settings, #id, i); \ | scriptInterface.SetProperty(settings, #id, i); \ | ||||
} while (false) | } while (false) | ||||
#define GLXQCR_INTEGER2(id) do { \ | #define GLXQCR_INTEGER2(id) do { \ | ||||
unsigned int i[2] = { UINT_MAX, UINT_MAX }; \ | unsigned int i[2] = { UINT_MAX, UINT_MAX }; \ | ||||
if (pglXQueryCurrentRendererIntegerMESA(id, i)) { \ | if (glXQueryCurrentRendererIntegerMESA(id, i)) { \ | ||||
scriptInterface.SetProperty(settings, #id "[0]", i[0]); \ | scriptInterface.SetProperty(settings, #id "[0]", i[0]); \ | ||||
scriptInterface.SetProperty(settings, #id "[1]", i[1]); \ | scriptInterface.SetProperty(settings, #id "[1]", i[1]); \ | ||||
} \ | } \ | ||||
} while (false) | } while (false) | ||||
#define GLXQCR_INTEGER3(id) do { \ | #define GLXQCR_INTEGER3(id) do { \ | ||||
unsigned int i[3] = { UINT_MAX, UINT_MAX, UINT_MAX }; \ | unsigned int i[3] = { UINT_MAX, UINT_MAX, UINT_MAX }; \ | ||||
if (pglXQueryCurrentRendererIntegerMESA(id, i)) { \ | if (glXQueryCurrentRendererIntegerMESA(id, i)) { \ | ||||
scriptInterface.SetProperty(settings, #id "[0]", i[0]); \ | scriptInterface.SetProperty(settings, #id "[0]", i[0]); \ | ||||
scriptInterface.SetProperty(settings, #id "[1]", i[1]); \ | scriptInterface.SetProperty(settings, #id "[1]", i[1]); \ | ||||
scriptInterface.SetProperty(settings, #id "[2]", i[2]); \ | scriptInterface.SetProperty(settings, #id "[2]", i[2]); \ | ||||
} \ | } \ | ||||
} while (false) | } while (false) | ||||
#define GLXQCR_STRING(id) do { \ | #define GLXQCR_STRING(id) do { \ | ||||
const char* str = pglXQueryCurrentRendererStringMESA(id); \ | const char* str = glXQueryCurrentRendererStringMESA(id); \ | ||||
if (str) \ | if (str) \ | ||||
scriptInterface.SetProperty(settings, #id ".string", str); \ | scriptInterface.SetProperty(settings, #id ".string", str); \ | ||||
} while (false) | } while (false) | ||||
SDL_SysWMinfo wminfo; | SDL_SysWMinfo wminfo; | ||||
SDL_VERSION(&wminfo.version); | SDL_VERSION(&wminfo.version); | ||||
const int ret = SDL_GetWindowWMInfo(g_VideoMode.GetWindow(), &wminfo); | const int ret = SDL_GetWindowWMInfo(g_VideoMode.GetWindow(), &wminfo); | ||||
if (ret && wminfo.subsystem == SDL_SYSWM_X11) | if (ret && wminfo.subsystem == SDL_SYSWM_X11) | ||||
{ | { | ||||
Display* dpy = wminfo.info.x11.display; | Display* dpy = wminfo.info.x11.display; | ||||
int scrnum = DefaultScreen(dpy); | int scrnum = DefaultScreen(dpy); | ||||
const char* glxexts = glXQueryExtensionsString(dpy, scrnum); | const char* glxexts = glXQueryExtensionsString(dpy, scrnum); | ||||
scriptInterface.SetProperty(settings, "glx_extensions", glxexts); | scriptInterface.SetProperty(settings, "glx_extensions", glxexts); | ||||
if (strstr(glxexts, "GLX_MESA_query_renderer") && pglXQueryCurrentRendererIntegerMESA && pglXQueryCurrentRendererStringMESA) | if (strstr(glxexts, "GLX_MESA_query_renderer") && glXQueryCurrentRendererIntegerMESA && glXQueryCurrentRendererStringMESA) | ||||
{ | { | ||||
GLXQCR_INTEGER(GLX_RENDERER_VENDOR_ID_MESA); | GLXQCR_INTEGER(GLX_RENDERER_VENDOR_ID_MESA); | ||||
GLXQCR_INTEGER(GLX_RENDERER_DEVICE_ID_MESA); | GLXQCR_INTEGER(GLX_RENDERER_DEVICE_ID_MESA); | ||||
GLXQCR_INTEGER3(GLX_RENDERER_VERSION_MESA); | GLXQCR_INTEGER3(GLX_RENDERER_VERSION_MESA); | ||||
GLXQCR_INTEGER(GLX_RENDERER_ACCELERATED_MESA); | GLXQCR_INTEGER(GLX_RENDERER_ACCELERATED_MESA); | ||||
GLXQCR_INTEGER(GLX_RENDERER_VIDEO_MEMORY_MESA); | GLXQCR_INTEGER(GLX_RENDERER_VIDEO_MEMORY_MESA); | ||||
GLXQCR_INTEGER(GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA); | GLXQCR_INTEGER(GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA); | ||||
GLXQCR_INTEGER(GLX_RENDERER_PREFERRED_PROFILE_MESA); | GLXQCR_INTEGER(GLX_RENDERER_PREFERRED_PROFILE_MESA); | ||||
Show All 11 Lines |
Wildfire Games · Phabricator