summaryrefslogtreecommitdiffstats
path: root/host/libs/virglrenderer/GLESv1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/libs/virglrenderer/GLESv1.cpp')
-rw-r--r--host/libs/virglrenderer/GLESv1.cpp448
1 files changed, 448 insertions, 0 deletions
diff --git a/host/libs/virglrenderer/GLESv1.cpp b/host/libs/virglrenderer/GLESv1.cpp
new file mode 100644
index 000000000..17a7ae4b3
--- /dev/null
+++ b/host/libs/virglrenderer/GLESv1.cpp
@@ -0,0 +1,448 @@
+/*
+ * 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;
+}