1041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck/*
2041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck * Copyright(C) 2015 The Android Open Source Project
3041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck *
4041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck * Licensed under the Apache License, Version 2.0(the "License");
5041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck * you may not use this file except in compliance with the License.
6041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck * You may obtain a copy of the License at
7041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck *
8041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck *      http://www.apache.org/licenses/LICENSE-2.0
9041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck *
10041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck * Unless required by applicable law or agreed to in writing, software
11041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck * distributed under the License is distributed on an "AS IS" BASIS,
12041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck * See the License for the specific language governing permissions and
14041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck * limitations under the License.
15041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck */
16041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
17041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck#include <GLES3/gl3.h>
18041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck#include <GLES2/gl2ext.h>
19041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
20041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck#include <stdlib.h>
21041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck#include <string.h>
22041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
23041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckstruct {
24041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    GLboolean scissorEnabled;
25041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck} gState;
26041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
27041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGenCommon(GLsizei n, GLuint *buffers) {
28041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    static GLuint nextId = 0;
29041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    int i;
30041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    for(i = 0; i < n; i++) {
31041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        buffers[i] = ++nextId;
32041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    }
33041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
34041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
35041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGenBuffers(GLsizei n, GLuint *buffers) {
36041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    glGenCommon(n, buffers);
37041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
38041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
39041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGenFramebuffers(GLsizei n, GLuint *framebuffers) {
40041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    glGenCommon(n, framebuffers);
41041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
42041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
43041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGenRenderbuffers(GLsizei n, GLuint *renderbuffers) {
44041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    glGenCommon(n, renderbuffers);
45041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
46041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
47041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGenTextures(GLsizei n, GLuint *textures) {
48041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    glGenCommon(n, textures);
49041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
50041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
51041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn ReckGLuint glCreateProgram(void) {
52041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    static GLuint nextProgram = 0;
53041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    return ++nextProgram;
54041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
55041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
56041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn ReckGLuint glCreateShader(GLenum type) {
57041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    static GLuint nextShader = 0;
58041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    return ++nextShader;
59041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
60041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
61041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGetProgramiv(GLuint program, GLenum pname, GLint *params) {
62041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    switch (pname) {
63041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_DELETE_STATUS:
64041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_LINK_STATUS:
65041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_VALIDATE_STATUS:
66041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        *params = GL_TRUE;
67041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        break;
68041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_INFO_LOG_LENGTH:
69041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        *params = 16;
70041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        break;
71041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    }
72041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
73041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
74041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) {
75041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    *length = snprintf(infoLog, bufSize, "success");
76041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    if (*length >= bufSize) {
77041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        *length = bufSize - 1;
78041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    }
79041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
80041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
81041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGetShaderiv(GLuint shader, GLenum pname, GLint *params) {
82041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    switch (pname) {
83041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_COMPILE_STATUS:
84041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_DELETE_STATUS:
85041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        *params = GL_TRUE;
86041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    }
87041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
88041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
89041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) {
90041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    *length = snprintf(infoLog, bufSize, "success");
91041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    if (*length >= bufSize) {
92041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        *length = bufSize - 1;
93041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    }
94041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
95041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
96041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid setBooleanState(GLenum cap, GLboolean value) {
97041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    switch (cap) {
98041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_SCISSOR_TEST:
99041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        gState.scissorEnabled = value;
100041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        break;
101041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    }
102041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
103041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
104041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glEnable(GLenum cap) {
105041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    setBooleanState(cap, GL_TRUE);
106041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
107041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
108041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDisable(GLenum cap) {
109041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    setBooleanState(cap, GL_FALSE);
110041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
111041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
112041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn ReckGLboolean glIsEnabled(GLenum cap) {
113041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    switch (cap) {
114041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_SCISSOR_TEST:
115041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        return gState.scissorEnabled;
116041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    default:
117041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        return GL_FALSE;
118041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    }
119041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
120041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
121041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGetIntegerv(GLenum pname, GLint *data) {
122041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    switch (pname) {
123041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_MAX_TEXTURE_SIZE:
124041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        *data = 2048;
125041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        break;
126041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
127041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        *data = 4;
128041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        break;
129041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    default:
130041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        *data = 0;
131041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    }
132041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
133041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
134041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckconst char* getString(GLenum name) {
135041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    switch (name) {
136041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_VENDOR:
137041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        return "android";
138041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_RENDERER:
139041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        return "null";
140041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_VERSION:
141041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        return "OpenGL ES 2.0 rev1";
142041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_SHADING_LANGUAGE_VERSION:
143041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        return "OpenGL ES GLSL ES 2.0 rev1";
144041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    case GL_EXTENSIONS:
145041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    default:
146041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck        return "";
147041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    }
148041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
149041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
150041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckconst GLubyte* glGetString(GLenum name) {
151041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    return (GLubyte*) getString(name);
152041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
153041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
154041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glActiveTexture(GLenum texture) {}
155041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glAttachShader(GLuint program, GLuint shader) {}
156041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBindAttribLocation(GLuint program, GLuint index, const GLchar *name) {}
157041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBindBuffer(GLenum target, GLuint buffer) {}
158041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBindFramebuffer(GLenum target, GLuint framebuffer) {}
159041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBindRenderbuffer(GLenum target, GLuint renderbuffer) {}
160041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBindTexture(GLenum target, GLuint texture) {}
161041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {}
162041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBlendEquation(GLenum mode) {}
163041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) {}
164041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBlendFunc(GLenum sfactor, GLenum dfactor) {}
165041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) {}
166041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBufferData(GLenum target, GLsizeiptr size, const void *data, GLenum usage) {}
167041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data) {}
168041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glClear(GLbitfield mask) {}
169041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {}
170041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glClearDepthf(GLfloat d) {}
171041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glClearStencil(GLint s) {}
172041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {}
173041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glCompileShader(GLuint shader) {}
174041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data) {}
175041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data) {}
176041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {}
177041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {}
178041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glCullFace(GLenum mode) {}
179041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDeleteBuffers(GLsizei n, const GLuint *buffers) {}
180041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers) {}
181041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDeleteProgram(GLuint program) {}
182041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDeleteRenderbuffers(GLsizei n, const GLuint *renderbuffers) {}
183041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDeleteShader(GLuint shader) {}
184041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDeleteTextures(GLsizei n, const GLuint *textures) {}
185041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDepthFunc(GLenum func) {}
186041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDepthMask(GLboolean flag) {}
187041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDepthRangef(GLfloat n, GLfloat f) {}
188041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDetachShader(GLuint program, GLuint shader) {}
189041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDisableVertexAttribArray(GLuint index) {}
190041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDrawArrays(GLenum mode, GLint first, GLsizei count) {}
191041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices) {}
192041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glEnableVertexAttribArray(GLuint index) {}
193041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glFinish(void) {}
194041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glFlush(void) {}
195041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {}
196041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {}
197041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glFrontFace(GLenum mode) {}
198041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glGenerateMipmap(GLenum target) {}
199041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn ReckGLint glGetAttribLocation(GLuint program, const GLchar *name) { return 1; }
200041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn ReckGLenum glGetError(void) { return GL_NO_ERROR; }
201041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn ReckGLint glGetUniformLocation(GLuint program, const GLchar *name) { return 2; }
202041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glHint(GLenum target, GLenum mode) {}
203041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glLineWidth(GLfloat width) {}
204041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glLinkProgram(GLuint program) {}
205041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glPixelStorei(GLenum pname, GLint param) {}
206041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glPolygonOffset(GLfloat factor, GLfloat units) {}
207041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) {}
208041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glReleaseShaderCompiler(void) {}
209041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {}
210041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glSampleCoverage(GLfloat value, GLboolean invert) {}
211041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glScissor(GLint x, GLint y, GLsizei width, GLsizei height) {}
212041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glShaderBinary(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length) {}
213041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glShaderSource(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length) {}
214041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glStencilFunc(GLenum func, GLint ref, GLuint mask) {}
215041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) {}
216041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glStencilMask(GLuint mask) {}
217041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glStencilMaskSeparate(GLenum face, GLuint mask) {}
218041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) {}
219041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) {}
220041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels) {}
221041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glTexParameterf(GLenum target, GLenum pname, GLfloat param) {}
222041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params) {}
223041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glTexParameteri(GLenum target, GLenum pname, GLint param) {}
224041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glTexParameteriv(GLenum target, GLenum pname, const GLint *params) {}
225041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels) {}
226041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform1f(GLint location, GLfloat v0) {}
227041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform1fv(GLint location, GLsizei count, const GLfloat *value) {}
228041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform1i(GLint location, GLint v0) {}
229041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform1iv(GLint location, GLsizei count, const GLint *value) {}
230041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform2f(GLint location, GLfloat v0, GLfloat v1) {}
231041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform2fv(GLint location, GLsizei count, const GLfloat *value) {}
232041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform2i(GLint location, GLint v0, GLint v1) {}
233041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform2iv(GLint location, GLsizei count, const GLint *value) {}
234041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {}
235041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform3fv(GLint location, GLsizei count, const GLfloat *value) {}
236041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) {}
237041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform3iv(GLint location, GLsizei count, const GLint *value) {}
238041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {}
239041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform4fv(GLint location, GLsizei count, const GLfloat *value) {}
240041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {}
241041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniform4iv(GLint location, GLsizei count, const GLint *value) {}
242041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {}
243041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {}
244041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {}
245041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glUseProgram(GLuint program) {}
246041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glValidateProgram(GLuint program) {}
247041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glVertexAttrib1f(GLuint index, GLfloat x) {}
248041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glVertexAttrib1fv(GLuint index, const GLfloat *v) {}
249041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) {}
250041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glVertexAttrib2fv(GLuint index, const GLfloat *v) {}
251041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) {}
252041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glVertexAttrib3fv(GLuint index, const GLfloat *v) {}
253041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {}
254041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glVertexAttrib4fv(GLuint index, const GLfloat *v) {}
255041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer) {}
256041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glViewport(GLint x, GLint y, GLsizei width, GLsizei height) {}
257041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
258041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
259041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck// gles2 ext
260041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glInsertEventMarkerEXT(GLsizei length, const GLchar *marker) {}
261041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glPushGroupMarkerEXT(GLsizei length, const GLchar *marker) {}
262041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glPopGroupMarkerEXT(void) {}
263041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments) {}
264041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) {}
265041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glEndTilingQCOM(GLbitfield preserveMask) {}
266041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {}
267041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
268041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck// GLES3
269041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reckvoid* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) {
270041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    return 0;
271041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
272041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck
273041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn ReckGLboolean glUnmapBuffer(GLenum target) {
274041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck    return GL_FALSE;
275041b985dbb2f75aa492236d46ab47dbda8c2c74eJohn Reck}
276