aboutsummaryrefslogtreecommitdiff
path: root/opengles-3.1-stubs
diff options
context:
space:
mode:
authorAnthony Barbier <anthony.barbier@arm.com>2017-12-14 16:27:41 +0000
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:42:33 +0000
commit14c86a9246202c0c928c03cf6886dde134fba525 (patch)
treec7b670b52fb257f133f02ff74894ba461336828d /opengles-3.1-stubs
parent08c5a06e2b49df0d7912deedd6d26d2c603cfe58 (diff)
downloadComputeLibrary-14c86a9246202c0c928c03cf6886dde134fba525.tar.gz
COMPMID-557 Added some GLES documentation and rework following OOB testing
Change-Id: I56333ed23d30c5ec3094f64b78a023589064fe06 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/113375 Tested-by: BSG Visual Compute Jenkins server to access repositories on http://mpd-gerrit.cambridge.arm.com <bsgcomp@arm.com> Reviewed-by: Jim He <jim.he@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'opengles-3.1-stubs')
-rw-r--r--opengles-3.1-stubs/EGL.c40
-rw-r--r--opengles-3.1-stubs/GLESv2.c269
-rw-r--r--opengles-3.1-stubs/Readme.txt2
-rw-r--r--opengles-3.1-stubs/SConscript11
4 files changed, 322 insertions, 0 deletions
diff --git a/opengles-3.1-stubs/EGL.c b/opengles-3.1-stubs/EGL.c
new file mode 100644
index 0000000000..dc0d4bd989
--- /dev/null
+++ b/opengles-3.1-stubs/EGL.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+
+#define PRINT_STUB_ERROR printf("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nERROR: %s from stub libEGL.so library called! This library can be used to resolve OpenGL ES symbols at compile time but must *not* be in your runtime path (You need to use a real OpenGL ES implementation, this one is empty)\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n", __func__)
+
+void eglBindAPI(void) { PRINT_STUB_ERROR; return; }
+void eglBindTexImage(void) { PRINT_STUB_ERROR; return; }
+void eglChooseConfig(void) { PRINT_STUB_ERROR; return; }
+void eglCopyBuffers(void) { PRINT_STUB_ERROR; return; }
+void eglCreateContext(void) { PRINT_STUB_ERROR; return; }
+void eglCreateImageKHR (void) { PRINT_STUB_ERROR; return; }
+void eglCreatePbufferFromClientBuffer(void) { PRINT_STUB_ERROR; return; }
+void eglCreatePbufferSurface(void) { PRINT_STUB_ERROR; return; }
+void eglCreatePixmapSurface(void) { PRINT_STUB_ERROR; return; }
+void eglCreateWindowSurface(void) { PRINT_STUB_ERROR; return; }
+void eglDestroyContext(void) { PRINT_STUB_ERROR; return; }
+void eglDestroyImageKHR (void) { PRINT_STUB_ERROR; return; }
+void eglDestroySurface(void) { PRINT_STUB_ERROR; return; }
+void eglGetConfigAttrib(void) { PRINT_STUB_ERROR; return; }
+void eglGetConfigs(void) { PRINT_STUB_ERROR; return; }
+void eglGetCurrentContext(void) { PRINT_STUB_ERROR; return; }
+void eglGetCurrentDisplay(void) { PRINT_STUB_ERROR; return; }
+void eglGetCurrentSurface(void) { PRINT_STUB_ERROR; return; }
+void eglGetDisplay(void) { PRINT_STUB_ERROR; return; }
+void eglGetError(void) { PRINT_STUB_ERROR; return; }
+void eglGetProcAddress(void) { PRINT_STUB_ERROR; return; }
+void eglInitialize(void) { PRINT_STUB_ERROR; return; }
+void eglMakeCurrent(void) { PRINT_STUB_ERROR; return; }
+void eglQueryAPI(void) { PRINT_STUB_ERROR; return; }
+void eglQueryContext(void) { PRINT_STUB_ERROR; return; }
+void eglQueryString(void) { PRINT_STUB_ERROR; return; }
+void eglQuerySurface(void) { PRINT_STUB_ERROR; return; }
+void eglReleaseTexImage(void) { PRINT_STUB_ERROR; return; }
+void eglReleaseThread(void) { PRINT_STUB_ERROR; return; }
+void eglSurfaceAttrib(void) { PRINT_STUB_ERROR; return; }
+void eglSwapBuffers(void) { PRINT_STUB_ERROR; return; }
+void eglSwapInterval(void) { PRINT_STUB_ERROR; return; }
+void eglTerminate(void) { PRINT_STUB_ERROR; return; }
+void eglWaitClient(void) { PRINT_STUB_ERROR; return; }
+void eglWaitGL(void) { PRINT_STUB_ERROR; return; }
+void eglWaitNative(void) { PRINT_STUB_ERROR; return; }
diff --git a/opengles-3.1-stubs/GLESv2.c b/opengles-3.1-stubs/GLESv2.c
new file mode 100644
index 0000000000..c58f0f7772
--- /dev/null
+++ b/opengles-3.1-stubs/GLESv2.c
@@ -0,0 +1,269 @@
+#include <stdio.h>
+
+#define PRINT_STUB_ERROR printf("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nERROR: %s from stub libGLESv2.so library called! This library can be used to resolve OpenGL ES symbols at compile time but must *not* be in your runtime path (You need to use a real OpenGL ES implementation, this one is empty)\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n", __func__)
+
+void glActiveTexture(void) { PRINT_STUB_ERROR; return; }
+void glAttachShader(void) { PRINT_STUB_ERROR; return; }
+void glBindAttribLocation(void) { PRINT_STUB_ERROR; return; }
+void glBindBuffer(void) { PRINT_STUB_ERROR; return; }
+void glBindFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glBindRenderbuffer(void) { PRINT_STUB_ERROR; return; }
+void glBindTexture(void) { PRINT_STUB_ERROR; return; }
+void glBlendColor(void) { PRINT_STUB_ERROR; return; }
+void glBlendEquation(void) { PRINT_STUB_ERROR; return; }
+void glBlendEquationSeparate(void) { PRINT_STUB_ERROR; return; }
+void glBlendFunc(void) { PRINT_STUB_ERROR; return; }
+void glBlendFuncSeparate(void) { PRINT_STUB_ERROR; return; }
+void glBufferData(void) { PRINT_STUB_ERROR; return; }
+void glBufferSubData(void) { PRINT_STUB_ERROR; return; }
+void glCheckFramebufferStatus(void) { PRINT_STUB_ERROR; return; }
+void glClear(void) { PRINT_STUB_ERROR; return; }
+void glClearColor(void) { PRINT_STUB_ERROR; return; }
+void glClearDepthf(void) { PRINT_STUB_ERROR; return; }
+void glClearStencil(void) { PRINT_STUB_ERROR; return; }
+void glColorMask(void) { PRINT_STUB_ERROR; return; }
+void glCompileShader(void) { PRINT_STUB_ERROR; return; }
+void glCompressedTexImage2D(void) { PRINT_STUB_ERROR; return; }
+void glCompressedTexSubImage2D(void) { PRINT_STUB_ERROR; return; }
+void glCopyTexImage2D(void) { PRINT_STUB_ERROR; return; }
+void glCopyTexSubImage2D(void) { PRINT_STUB_ERROR; return; }
+void glCreateProgram(void) { PRINT_STUB_ERROR; return; }
+void glCreateShader(void) { PRINT_STUB_ERROR; return; }
+void glCullFace(void) { PRINT_STUB_ERROR; return; }
+void glDeleteBuffers(void) { PRINT_STUB_ERROR; return; }
+void glDeleteFramebuffers(void) { PRINT_STUB_ERROR; return; }
+void glDeleteProgram(void) { PRINT_STUB_ERROR; return; }
+void glDeleteRenderbuffers(void) { PRINT_STUB_ERROR; return; }
+void glDeleteShader(void) { PRINT_STUB_ERROR; return; }
+void glDeleteTextures(void) { PRINT_STUB_ERROR; return; }
+void glDepthFunc(void) { PRINT_STUB_ERROR; return; }
+void glDepthMask(void) { PRINT_STUB_ERROR; return; }
+void glDepthRangef(void) { PRINT_STUB_ERROR; return; }
+void glDetachShader(void) { PRINT_STUB_ERROR; return; }
+void glDisable(void) { PRINT_STUB_ERROR; return; }
+void glDisableVertexAttribArray(void) { PRINT_STUB_ERROR; return; }
+void glDrawArrays(void) { PRINT_STUB_ERROR; return; }
+void glDrawElements(void) { PRINT_STUB_ERROR; return; }
+void glEnable(void) { PRINT_STUB_ERROR; return; }
+void glEnableVertexAttribArray(void) { PRINT_STUB_ERROR; return; }
+void glFinish(void) { PRINT_STUB_ERROR; return; }
+void glFlush(void) { PRINT_STUB_ERROR; return; }
+void glFramebufferRenderbuffer(void) { PRINT_STUB_ERROR; return; }
+void glFramebufferTexture2D(void) { PRINT_STUB_ERROR; return; }
+void glFrontFace(void) { PRINT_STUB_ERROR; return; }
+void glGenBuffers(void) { PRINT_STUB_ERROR; return; }
+void glGenerateMipmap(void) { PRINT_STUB_ERROR; return; }
+void glGenFramebuffers(void) { PRINT_STUB_ERROR; return; }
+void glGenRenderbuffers(void) { PRINT_STUB_ERROR; return; }
+void glGenTextures(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveAttrib(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveUniform(void) { PRINT_STUB_ERROR; return; }
+void glGetAttachedShaders(void) { PRINT_STUB_ERROR; return; }
+void glGetAttribLocation(void) { PRINT_STUB_ERROR; return; }
+void glGetBooleanv(void) { PRINT_STUB_ERROR; return; }
+void glGetBufferParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetError(void) { PRINT_STUB_ERROR; return; }
+void glGetFloatv(void) { PRINT_STUB_ERROR; return; }
+void glGetFramebufferAttachmentParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetIntegerv(void) { PRINT_STUB_ERROR; return; }
+void glGetProgramiv(void) { PRINT_STUB_ERROR; return; }
+void glGetProgramInfoLog(void) { PRINT_STUB_ERROR; return; }
+void glGetRenderbufferParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetShaderiv(void) { PRINT_STUB_ERROR; return; }
+void glGetShaderInfoLog(void) { PRINT_STUB_ERROR; return; }
+void glGetShaderPrecisionFormat(void) { PRINT_STUB_ERROR; return; }
+void glGetShaderSource(void) { PRINT_STUB_ERROR; return; }
+void glGetString(void) { PRINT_STUB_ERROR; return; }
+void glGetTexParameterfv(void) { PRINT_STUB_ERROR; return; }
+void glGetTexParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformfv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformiv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformLocation(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribfv(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribiv(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribPointerv(void) { PRINT_STUB_ERROR; return; }
+void glHint(void) { PRINT_STUB_ERROR; return; }
+void glIsBuffer(void) { PRINT_STUB_ERROR; return; }
+void glIsEnabled(void) { PRINT_STUB_ERROR; return; }
+void glIsFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glIsProgram(void) { PRINT_STUB_ERROR; return; }
+void glIsRenderbuffer(void) { PRINT_STUB_ERROR; return; }
+void glIsShader(void) { PRINT_STUB_ERROR; return; }
+void glIsTexture(void) { PRINT_STUB_ERROR; return; }
+void glLineWidth(void) { PRINT_STUB_ERROR; return; }
+void glLinkProgram(void) { PRINT_STUB_ERROR; return; }
+void glPixelStorei(void) { PRINT_STUB_ERROR; return; }
+void glPolygonOffset(void) { PRINT_STUB_ERROR; return; }
+void glReadPixels(void) { PRINT_STUB_ERROR; return; }
+void glReleaseShaderCompiler(void) { PRINT_STUB_ERROR; return; }
+void glRenderbufferStorage(void) { PRINT_STUB_ERROR; return; }
+void glSampleCoverage(void) { PRINT_STUB_ERROR; return; }
+void glScissor(void) { PRINT_STUB_ERROR; return; }
+void glShaderBinary(void) { PRINT_STUB_ERROR; return; }
+void glShaderSource(void) { PRINT_STUB_ERROR; return; }
+void glStencilFunc(void) { PRINT_STUB_ERROR; return; }
+void glStencilFuncSeparate(void) { PRINT_STUB_ERROR; return; }
+void glStencilMask(void) { PRINT_STUB_ERROR; return; }
+void glStencilMaskSeparate(void) { PRINT_STUB_ERROR; return; }
+void glStencilOp(void) { PRINT_STUB_ERROR; return; }
+void glStencilOpSeparate(void) { PRINT_STUB_ERROR; return; }
+void glTexImage2D(void) { PRINT_STUB_ERROR; return; }
+void glTexParameterf(void) { PRINT_STUB_ERROR; return; }
+void glTexParameterfv(void) { PRINT_STUB_ERROR; return; }
+void glTexParameteri(void) { PRINT_STUB_ERROR; return; }
+void glTexParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glTexSubImage2D(void) { PRINT_STUB_ERROR; return; }
+void glUniform1f(void) { PRINT_STUB_ERROR; return; }
+void glUniform1fv(void) { PRINT_STUB_ERROR; return; }
+void glUniform1i(void) { PRINT_STUB_ERROR; return; }
+void glUniform1iv(void) { PRINT_STUB_ERROR; return; }
+void glUniform2f(void) { PRINT_STUB_ERROR; return; }
+void glUniform2fv(void) { PRINT_STUB_ERROR; return; }
+void glUniform2i(void) { PRINT_STUB_ERROR; return; }
+void glUniform2iv(void) { PRINT_STUB_ERROR; return; }
+void glUniform3f(void) { PRINT_STUB_ERROR; return; }
+void glUniform3fv(void) { PRINT_STUB_ERROR; return; }
+void glUniform3i(void) { PRINT_STUB_ERROR; return; }
+void glUniform3iv(void) { PRINT_STUB_ERROR; return; }
+void glUniform4f(void) { PRINT_STUB_ERROR; return; }
+void glUniform4fv(void) { PRINT_STUB_ERROR; return; }
+void glUniform4i(void) { PRINT_STUB_ERROR; return; }
+void glUniform4iv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix2fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix3fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix4fv(void) { PRINT_STUB_ERROR; return; }
+void glUseProgram(void) { PRINT_STUB_ERROR; return; }
+void glValidateProgram(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib1f(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib1fv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib2f(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib2fv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib3f(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib3fv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib4f(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttrib4fv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribPointer(void) { PRINT_STUB_ERROR; return; }
+void glViewport(void) { PRINT_STUB_ERROR; return; }
+
+/* OpenGL ES 3.0 */
+
+void glReadBuffer(void) { PRINT_STUB_ERROR; return; }
+void glDrawRangeElements(void) { PRINT_STUB_ERROR; return; }
+void glTexImage3D(void) { PRINT_STUB_ERROR; return; }
+void glTexSubImage3D(void) { PRINT_STUB_ERROR; return; }
+void glCopyTexSubImage3D(void) { PRINT_STUB_ERROR; return; }
+void glCompressedTexImage3D(void) { PRINT_STUB_ERROR; return; }
+void glCompressedTexSubImage3D(void) { PRINT_STUB_ERROR; return; }
+void glGenQueries(void) { PRINT_STUB_ERROR; return; }
+void glDeleteQueries(void) { PRINT_STUB_ERROR; return; }
+void glIsQuery(void) { PRINT_STUB_ERROR; return; }
+void glBeginQuery(void) { PRINT_STUB_ERROR; return; }
+void glEndQuery(void) { PRINT_STUB_ERROR; return; }
+void glGetQueryiv(void) { PRINT_STUB_ERROR; return; }
+void glGetQueryObjectuiv(void) { PRINT_STUB_ERROR; return; }
+void glUnmapBuffer(void) { PRINT_STUB_ERROR; return; }
+void glGetBufferPointerv(void) { PRINT_STUB_ERROR; return; }
+void glDrawBuffers(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix2x3fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix3x2fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix2x4fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix4x2fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix3x4fv(void) { PRINT_STUB_ERROR; return; }
+void glUniformMatrix4x3fv(void) { PRINT_STUB_ERROR; return; }
+void glBlitFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glRenderbufferStorageMultisample(void) { PRINT_STUB_ERROR; return; }
+void glFramebufferTextureLayer(void) { PRINT_STUB_ERROR; return; }
+void glMapBufferRange(void) { PRINT_STUB_ERROR; return; }
+void glFlushMappedBufferRange(void) { PRINT_STUB_ERROR; return; }
+void glBindVertexArray(void) { PRINT_STUB_ERROR; return; }
+void glDeleteVertexArrays(void) { PRINT_STUB_ERROR; return; }
+void glGenVertexArrays(void) { PRINT_STUB_ERROR; return; }
+void glIsVertexArray(void) { PRINT_STUB_ERROR; return; }
+void glGetIntegeri_v(void) { PRINT_STUB_ERROR; return; }
+void glBeginTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glEndTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glBindBufferRange(void) { PRINT_STUB_ERROR; return; }
+void glBindBufferBase(void) { PRINT_STUB_ERROR; return; }
+void glTransformFeedbackVaryings(void) { PRINT_STUB_ERROR; return; }
+void glGetTransformFeedbackVarying(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribIPointer(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribIiv(void) { PRINT_STUB_ERROR; return; }
+void glGetVertexAttribIuiv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribI4i(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribI4ui(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribI4iv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribI4uiv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformuiv(void) { PRINT_STUB_ERROR; return; }
+void glGetFragDataLocation(void) { PRINT_STUB_ERROR; return; }
+void glUniform1ui(void) { PRINT_STUB_ERROR; return; }
+void glUniform2ui(void) { PRINT_STUB_ERROR; return; }
+void glUniform3ui(void) { PRINT_STUB_ERROR; return; }
+void glUniform4ui(void) { PRINT_STUB_ERROR; return; }
+void glUniform1uiv(void) { PRINT_STUB_ERROR; return; }
+void glUniform2uiv(void) { PRINT_STUB_ERROR; return; }
+void glUniform3uiv(void) { PRINT_STUB_ERROR; return; }
+void glUniform4uiv(void) { PRINT_STUB_ERROR; return; }
+void glClearBufferiv(void) { PRINT_STUB_ERROR; return; }
+void glClearBufferuiv(void) { PRINT_STUB_ERROR; return; }
+void glClearBufferfv(void) { PRINT_STUB_ERROR; return; }
+void glClearBufferfi(void) { PRINT_STUB_ERROR; return; }
+void glGetStringi(void) { PRINT_STUB_ERROR; return; }
+void glCopyBufferSubData(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformIndices(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveUniformsiv(void) { PRINT_STUB_ERROR; return; }
+void glGetUniformBlockIndex(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveUniformBlockiv(void) { PRINT_STUB_ERROR; return; }
+void glGetActiveUniformBlockName(void) { PRINT_STUB_ERROR; return; }
+void glUniformBlockBinding(void) { PRINT_STUB_ERROR; return; }
+void glDrawArraysInstanced(void) { PRINT_STUB_ERROR; return; }
+void glDrawElementsInstanced(void) { PRINT_STUB_ERROR; return; }
+void glFenceSync(void) { PRINT_STUB_ERROR; return; }
+void glIsSync(void) { PRINT_STUB_ERROR; return; }
+void glDeleteSync(void) { PRINT_STUB_ERROR; return; }
+void glClientWaitSync(void) { PRINT_STUB_ERROR; return; }
+void glWaitSync(void) { PRINT_STUB_ERROR; return; }
+void glGetInteger64v(void) { PRINT_STUB_ERROR; return; }
+void glGetSynciv(void) { PRINT_STUB_ERROR; return; }
+void glGetInteger64i_v(void) { PRINT_STUB_ERROR; return; }
+void glGetBufferParameteri64v(void) { PRINT_STUB_ERROR; return; }
+void glGenSamplers(void) { PRINT_STUB_ERROR; return; }
+void glDeleteSamplers(void) { PRINT_STUB_ERROR; return; }
+void glIsSampler(void) { PRINT_STUB_ERROR; return; }
+void glBindSampler(void) { PRINT_STUB_ERROR; return; }
+void glSamplerParameteri(void) { PRINT_STUB_ERROR; return; }
+void glSamplerParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glSamplerParameterf(void) { PRINT_STUB_ERROR; return; }
+void glSamplerParameterfv(void) { PRINT_STUB_ERROR; return; }
+void glGetSamplerParameteriv(void) { PRINT_STUB_ERROR; return; }
+void glGetSamplerParameterfv(void) { PRINT_STUB_ERROR; return; }
+void glVertexAttribDivisor(void) { PRINT_STUB_ERROR; return; }
+void glBindTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glDeleteTransformFeedbacks(void) { PRINT_STUB_ERROR; return; }
+void glGenTransformFeedbacks(void) { PRINT_STUB_ERROR; return; }
+void glIsTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glPauseTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glResumeTransformFeedback(void) { PRINT_STUB_ERROR; return; }
+void glGetProgramBinary(void) { PRINT_STUB_ERROR; return; }
+void glProgramBinary(void) { PRINT_STUB_ERROR; return; }
+void glProgramParameteri(void) { PRINT_STUB_ERROR; return; }
+void glInvalidateFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glInvalidateSubFramebuffer(void) { PRINT_STUB_ERROR; return; }
+void glTexStorage2D(void) { PRINT_STUB_ERROR; return; }
+void glTexStorage3D(void) { PRINT_STUB_ERROR; return; }
+void glGetInternalformativ(void) { PRINT_STUB_ERROR; return; }
+
+/* OpenGL ES 3.1, incomplete */
+
+void glProgramUniform1ui(void) { PRINT_STUB_ERROR; return; }
+void glDispatchCompute(void) { PRINT_STUB_ERROR; return; }
+void glMemoryBarrier(void) { PRINT_STUB_ERROR; return; }
+void glBindImageTexture(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniformMatrix4fv(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform1f(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform2f(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform3f(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform3fv(void) { PRINT_STUB_ERROR; return; }
+void glProgramUniform4f(void) { PRINT_STUB_ERROR; return; }
+void glDrawElementsIndirect(void) { PRINT_STUB_ERROR; return; }
+
+
diff --git a/opengles-3.1-stubs/Readme.txt b/opengles-3.1-stubs/Readme.txt
new file mode 100644
index 0000000000..4c079b1b38
--- /dev/null
+++ b/opengles-3.1-stubs/Readme.txt
@@ -0,0 +1,2 @@
+These are dummy libraries for linking against at build time.
+The application will require the real device libraries to run.
diff --git a/opengles-3.1-stubs/SConscript b/opengles-3.1-stubs/SConscript
new file mode 100644
index 0000000000..5d4cb87811
--- /dev/null
+++ b/opengles-3.1-stubs/SConscript
@@ -0,0 +1,11 @@
+Import("env")
+
+egl = env.SharedLibrary("EGL", "EGL.c")
+alias = Alias("egl", egl)
+Default(alias)
+Export("egl")
+
+glesv2 = env.SharedLibrary("GLESv2", "GLESv2.c")
+alias = Alias("glesv2", glesv2)
+Default(alias)
+Export("glesv2")