Commit 10ce2d28 by Jamie Madill Committed by Commit Bot

GL: Fix 64-bit caps query on older GL drivers.

GetInteger64v wasn't introduced until GL 3.2, but some of the enums for caps that are 64-bit in 3.2 (eg, max uniform block size) were first introduced as 32-bit values in extensions. This comes up when trying to use RenderDoc's OpenGL simulator, since it exposes some relevant extensions and only uses core version 3.1. BUG=None Change-Id: Ie4be71b5c8656aae0fe08c270a53f5ef86c99710 Reviewed-on: https://chromium-review.googlesource.com/599030Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent f3d57454
......@@ -190,9 +190,21 @@ static GLint QueryGLIntRange(const FunctionsGL *functions, GLenum name, size_t i
static GLint64 QuerySingleGLInt64(const FunctionsGL *functions, GLenum name)
{
GLint64 result = 0;
functions->getInteger64v(name, &result);
return result;
// Fall back to 32-bit int if 64-bit query is not available. This can become relevant for some
// caps that are defined as 64-bit values in core spec, but were introduced earlier in
// extensions as 32-bit. Triggered in some cases by RenderDoc's emulated OpenGL driver.
if (!functions->getInteger64v)
{
GLint result = 0;
functions->getIntegerv(name, &result);
return static_cast<GLint64>(result);
}
else
{
GLint64 result = 0;
functions->getInteger64v(name, &result);
return result;
}
}
static GLfloat QuerySingleGLFloat(const FunctionsGL *functions, GLenum name)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment