/*
* 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;
}