Merge changes from topic 'glbytebuffer'

* changes:
  Query GL version before using it
  Guarantee that glMapBufferRange/glGetBufferPointv return a ByteBuffer
This commit is contained in:
TreeHugger Robot
2016-12-01 19:42:13 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 20 deletions

View File

@@ -37,6 +37,26 @@ namespace uirenderer {
Extensions::Extensions() {
const char* version = (const char*) glGetString(GL_VERSION);
// Section 6.1.5 of the OpenGL ES specification indicates the GL version
// string strictly follows this format:
//
// OpenGL<space>ES<space><version number><space><vendor-specific information>
//
// In addition section 6.1.5 describes the version number thusly:
//
// "The version number is either of the form major number.minor number or
// major number.minor number.release number, where the numbers all have one
// or more digits. The release number and vendor specific information are
// optional."
if (sscanf(version, "OpenGL ES %d.%d", &mVersionMajor, &mVersionMinor) != 2) {
// If we cannot parse the version number, assume OpenGL ES 2.0
mVersionMajor = 2;
mVersionMinor = 0;
}
auto extensions = StringUtils::split((const char*) glGetString(GL_EXTENSIONS));
mHasNPot = extensions.has("GL_OES_texture_npot");
mHasFramebufferFetch = extensions.has("GL_NV_shader_framebuffer_fetch");
@@ -58,26 +78,6 @@ Extensions::Extensions() {
mHasSRGB = false;
mHasSRGBWriteControl = false;
#endif
const char* version = (const char*) glGetString(GL_VERSION);
// Section 6.1.5 of the OpenGL ES specification indicates the GL version
// string strictly follows this format:
//
// OpenGL<space>ES<space><version number><space><vendor-specific information>
//
// In addition section 6.1.5 describes the version number thusly:
//
// "The version number is either of the form major number.minor number or
// major number.minor number.release number, where the numbers all have one
// or more digits. The release number and vendor specific information are
// optional."
if (sscanf(version, "OpenGL ES %d.%d", &mVersionMajor, &mVersionMinor) != 2) {
// If we cannot parse the version number, assume OpenGL ES 2.0
mVersionMajor = 2;
mVersionMinor = 0;
}
}
}; // namespace uirenderer

View File

@@ -590,6 +590,10 @@ public class GLES30 extends GLES20 {
// C function void glGetBufferPointerv ( GLenum target, GLenum pname, GLvoid** params )
/**
* The {@link java.nio.Buffer} instance returned by this method is guaranteed
* to be an instance of {@link java.nio.ByteBuffer}.
*/
public static native java.nio.Buffer glGetBufferPointerv(
int target,
int pname
@@ -761,6 +765,10 @@ public class GLES30 extends GLES20 {
// C function GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access )
/**
* The {@link java.nio.Buffer} instance returned by this method is guaranteed
* to be an instance of {@link java.nio.ByteBuffer}.
*/
public static native java.nio.Buffer glMapBufferRange(
int target,
int offset,