Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54f67e78 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic 'glbytebuffer'

* changes:
  Query GL version before using it
  Guarantee that glMapBufferRange/glGetBufferPointv return a ByteBuffer
parents 70752691 b136c855
Loading
Loading
Loading
Loading
+20 −20
Original line number Diff line number Diff line
@@ -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
+8 −0
Original line number Diff line number Diff line
@@ -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,