Merge "Load ES3 functions with eglGetProcAddress, not dlsym" into jb-mr2-dev
This commit is contained in:
@@ -30,4 +30,4 @@ OpenGL ES 2.0 path:
|
|||||||
[*1] The only dependency on API level 11 is the call to
|
[*1] The only dependency on API level 11 is the call to
|
||||||
setEGLContextClientVersion in GLES3JNIView. With a custom
|
setEGLContextClientVersion in GLES3JNIView. With a custom
|
||||||
EGLConfigChooser and EGLContextFactory the sample would be compatible
|
EGLConfigChooser and EGLContextFactory the sample would be compatible
|
||||||
with older API levels.
|
with older API levels.
|
||||||
|
|||||||
@@ -15,120 +15,114 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gl3stub.h"
|
#include "gl3stub.h"
|
||||||
#include <dlfcn.h>
|
|
||||||
|
|
||||||
|
|
||||||
GLboolean gl3stubInit() {
|
GLboolean gl3stubInit() {
|
||||||
void* so = dlopen("libGLESv3.so", RTLD_NOW | RTLD_GLOBAL);
|
#define FIND_PROC(s) s = (void*)eglGetProcAddress(#s)
|
||||||
if (!so)
|
FIND_PROC(glReadBuffer);
|
||||||
return GL_FALSE;
|
FIND_PROC(glDrawRangeElements);
|
||||||
|
FIND_PROC(glTexImage3D);
|
||||||
#define DLSYM(s) s = dlsym(so, #s)
|
FIND_PROC(glTexSubImage3D);
|
||||||
DLSYM(glReadBuffer);
|
FIND_PROC(glCopyTexSubImage3D);
|
||||||
DLSYM(glDrawRangeElements);
|
FIND_PROC(glCompressedTexImage3D);
|
||||||
DLSYM(glTexImage3D);
|
FIND_PROC(glCompressedTexSubImage3D);
|
||||||
DLSYM(glTexSubImage3D);
|
FIND_PROC(glGenQueries);
|
||||||
DLSYM(glCopyTexSubImage3D);
|
FIND_PROC(glDeleteQueries);
|
||||||
DLSYM(glCompressedTexImage3D);
|
FIND_PROC(glIsQuery);
|
||||||
DLSYM(glCompressedTexSubImage3D);
|
FIND_PROC(glBeginQuery);
|
||||||
DLSYM(glGenQueries);
|
FIND_PROC(glEndQuery);
|
||||||
DLSYM(glDeleteQueries);
|
FIND_PROC(glGetQueryiv);
|
||||||
DLSYM(glIsQuery);
|
FIND_PROC(glGetQueryObjectuiv);
|
||||||
DLSYM(glBeginQuery);
|
FIND_PROC(glUnmapBuffer);
|
||||||
DLSYM(glEndQuery);
|
FIND_PROC(glGetBufferPointerv);
|
||||||
DLSYM(glGetQueryiv);
|
FIND_PROC(glDrawBuffers);
|
||||||
DLSYM(glGetQueryObjectuiv);
|
FIND_PROC(glUniformMatrix2x3fv);
|
||||||
DLSYM(glUnmapBuffer);
|
FIND_PROC(glUniformMatrix3x2fv);
|
||||||
DLSYM(glGetBufferPointerv);
|
FIND_PROC(glUniformMatrix2x4fv);
|
||||||
DLSYM(glDrawBuffers);
|
FIND_PROC(glUniformMatrix4x2fv);
|
||||||
DLSYM(glUniformMatrix2x3fv);
|
FIND_PROC(glUniformMatrix3x4fv);
|
||||||
DLSYM(glUniformMatrix3x2fv);
|
FIND_PROC(glUniformMatrix4x3fv);
|
||||||
DLSYM(glUniformMatrix2x4fv);
|
FIND_PROC(glBlitFramebuffer);
|
||||||
DLSYM(glUniformMatrix4x2fv);
|
FIND_PROC(glRenderbufferStorageMultisample);
|
||||||
DLSYM(glUniformMatrix3x4fv);
|
FIND_PROC(glFramebufferTextureLayer);
|
||||||
DLSYM(glUniformMatrix4x3fv);
|
FIND_PROC(glMapBufferRange);
|
||||||
DLSYM(glBlitFramebuffer);
|
FIND_PROC(glFlushMappedBufferRange);
|
||||||
DLSYM(glRenderbufferStorageMultisample);
|
FIND_PROC(glBindVertexArray);
|
||||||
DLSYM(glFramebufferTextureLayer);
|
FIND_PROC(glDeleteVertexArrays);
|
||||||
DLSYM(glMapBufferRange);
|
FIND_PROC(glGenVertexArrays);
|
||||||
DLSYM(glFlushMappedBufferRange);
|
FIND_PROC(glIsVertexArray);
|
||||||
DLSYM(glBindVertexArray);
|
FIND_PROC(glGetIntegeri_v);
|
||||||
DLSYM(glDeleteVertexArrays);
|
FIND_PROC(glBeginTransformFeedback);
|
||||||
DLSYM(glGenVertexArrays);
|
FIND_PROC(glEndTransformFeedback);
|
||||||
DLSYM(glIsVertexArray);
|
FIND_PROC(glBindBufferRange);
|
||||||
DLSYM(glGetIntegeri_v);
|
FIND_PROC(glBindBufferBase);
|
||||||
DLSYM(glBeginTransformFeedback);
|
FIND_PROC(glTransformFeedbackVaryings);
|
||||||
DLSYM(glEndTransformFeedback);
|
FIND_PROC(glGetTransformFeedbackVarying);
|
||||||
DLSYM(glBindBufferRange);
|
FIND_PROC(glVertexAttribIPointer);
|
||||||
DLSYM(glBindBufferBase);
|
FIND_PROC(glGetVertexAttribIiv);
|
||||||
DLSYM(glTransformFeedbackVaryings);
|
FIND_PROC(glGetVertexAttribIuiv);
|
||||||
DLSYM(glGetTransformFeedbackVarying);
|
FIND_PROC(glVertexAttribI4i);
|
||||||
DLSYM(glVertexAttribIPointer);
|
FIND_PROC(glVertexAttribI4ui);
|
||||||
DLSYM(glGetVertexAttribIiv);
|
FIND_PROC(glVertexAttribI4iv);
|
||||||
DLSYM(glGetVertexAttribIuiv);
|
FIND_PROC(glVertexAttribI4uiv);
|
||||||
DLSYM(glVertexAttribI4i);
|
FIND_PROC(glGetUniformuiv);
|
||||||
DLSYM(glVertexAttribI4ui);
|
FIND_PROC(glGetFragDataLocation);
|
||||||
DLSYM(glVertexAttribI4iv);
|
FIND_PROC(glUniform1ui);
|
||||||
DLSYM(glVertexAttribI4uiv);
|
FIND_PROC(glUniform2ui);
|
||||||
DLSYM(glGetUniformuiv);
|
FIND_PROC(glUniform3ui);
|
||||||
DLSYM(glGetFragDataLocation);
|
FIND_PROC(glUniform4ui);
|
||||||
DLSYM(glUniform1ui);
|
FIND_PROC(glUniform1uiv);
|
||||||
DLSYM(glUniform2ui);
|
FIND_PROC(glUniform2uiv);
|
||||||
DLSYM(glUniform3ui);
|
FIND_PROC(glUniform3uiv);
|
||||||
DLSYM(glUniform4ui);
|
FIND_PROC(glUniform4uiv);
|
||||||
DLSYM(glUniform1uiv);
|
FIND_PROC(glClearBufferiv);
|
||||||
DLSYM(glUniform2uiv);
|
FIND_PROC(glClearBufferuiv);
|
||||||
DLSYM(glUniform3uiv);
|
FIND_PROC(glClearBufferfv);
|
||||||
DLSYM(glUniform4uiv);
|
FIND_PROC(glClearBufferfi);
|
||||||
DLSYM(glClearBufferiv);
|
FIND_PROC(glGetStringi);
|
||||||
DLSYM(glClearBufferuiv);
|
FIND_PROC(glCopyBufferSubData);
|
||||||
DLSYM(glClearBufferfv);
|
FIND_PROC(glGetUniformIndices);
|
||||||
DLSYM(glClearBufferfi);
|
FIND_PROC(glGetActiveUniformsiv);
|
||||||
DLSYM(glGetStringi);
|
FIND_PROC(glGetUniformBlockIndex);
|
||||||
DLSYM(glCopyBufferSubData);
|
FIND_PROC(glGetActiveUniformBlockiv);
|
||||||
DLSYM(glGetUniformIndices);
|
FIND_PROC(glGetActiveUniformBlockName);
|
||||||
DLSYM(glGetActiveUniformsiv);
|
FIND_PROC(glUniformBlockBinding);
|
||||||
DLSYM(glGetUniformBlockIndex);
|
FIND_PROC(glDrawArraysInstanced);
|
||||||
DLSYM(glGetActiveUniformBlockiv);
|
FIND_PROC(glDrawElementsInstanced);
|
||||||
DLSYM(glGetActiveUniformBlockName);
|
FIND_PROC(glFenceSync);
|
||||||
DLSYM(glUniformBlockBinding);
|
FIND_PROC(glIsSync);
|
||||||
DLSYM(glDrawArraysInstanced);
|
FIND_PROC(glDeleteSync);
|
||||||
DLSYM(glDrawElementsInstanced);
|
FIND_PROC(glClientWaitSync);
|
||||||
DLSYM(glFenceSync);
|
FIND_PROC(glWaitSync);
|
||||||
DLSYM(glIsSync);
|
FIND_PROC(glGetInteger64v);
|
||||||
DLSYM(glDeleteSync);
|
FIND_PROC(glGetSynciv);
|
||||||
DLSYM(glClientWaitSync);
|
FIND_PROC(glGetInteger64i_v);
|
||||||
DLSYM(glWaitSync);
|
FIND_PROC(glGetBufferParameteri64v);
|
||||||
DLSYM(glGetInteger64v);
|
FIND_PROC(glGenSamplers);
|
||||||
DLSYM(glGetSynciv);
|
FIND_PROC(glDeleteSamplers);
|
||||||
DLSYM(glGetInteger64i_v);
|
FIND_PROC(glIsSampler);
|
||||||
DLSYM(glGetBufferParameteri64v);
|
FIND_PROC(glBindSampler);
|
||||||
DLSYM(glGenSamplers);
|
FIND_PROC(glSamplerParameteri);
|
||||||
DLSYM(glDeleteSamplers);
|
FIND_PROC(glSamplerParameteriv);
|
||||||
DLSYM(glIsSampler);
|
FIND_PROC(glSamplerParameterf);
|
||||||
DLSYM(glBindSampler);
|
FIND_PROC(glSamplerParameterfv);
|
||||||
DLSYM(glSamplerParameteri);
|
FIND_PROC(glGetSamplerParameteriv);
|
||||||
DLSYM(glSamplerParameteriv);
|
FIND_PROC(glGetSamplerParameterfv);
|
||||||
DLSYM(glSamplerParameterf);
|
FIND_PROC(glVertexAttribDivisor);
|
||||||
DLSYM(glSamplerParameterfv);
|
FIND_PROC(glBindTransformFeedback);
|
||||||
DLSYM(glGetSamplerParameteriv);
|
FIND_PROC(glDeleteTransformFeedbacks);
|
||||||
DLSYM(glGetSamplerParameterfv);
|
FIND_PROC(glGenTransformFeedbacks);
|
||||||
DLSYM(glVertexAttribDivisor);
|
FIND_PROC(glIsTransformFeedback);
|
||||||
DLSYM(glBindTransformFeedback);
|
FIND_PROC(glPauseTransformFeedback);
|
||||||
DLSYM(glDeleteTransformFeedbacks);
|
FIND_PROC(glResumeTransformFeedback);
|
||||||
DLSYM(glGenTransformFeedbacks);
|
FIND_PROC(glGetProgramBinary);
|
||||||
DLSYM(glIsTransformFeedback);
|
FIND_PROC(glProgramBinary);
|
||||||
DLSYM(glPauseTransformFeedback);
|
FIND_PROC(glProgramParameteri);
|
||||||
DLSYM(glResumeTransformFeedback);
|
FIND_PROC(glInvalidateFramebuffer);
|
||||||
DLSYM(glGetProgramBinary);
|
FIND_PROC(glInvalidateSubFramebuffer);
|
||||||
DLSYM(glProgramBinary);
|
FIND_PROC(glTexStorage2D);
|
||||||
DLSYM(glProgramParameteri);
|
FIND_PROC(glTexStorage3D);
|
||||||
DLSYM(glInvalidateFramebuffer);
|
FIND_PROC(glGetInternalformativ);
|
||||||
DLSYM(glInvalidateSubFramebuffer);
|
#undef FIND_PROC
|
||||||
DLSYM(glTexStorage2D);
|
|
||||||
DLSYM(glTexStorage3D);
|
|
||||||
DLSYM(glGetInternalformativ);
|
|
||||||
#undef DLSYM
|
|
||||||
|
|
||||||
if (!glReadBuffer ||
|
if (!glReadBuffer ||
|
||||||
!glDrawRangeElements ||
|
!glDrawRangeElements ||
|
||||||
@@ -235,7 +229,6 @@ GLboolean gl3stubInit() {
|
|||||||
!glTexStorage3D ||
|
!glTexStorage3D ||
|
||||||
!glGetInternalformativ)
|
!glGetInternalformativ)
|
||||||
{
|
{
|
||||||
dlclose(so);
|
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user