| /* |
| * Copyright (C) 2018 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 <OpenGLESDispatch/GLESv1Dispatch.h> |
| |
| #include "GLESv1.h" |
| |
| // Stubs (common) |
| |
| static void glDeleteFencesNV(GLsizei, const GLuint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glDisableDriverControlQCOM(GLuint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glDiscardFramebufferEXT(GLenum, GLsizei, const GLenum*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glEnableDriverControlQCOM(GLuint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glEndTilingQCOM(GLbitfield) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetBufferPointervQCOM(GLenum, GLvoid**) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetBuffersQCOM(GLuint*, GLint, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetFramebuffersQCOM(GLuint*, GLint, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetProgramBinarySourceQCOM(GLuint, GLenum, GLchar*, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetProgramsQCOM(GLuint*, GLint, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetRenderbuffersQCOM(GLuint*, GLint, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetShadersQCOM(GLuint*, GLint, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetTexLevelParameterivQCOM(GLuint, GLenum, GLint, GLenum, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetTexSubImageQCOM(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, |
| GLenum, GLenum, GLvoid*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glExtGetTexturesQCOM(GLuint*, GLint, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static GLboolean glExtIsProgramBinaryQCOM(GLuint) { |
| printf("%s: not implemented\n", __func__); |
| return GL_FALSE; |
| } |
| |
| static void glExtTexObjectStateOverrideiQCOM(GLenum, GLenum, GLint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glFinishFenceNV(GLuint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glFramebufferTexture2DMultisampleIMG(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glGenFencesNV(GLsizei, GLuint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glGetDriverControlsQCOM(GLint*, GLsizei, GLuint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glGetDriverControlStringQCOM(GLuint, GLsizei, GLsizei*, GLchar*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glGetFenceivNV(GLuint, GLenum, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static GLboolean glIsFenceNV(GLuint) { |
| printf("%s: not implemented\n", __func__); |
| return GL_FALSE; |
| } |
| |
| static void* glMapBufferOES(GLenum, GLenum) { |
| printf("%s: not implemented\n", __func__); |
| return nullptr; |
| } |
| |
| static void glMultiDrawArraysEXT(GLenum, const GLint*, const GLsizei*, GLsizei) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glMultiDrawElementsEXT(GLenum, const GLsizei*, GLenum, const GLvoid* const*, GLsizei) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glRenderbufferStorageMultisampleIMG(GLenum, GLsizei, GLenum, GLsizei, GLsizei) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glSetFenceNV(GLuint, GLenum) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glStartTilingQCOM(GLuint, GLuint, GLuint, GLuint, GLbitfield) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static GLboolean glTestFenceNV(GLuint) { |
| printf("%s: not implemented\n", __func__); |
| return GL_FALSE; |
| } |
| |
| // Stubs (ES 1.1) |
| |
| static void glBindVertexArrayOES(GLuint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glCurrentPaletteMatrixOES(GLuint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glDeleteVertexArraysOES(GLsizei, const GLuint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glGenVertexArraysOES(GLsizei, GLuint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glGetBufferPointervOES(GLenum, GLenum, GLvoid**) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glGetTexGenfvOES(GLenum, GLenum, GLfloat*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glGetTexGenivOES(GLenum, GLenum, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glGetTexGenxvOES(GLenum, GLenum, GLfixed*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static GLboolean glIsVertexArrayOES(GLuint) { |
| printf("%s: not implemented\n", __func__); |
| return GL_FALSE; |
| } |
| |
| static void glLoadPaletteFromModelViewMatrixOES() { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glMatrixIndexPointerData(GLint, GLenum, GLsizei, void*, GLuint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glMatrixIndexPointerOffset(GLint, GLenum, GLsizei, GLuint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glMultiDrawArraysSUN(GLenum, GLint*, GLsizei*, GLsizei) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glMultiDrawElementsSUN(GLenum, const GLsizei*, GLenum, const GLvoid**, GLsizei) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static GLbitfield glQueryMatrixxOES(GLfixed*, GLint*) { |
| printf("%s: not implemented\n", __func__); |
| return 0; |
| } |
| |
| static void glTexGenfOES(GLenum, GLenum, GLfloat) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glTexGenfvOES(GLenum, GLenum, const GLfloat*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glTexGeniOES(GLenum, GLenum, GLint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glTexGenivOES(GLenum, GLenum, const GLint*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glTexGenxOES(GLenum, GLenum, GLfixed) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glTexGenxvOES(GLenum, GLenum, const GLfixed*) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static GLboolean glUnmapBufferOES(GLenum) { |
| printf("%s: not implemented\n", __func__); |
| return GL_FALSE; |
| } |
| |
| static void glWeightPointerData(GLint, GLenum, GLsizei, void*, GLuint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| static void glWeightPointerOffset(GLint, GLenum, GLsizei, GLuint) { |
| printf("%s: not implemented\n", __func__); |
| } |
| |
| // Non-stubs (common) |
| |
| static void glDrawElementsData(GLenum mode, GLsizei count, GLenum type, void* indices, GLuint) { |
| s_gles1.glDrawElements(mode, count, type, indices); |
| } |
| |
| static void glDrawElementsOffset(GLenum mode, GLsizei count, GLenum type, GLuint offset) { |
| s_gles1.glDrawElements(mode, count, type, reinterpret_cast<const GLvoid*>(offset)); |
| } |
| |
| static GLint glFinishRoundTrip() { |
| s_gles1.glFinish(); |
| return 0; |
| } |
| |
| static void glGetCompressedTextureFormats(int count, GLint* formats) { |
| int nFormats; |
| s_gles1.glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &nFormats); |
| if (nFormats <= count) |
| s_gles1.glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, formats); |
| } |
| |
| // Non-stubs (ES 1.1) |
| |
| static void glColorPointerData(GLint size, GLenum type, GLsizei, void* data, GLuint) { |
| s_gles1.glColorPointer(size, type, 0, data); |
| } |
| |
| static void glColorPointerOffset(GLint size, GLenum type, GLsizei, GLuint offset) { |
| s_gles1.glColorPointer(size, type, 0, reinterpret_cast<GLvoid*>(offset)); |
| } |
| |
| static void glNormalPointerData(GLenum type, GLsizei, void* data, GLuint) { |
| s_gles1.glNormalPointer(type, 0, data); |
| } |
| |
| static void glNormalPointerOffset(GLenum type, GLsizei, GLuint offset) { |
| s_gles1.glNormalPointer(type, 0, reinterpret_cast<GLvoid*>(offset)); |
| } |
| |
| static void glPointSizePointerData(GLenum type, GLsizei, void* data, GLuint) { |
| s_gles1.glPointSizePointerOES(type, 0, data); |
| } |
| |
| static void glPointSizePointerOffset(GLenum type, GLsizei, GLuint offset) { |
| s_gles1.glPointSizePointerOES(type, 0, reinterpret_cast<GLvoid*>(offset)); |
| } |
| |
| static void glTexCoordPointerData(GLint, GLint size, GLenum type, GLsizei, void* data, GLuint) { |
| // FIXME: unit? |
| s_gles1.glTexCoordPointer(size, type, 0, data); |
| } |
| |
| static void glTexCoordPointerOffset(GLint size, GLenum type, GLsizei, GLuint offset) { |
| s_gles1.glTexCoordPointer(size, type, 0, reinterpret_cast<GLvoid*>(offset)); |
| } |
| |
| static void glVertexPointerData(GLint size, GLenum type, GLsizei, void* data, GLuint) { |
| s_gles1.glVertexPointer(size, type, 0, data); |
| } |
| |
| static void glVertexPointerOffset(GLint size, GLenum type, GLsizei, GLuint offset) { |
| s_gles1.glVertexPointer(size, type, 0, reinterpret_cast<GLvoid*>(offset)); |
| } |
| |
| #define KNIT(return_type, function_name, signature, callargs) function_name = s_gles1.function_name; |
| |
| GLESv1::GLESv1() { |
| LIST_GLES1_FUNCTIONS(KNIT, KNIT) |
| |
| // Remap some ES 1.0 extensions that become core in ES 1.1 |
| glAlphaFuncxOES = glAlphaFuncx; |
| glClearColorxOES = glClearColorx; |
| glClearDepthfOES = glClearDepthf; |
| glClearDepthxOES = glClearDepthx; |
| glClipPlanefIMG = glClipPlanef; |
| glClipPlanefOES = glClipPlanef; |
| glClipPlanexIMG = glClipPlanex; |
| glClipPlanexOES = glClipPlanex; |
| glColor4xOES = glColor4x; |
| glDepthRangefOES = glDepthRangef; |
| glDepthRangexOES = glDepthRangex; |
| glFogxOES = glFogx; |
| glFogxvOES = glFogxv; |
| glFrustumfOES = glFrustumf; |
| glFrustumxOES = glFrustumx; |
| glGetClipPlanefOES = glGetClipPlanef; |
| glGetClipPlanexOES = glGetClipPlanex; |
| glGetFixedvOES = glGetFixedv; |
| glGetLightxvOES = glGetLightxv; |
| glGetMaterialxvOES = glGetMaterialxv; |
| glGetTexEnvxvOES = glGetTexEnvxv; |
| glGetTexParameterxvOES = glGetTexParameterxv; |
| glLightModelxOES = glLightModelx; |
| glLightModelxvOES = glLightModelxv; |
| glLightxOES = glLightx; |
| glLightxvOES = glLightxv; |
| glLineWidthxOES = glLineWidthx; |
| glLoadMatrixxOES = glLoadMatrixx; |
| glMaterialxOES = glMaterialx; |
| glMaterialxvOES = glMaterialxv; |
| glMultiTexCoord4xOES = glMultiTexCoord4x; |
| glMultMatrixxOES = glMultMatrixx; |
| glNormal3xOES = glNormal3x; |
| glOrthofOES = glOrthof; |
| glOrthoxOES = glOrthox; |
| glPointParameterxOES = glPointParameterx; |
| glPointParameterxvOES = glPointParameterxv; |
| glPointSizexOES = glPointSizex; |
| glPolygonOffsetxOES = glPolygonOffsetx; |
| glRotatexOES = glRotatex; |
| glSampleCoveragexOES = glSampleCoveragex; |
| glScalexOES = glScalex; |
| glTexEnvxOES = glTexEnvx; |
| glTexEnvxvOES = glTexEnvxv; |
| glTexParameterxOES = glTexParameterx; |
| glTexParameterxvOES = glTexParameterxv; |
| glTranslatexOES = glTranslatex; |
| |
| // Entrypoints requiring custom wrappers (common) |
| glDrawElementsData = ::glDrawElementsData; |
| glDrawElementsOffset = ::glDrawElementsOffset; |
| glFinishRoundTrip = ::glFinishRoundTrip; |
| glGetCompressedTextureFormats = ::glGetCompressedTextureFormats; |
| |
| // Entrypoints requiring custom wrappers (ES 1.1) |
| glColorPointerData = ::glColorPointerData; |
| glColorPointerOffset = ::glColorPointerOffset; |
| glNormalPointerData = ::glNormalPointerData; |
| glNormalPointerOffset = ::glNormalPointerOffset; |
| glPointSizePointerData = ::glPointSizePointerData; |
| glPointSizePointerOffset = ::glPointSizePointerOffset; |
| glTexCoordPointerData = ::glTexCoordPointerData; |
| glTexCoordPointerOffset = ::glTexCoordPointerOffset; |
| glVertexPointerData = ::glVertexPointerData; |
| glVertexPointerOffset = ::glVertexPointerOffset; |
| |
| // Stub some extensions we will never implement (common) |
| glDeleteFencesNV = ::glDeleteFencesNV; |
| glDisableDriverControlQCOM = ::glDisableDriverControlQCOM; |
| glDiscardFramebufferEXT = ::glDiscardFramebufferEXT; |
| glEnableDriverControlQCOM = ::glEnableDriverControlQCOM; |
| glEndTilingQCOM = ::glEndTilingQCOM; |
| glExtGetBufferPointervQCOM = ::glExtGetBufferPointervQCOM; |
| glExtGetBuffersQCOM = ::glExtGetBuffersQCOM; |
| glExtGetFramebuffersQCOM = ::glExtGetFramebuffersQCOM; |
| glExtGetProgramBinarySourceQCOM = ::glExtGetProgramBinarySourceQCOM; |
| glExtGetProgramsQCOM = ::glExtGetProgramsQCOM; |
| glExtGetRenderbuffersQCOM = ::glExtGetRenderbuffersQCOM; |
| glExtGetShadersQCOM = ::glExtGetShadersQCOM; |
| glExtGetTexLevelParameterivQCOM = ::glExtGetTexLevelParameterivQCOM; |
| glExtGetTexSubImageQCOM = ::glExtGetTexSubImageQCOM; |
| glExtGetTexturesQCOM = ::glExtGetTexturesQCOM; |
| glExtIsProgramBinaryQCOM = ::glExtIsProgramBinaryQCOM; |
| glExtTexObjectStateOverrideiQCOM = ::glExtTexObjectStateOverrideiQCOM; |
| glFinishFenceNV = ::glFinishFenceNV; |
| glFramebufferTexture2DMultisampleIMG = ::glFramebufferTexture2DMultisampleIMG; |
| glGenFencesNV = ::glGenFencesNV; |
| glGetDriverControlsQCOM = ::glGetDriverControlsQCOM; |
| glGetDriverControlStringQCOM = ::glGetDriverControlStringQCOM; |
| glGetFenceivNV = ::glGetFenceivNV; |
| glIsFenceNV = ::glIsFenceNV; |
| glMapBufferOES = ::glMapBufferOES; |
| glMultiDrawArraysEXT = ::glMultiDrawArraysEXT; |
| glMultiDrawElementsEXT = ::glMultiDrawElementsEXT; |
| glRenderbufferStorageMultisampleIMG = ::glRenderbufferStorageMultisampleIMG; |
| glSetFenceNV = ::glSetFenceNV; |
| glStartTilingQCOM = ::glStartTilingQCOM; |
| glTestFenceNV = ::glTestFenceNV; |
| |
| // Stub some extensions we will never implement (ES 1.1) |
| glBindVertexArrayOES = ::glBindVertexArrayOES; |
| glCurrentPaletteMatrixOES = ::glCurrentPaletteMatrixOES; |
| glDeleteVertexArraysOES = ::glDeleteVertexArraysOES; |
| glGenVertexArraysOES = ::glGenVertexArraysOES; |
| glGetBufferPointervOES = ::glGetBufferPointervOES; |
| glGetTexGenfvOES = ::glGetTexGenfvOES; |
| glGetTexGenivOES = ::glGetTexGenivOES; |
| glGetTexGenxvOES = ::glGetTexGenxvOES; |
| glIsVertexArrayOES = ::glIsVertexArrayOES; |
| glLoadPaletteFromModelViewMatrixOES = ::glLoadPaletteFromModelViewMatrixOES; |
| glMatrixIndexPointerData = ::glMatrixIndexPointerData; |
| glMatrixIndexPointerOffset = ::glMatrixIndexPointerOffset; |
| glMultiDrawArraysSUN = ::glMultiDrawArraysSUN; |
| glMultiDrawElementsSUN = ::glMultiDrawElementsSUN; |
| glQueryMatrixxOES = ::glQueryMatrixxOES; |
| glTexGenfOES = ::glTexGenfOES; |
| glTexGenfvOES = ::glTexGenfvOES; |
| glTexGeniOES = ::glTexGeniOES; |
| glTexGenivOES = ::glTexGenivOES; |
| glTexGenxOES = ::glTexGenxOES; |
| glTexGenxvOES = ::glTexGenxvOES; |
| glUnmapBufferOES = ::glUnmapBufferOES; |
| glWeightPointerData = ::glWeightPointerData; |
| glWeightPointerOffset = ::glWeightPointerOffset; |
| } |