blob: c34d791e5029db95a53a79a8ed48e48ed65bbaf6 [file] [log] [blame]
/*
* Copyright 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <EGL/egl.h>
#include "gl3stub.h"
GLboolean gl3stubInit()
{
#define FIND_PROC(s) s = (void*)eglGetProcAddress(#s);
FIND_PROC( glReadBuffer );
FIND_PROC( glDrawRangeElements );
FIND_PROC( glTexImage3D );
FIND_PROC( glTexSubImage3D );
FIND_PROC( glCopyTexSubImage3D );
FIND_PROC( glCompressedTexImage3D );
FIND_PROC( glCompressedTexSubImage3D );
FIND_PROC( glGenQueries );
FIND_PROC( glDeleteQueries );
FIND_PROC( glIsQuery );
FIND_PROC( glBeginQuery );
FIND_PROC( glEndQuery );
FIND_PROC( glGetQueryiv );
FIND_PROC( glGetQueryObjectuiv );
FIND_PROC( glUnmapBuffer );
FIND_PROC( glGetBufferPointerv );
FIND_PROC( glDrawBuffers );
FIND_PROC( glUniformMatrix2x3fv );
FIND_PROC( glUniformMatrix3x2fv );
FIND_PROC( glUniformMatrix2x4fv );
FIND_PROC( glUniformMatrix4x2fv );
FIND_PROC( glUniformMatrix3x4fv );
FIND_PROC( glUniformMatrix4x3fv );
FIND_PROC( glBlitFramebuffer );
FIND_PROC( glRenderbufferStorageMultisample );
FIND_PROC( glFramebufferTextureLayer );
FIND_PROC( glMapBufferRange );
FIND_PROC( glFlushMappedBufferRange );
FIND_PROC( glBindVertexArray );
FIND_PROC( glDeleteVertexArrays );
FIND_PROC( glGenVertexArrays );
FIND_PROC( glIsVertexArray );
FIND_PROC( glGetIntegeri_v );
FIND_PROC( glBeginTransformFeedback );
FIND_PROC( glEndTransformFeedback );
FIND_PROC( glBindBufferRange );
FIND_PROC( glBindBufferBase );
FIND_PROC( glTransformFeedbackVaryings );
FIND_PROC( glGetTransformFeedbackVarying );
FIND_PROC( glVertexAttribIPointer );
FIND_PROC( glGetVertexAttribIiv );
FIND_PROC( glGetVertexAttribIuiv );
FIND_PROC( glVertexAttribI4i );
FIND_PROC( glVertexAttribI4ui );
FIND_PROC( glVertexAttribI4iv );
FIND_PROC( glVertexAttribI4uiv );
FIND_PROC( glGetUniformuiv );
FIND_PROC( glGetFragDataLocation );
FIND_PROC( glUniform1ui );
FIND_PROC( glUniform2ui );
FIND_PROC( glUniform3ui );
FIND_PROC( glUniform4ui );
FIND_PROC( glUniform1uiv );
FIND_PROC( glUniform2uiv );
FIND_PROC( glUniform3uiv );
FIND_PROC( glUniform4uiv );
FIND_PROC( glClearBufferiv );
FIND_PROC( glClearBufferuiv );
FIND_PROC( glClearBufferfv );
FIND_PROC( glClearBufferfi );
FIND_PROC( glGetStringi );
FIND_PROC( glCopyBufferSubData );
FIND_PROC( glGetUniformIndices );
FIND_PROC( glGetActiveUniformsiv );
FIND_PROC( glGetUniformBlockIndex );
FIND_PROC( glGetActiveUniformBlockiv );
FIND_PROC( glGetActiveUniformBlockName );
FIND_PROC( glUniformBlockBinding );
FIND_PROC( glDrawArraysInstanced );
FIND_PROC( glDrawElementsInstanced );
FIND_PROC( glFenceSync );
FIND_PROC( glIsSync );
FIND_PROC( glDeleteSync );
FIND_PROC( glClientWaitSync );
FIND_PROC( glWaitSync );
FIND_PROC( glGetInteger64v );
FIND_PROC( glGetSynciv );
FIND_PROC( glGetInteger64i_v );
FIND_PROC( glGetBufferParameteri64v );
FIND_PROC( glGenSamplers );
FIND_PROC( glDeleteSamplers );
FIND_PROC( glIsSampler );
FIND_PROC( glBindSampler );
FIND_PROC( glSamplerParameteri );
FIND_PROC( glSamplerParameteriv );
FIND_PROC( glSamplerParameterf );
FIND_PROC( glSamplerParameterfv );
FIND_PROC( glGetSamplerParameteriv );
FIND_PROC( glGetSamplerParameterfv );
FIND_PROC( glVertexAttribDivisor );
FIND_PROC( glBindTransformFeedback );
FIND_PROC( glDeleteTransformFeedbacks );
FIND_PROC( glGenTransformFeedbacks );
FIND_PROC( glIsTransformFeedback );
FIND_PROC( glPauseTransformFeedback );
FIND_PROC( glResumeTransformFeedback );
FIND_PROC( glGetProgramBinary );
FIND_PROC( glProgramBinary );
FIND_PROC( glProgramParameteri );
FIND_PROC( glInvalidateFramebuffer );
FIND_PROC( glInvalidateSubFramebuffer );
FIND_PROC( glTexStorage2D );
FIND_PROC( glTexStorage3D );
FIND_PROC( glGetInternalformativ );
#undef FIND_PROC
if( !glReadBuffer || !glDrawRangeElements || !glTexImage3D || !glTexSubImage3D
|| !glCopyTexSubImage3D || !glCompressedTexImage3D
|| !glCompressedTexSubImage3D || !glGenQueries || !glDeleteQueries
|| !glIsQuery || !glBeginQuery || !glEndQuery || !glGetQueryiv
|| !glGetQueryObjectuiv || !glUnmapBuffer || !glGetBufferPointerv
|| !glDrawBuffers || !glUniformMatrix2x3fv || !glUniformMatrix3x2fv
|| !glUniformMatrix2x4fv || !glUniformMatrix4x2fv || !glUniformMatrix3x4fv
|| !glUniformMatrix4x3fv || !glBlitFramebuffer
|| !glRenderbufferStorageMultisample || !glFramebufferTextureLayer
|| !glMapBufferRange || !glFlushMappedBufferRange || !glBindVertexArray
|| !glDeleteVertexArrays || !glGenVertexArrays || !glIsVertexArray
|| !glGetIntegeri_v || !glBeginTransformFeedback || !glEndTransformFeedback
|| !glBindBufferRange || !glBindBufferBase || !glTransformFeedbackVaryings
|| !glGetTransformFeedbackVarying || !glVertexAttribIPointer
|| !glGetVertexAttribIiv || !glGetVertexAttribIuiv || !glVertexAttribI4i
|| !glVertexAttribI4ui || !glVertexAttribI4iv || !glVertexAttribI4uiv
|| !glGetUniformuiv || !glGetFragDataLocation || !glUniform1ui
|| !glUniform2ui || !glUniform3ui || !glUniform4ui || !glUniform1uiv
|| !glUniform2uiv || !glUniform3uiv || !glUniform4uiv || !glClearBufferiv
|| !glClearBufferuiv || !glClearBufferfv || !glClearBufferfi || !glGetStringi
|| !glCopyBufferSubData || !glGetUniformIndices || !glGetActiveUniformsiv
|| !glGetUniformBlockIndex || !glGetActiveUniformBlockiv
|| !glGetActiveUniformBlockName || !glUniformBlockBinding
|| !glDrawArraysInstanced || !glDrawElementsInstanced || !glFenceSync
|| !glIsSync || !glDeleteSync || !glClientWaitSync || !glWaitSync
|| !glGetInteger64v || !glGetSynciv || !glGetInteger64i_v
|| !glGetBufferParameteri64v || !glGenSamplers || !glDeleteSamplers
|| !glIsSampler || !glBindSampler || !glSamplerParameteri
|| !glSamplerParameteriv || !glSamplerParameterf || !glSamplerParameterfv
|| !glGetSamplerParameteriv || !glGetSamplerParameterfv
|| !glVertexAttribDivisor || !glBindTransformFeedback
|| !glDeleteTransformFeedbacks || !glGenTransformFeedbacks
|| !glIsTransformFeedback || !glPauseTransformFeedback
|| !glResumeTransformFeedback || !glGetProgramBinary || !glProgramBinary
|| !glProgramParameteri || !glInvalidateFramebuffer
|| !glInvalidateSubFramebuffer || !glTexStorage2D || !glTexStorage3D
|| !glGetInternalformativ )
{
return GL_FALSE;
}
return GL_TRUE;
}
/* Function pointer definitions */GL_APICALL void (* GL_APIENTRY glReadBuffer)( GLenum mode );
GL_APICALL void (* GL_APIENTRY glDrawRangeElements)( GLenum mode,
GLuint start,
GLuint end,
GLsizei count,
GLenum type,
const GLvoid* indices );
GL_APICALL void (* GL_APIENTRY glTexImage3D)( GLenum target,
GLint level,
GLint internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
GLint border,
GLenum format,
GLenum type,
const GLvoid* pixels );
GL_APICALL void (* GL_APIENTRY glTexSubImage3D)( GLenum target,
GLint level,
GLint xoffset,
GLint yoffset,
GLint zoffset,
GLsizei width,
GLsizei height,
GLsizei depth,
GLenum format,
GLenum type,
const GLvoid* pixels );
GL_APICALL void (* GL_APIENTRY glCopyTexSubImage3D)( GLenum target,
GLint level,
GLint xoffset,
GLint yoffset,
GLint zoffset,
GLint x,
GLint y,
GLsizei width,
GLsizei height );
GL_APICALL void (* GL_APIENTRY glCompressedTexImage3D)( GLenum target,
GLint level,
GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
GLint border,
GLsizei imageSize,
const GLvoid* data );
GL_APICALL void (* GL_APIENTRY glCompressedTexSubImage3D)( GLenum target,
GLint level,
GLint xoffset,
GLint yoffset,
GLint zoffset,
GLsizei width,
GLsizei height,
GLsizei depth,
GLenum format,
GLsizei imageSize,
const GLvoid* data );
GL_APICALL void (* GL_APIENTRY glGenQueries)( GLsizei n, GLuint* ids );
GL_APICALL void (* GL_APIENTRY glDeleteQueries)( GLsizei n, const GLuint* ids );
GL_APICALL GLboolean (* GL_APIENTRY glIsQuery)( GLuint id );
GL_APICALL void (* GL_APIENTRY glBeginQuery)( GLenum target, GLuint id );
GL_APICALL void (* GL_APIENTRY glEndQuery)( GLenum target );
GL_APICALL void (* GL_APIENTRY glGetQueryiv)( GLenum target, GLenum pname, GLint* params );
GL_APICALL void (* GL_APIENTRY glGetQueryObjectuiv)( GLuint id,
GLenum pname,
GLuint* params );
GL_APICALL GLboolean (* GL_APIENTRY glUnmapBuffer)( GLenum target );
GL_APICALL void (* GL_APIENTRY glGetBufferPointerv)( GLenum target,
GLenum pname,
GLvoid** params );
GL_APICALL void (* GL_APIENTRY glDrawBuffers)( GLsizei n, const GLenum* bufs );
GL_APICALL void (* GL_APIENTRY glUniformMatrix2x3fv)( GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value );
GL_APICALL void (* GL_APIENTRY glUniformMatrix3x2fv)( GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value );
GL_APICALL void (* GL_APIENTRY glUniformMatrix2x4fv)( GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value );
GL_APICALL void (* GL_APIENTRY glUniformMatrix4x2fv)( GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value );
GL_APICALL void (* GL_APIENTRY glUniformMatrix3x4fv)( GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value );
GL_APICALL void (* GL_APIENTRY glUniformMatrix4x3fv)( GLint location,
GLsizei count,
GLboolean transpose,
const GLfloat* value );
GL_APICALL void (* GL_APIENTRY glBlitFramebuffer)( GLint srcX0,
GLint srcY0,
GLint srcX1,
GLint srcY1,
GLint dstX0,
GLint dstY0,
GLint dstX1,
GLint dstY1,
GLbitfield mask,
GLenum filter );
GL_APICALL void (* GL_APIENTRY glRenderbufferStorageMultisample)( GLenum target,
GLsizei samples,
GLenum internalformat,
GLsizei width,
GLsizei height );
GL_APICALL void (* GL_APIENTRY glFramebufferTextureLayer)( GLenum target,
GLenum attachment,
GLuint texture,
GLint level,
GLint layer );
GL_APICALL GLvoid* (* GL_APIENTRY glMapBufferRange)( GLenum target,
GLintptr offset,
GLsizeiptr length,
GLbitfield access );
GL_APICALL void (* GL_APIENTRY glFlushMappedBufferRange)( GLenum target,
GLintptr offset,
GLsizeiptr length );
GL_APICALL void (* GL_APIENTRY glBindVertexArray)( GLuint array );
GL_APICALL void (* GL_APIENTRY glDeleteVertexArrays)( GLsizei n, const GLuint* arrays );
GL_APICALL void (* GL_APIENTRY glGenVertexArrays)( GLsizei n, GLuint* arrays );
GL_APICALL GLboolean (* GL_APIENTRY glIsVertexArray)( GLuint array );
GL_APICALL void (* GL_APIENTRY glGetIntegeri_v)( GLenum target,
GLuint index,
GLint* data );
GL_APICALL void (* GL_APIENTRY glBeginTransformFeedback)( GLenum primitiveMode );
GL_APICALL void (* GL_APIENTRY glEndTransformFeedback)( void );
GL_APICALL void (* GL_APIENTRY glBindBufferRange)( GLenum target,
GLuint index,
GLuint buffer,
GLintptr offset,
GLsizeiptr size );
GL_APICALL void (* GL_APIENTRY glBindBufferBase)( GLenum target,
GLuint index,
GLuint buffer );
GL_APICALL void (* GL_APIENTRY glTransformFeedbackVaryings)( GLuint program,
GLsizei count,
const GLchar* const * varyings,
GLenum bufferMode );
GL_APICALL void (* GL_APIENTRY glGetTransformFeedbackVarying)( GLuint program,
GLuint index,
GLsizei bufSize,
GLsizei* length,
GLsizei* size,
GLenum* type,
GLchar* name );
GL_APICALL void (* GL_APIENTRY glVertexAttribIPointer)( GLuint index,
GLint size,
GLenum type,
GLsizei stride,
const GLvoid* pointer );
GL_APICALL void (* GL_APIENTRY glGetVertexAttribIiv)( GLuint index,
GLenum pname,
GLint* params );
GL_APICALL void (* GL_APIENTRY glGetVertexAttribIuiv)( GLuint index,
GLenum pname,
GLuint* params );
GL_APICALL void (* GL_APIENTRY glVertexAttribI4i)( GLuint index,
GLint x,
GLint y,
GLint z,
GLint w );
GL_APICALL void (* GL_APIENTRY glVertexAttribI4ui)( GLuint index,
GLuint x,
GLuint y,
GLuint z,
GLuint w );
GL_APICALL void (* GL_APIENTRY glVertexAttribI4iv)( GLuint index, const GLint* v );
GL_APICALL void (* GL_APIENTRY glVertexAttribI4uiv)( GLuint index, const GLuint* v );
GL_APICALL void (* GL_APIENTRY glGetUniformuiv)( GLuint program,
GLint location,
GLuint* params );
GL_APICALL GLint (* GL_APIENTRY glGetFragDataLocation)( GLuint program,
const GLchar *name );
GL_APICALL void (* GL_APIENTRY glUniform1ui)( GLint location, GLuint v0 );
GL_APICALL void (* GL_APIENTRY glUniform2ui)( GLint location, GLuint v0, GLuint v1 );
GL_APICALL void (* GL_APIENTRY glUniform3ui)( GLint location,
GLuint v0,
GLuint v1,
GLuint v2 );
GL_APICALL void (* GL_APIENTRY glUniform4ui)( GLint location,
GLuint v0,
GLuint v1,
GLuint v2,
GLuint v3 );
GL_APICALL void (* GL_APIENTRY glUniform1uiv)( GLint location,
GLsizei count,
const GLuint* value );
GL_APICALL void (* GL_APIENTRY glUniform2uiv)( GLint location,
GLsizei count,
const GLuint* value );
GL_APICALL void (* GL_APIENTRY glUniform3uiv)( GLint location,
GLsizei count,
const GLuint* value );
GL_APICALL void (* GL_APIENTRY glUniform4uiv)( GLint location,
GLsizei count,
const GLuint* value );
GL_APICALL void (* GL_APIENTRY glClearBufferiv)( GLenum buffer,
GLint drawbuffer,
const GLint* value );
GL_APICALL void (* GL_APIENTRY glClearBufferuiv)( GLenum buffer,
GLint drawbuffer,
const GLuint* value );
GL_APICALL void (* GL_APIENTRY glClearBufferfv)( GLenum buffer,
GLint drawbuffer,
const GLfloat* value );
GL_APICALL void (* GL_APIENTRY glClearBufferfi)( GLenum buffer,
GLint drawbuffer,
GLfloat depth,
GLint stencil );
GL_APICALL const GLubyte* (* GL_APIENTRY glGetStringi)( GLenum name, GLuint index );
GL_APICALL void (* GL_APIENTRY glCopyBufferSubData)( GLenum readTarget,
GLenum writeTarget,
GLintptr readOffset,
GLintptr writeOffset,
GLsizeiptr size );
GL_APICALL void (* GL_APIENTRY glGetUniformIndices)( GLuint program,
GLsizei uniformCount,
const GLchar* const * uniformNames,
GLuint* uniformIndices );
GL_APICALL void (* GL_APIENTRY glGetActiveUniformsiv)( GLuint program,
GLsizei uniformCount,
const GLuint* uniformIndices,
GLenum pname,
GLint* params );
GL_APICALL GLuint (* GL_APIENTRY glGetUniformBlockIndex)( GLuint program,
const GLchar* uniformBlockName );
GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockiv)( GLuint program,
GLuint uniformBlockIndex,
GLenum pname,
GLint* params );
GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockName)( GLuint program,
GLuint uniformBlockIndex,
GLsizei bufSize,
GLsizei* length,
GLchar* uniformBlockName );
GL_APICALL void (* GL_APIENTRY glUniformBlockBinding)( GLuint program,
GLuint uniformBlockIndex,
GLuint uniformBlockBinding );
GL_APICALL void (* GL_APIENTRY glDrawArraysInstanced)( GLenum mode,
GLint first,
GLsizei count,
GLsizei instanceCount );
GL_APICALL void (* GL_APIENTRY glDrawElementsInstanced)( GLenum mode,
GLsizei count,
GLenum type,
const GLvoid* indices,
GLsizei instanceCount );
GL_APICALL GLsync (* GL_APIENTRY glFenceSync)( GLenum condition, GLbitfield flags );
GL_APICALL GLboolean (* GL_APIENTRY glIsSync)( GLsync sync );
GL_APICALL void (* GL_APIENTRY glDeleteSync)( GLsync sync );
GL_APICALL GLenum (* GL_APIENTRY glClientWaitSync)( GLsync sync,
GLbitfield flags,
GLuint64 timeout );
GL_APICALL void (* GL_APIENTRY glWaitSync)( GLsync sync,
GLbitfield flags,
GLuint64 timeout );
GL_APICALL void (* GL_APIENTRY glGetInteger64v)( GLenum pname, GLint64* params );
GL_APICALL void (* GL_APIENTRY glGetSynciv)( GLsync sync,
GLenum pname,
GLsizei bufSize,
GLsizei* length,
GLint* values );
GL_APICALL void (* GL_APIENTRY glGetInteger64i_v)( GLenum target,
GLuint index,
GLint64* data );
GL_APICALL void (* GL_APIENTRY glGetBufferParameteri64v)( GLenum target,
GLenum pname,
GLint64* params );
GL_APICALL void (* GL_APIENTRY glGenSamplers)( GLsizei count, GLuint* samplers );
GL_APICALL void (* GL_APIENTRY glDeleteSamplers)( GLsizei count, const GLuint* samplers );
GL_APICALL GLboolean (* GL_APIENTRY glIsSampler)( GLuint sampler );
GL_APICALL void (* GL_APIENTRY glBindSampler)( GLuint unit, GLuint sampler );
GL_APICALL void (* GL_APIENTRY glSamplerParameteri)( GLuint sampler,
GLenum pname,
GLint param );
GL_APICALL void (* GL_APIENTRY glSamplerParameteriv)( GLuint sampler,
GLenum pname,
const GLint* param );
GL_APICALL void (* GL_APIENTRY glSamplerParameterf)( GLuint sampler,
GLenum pname,
GLfloat param );
GL_APICALL void (* GL_APIENTRY glSamplerParameterfv)( GLuint sampler,
GLenum pname,
const GLfloat* param );
GL_APICALL void (* GL_APIENTRY glGetSamplerParameteriv)( GLuint sampler,
GLenum pname,
GLint* params );
GL_APICALL void (* GL_APIENTRY glGetSamplerParameterfv)( GLuint sampler,
GLenum pname,
GLfloat* params );
GL_APICALL void (* GL_APIENTRY glVertexAttribDivisor)( GLuint index, GLuint divisor );
GL_APICALL void (* GL_APIENTRY glBindTransformFeedback)( GLenum target, GLuint id );
GL_APICALL void (* GL_APIENTRY glDeleteTransformFeedbacks)( GLsizei n, const GLuint* ids );
GL_APICALL void (* GL_APIENTRY glGenTransformFeedbacks)( GLsizei n, GLuint* ids );
GL_APICALL GLboolean (* GL_APIENTRY glIsTransformFeedback)( GLuint id );
GL_APICALL void (* GL_APIENTRY glPauseTransformFeedback)( void );
GL_APICALL void (* GL_APIENTRY glResumeTransformFeedback)( void );
GL_APICALL void (* GL_APIENTRY glGetProgramBinary)( GLuint program,
GLsizei bufSize,
GLsizei* length,
GLenum* binaryFormat,
GLvoid* binary );
GL_APICALL void (* GL_APIENTRY glProgramBinary)( GLuint program,
GLenum binaryFormat,
const GLvoid* binary,
GLsizei length );
GL_APICALL void (* GL_APIENTRY glProgramParameteri)( GLuint program,
GLenum pname,
GLint value );
GL_APICALL void (* GL_APIENTRY glInvalidateFramebuffer)( GLenum target,
GLsizei numAttachments,
const GLenum* attachments );
GL_APICALL void (* GL_APIENTRY glInvalidateSubFramebuffer)( GLenum target,
GLsizei numAttachments,
const GLenum* attachments,
GLint x,
GLint y,
GLsizei width,
GLsizei height );
GL_APICALL void (* GL_APIENTRY glTexStorage2D)( GLenum target,
GLsizei levels,
GLenum internalformat,
GLsizei width,
GLsizei height );
GL_APICALL void (* GL_APIENTRY glTexStorage3D)( GLenum target,
GLsizei levels,
GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth );
GL_APICALL void (* GL_APIENTRY glGetInternalformativ)( GLenum target,
GLenum internalformat,
GLenum pname,
GLsizei bufSize,
GLint* params );