diff --git a/external/android-emugl/CMakeLists.txt b/external/android-emugl/CMakeLists.txt index 28f4c87ec3ea13547aa80a9da8ba88c9ff4aeb41..23173b3abf32f4bdbec3a5cb20cc3593f4d4bcf8 100644 --- a/external/android-emugl/CMakeLists.txt +++ b/external/android-emugl/CMakeLists.txt @@ -10,6 +10,7 @@ include_directories( ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/external/android-emugl/shared ${CMAKE_SOURCE_DIR}/external/android-emugl/host/include + ${CMAKE_BINARY_DIR}/external/android-emugl/host/include ${CMAKE_SOURCE_DIR}/external/android-emugl/shared/OpenglCodecCommon ${CMAKE_SOURCE_DIR}/external/android-emugl/host/libs ${CMAKE_SOURCE_DIR}/external/android-emugl/host/include/libOpenglRender diff --git a/external/android-emugl/host/include/OpenGLESDispatch/RenderEGL_extensions_functions.h b/external/android-emugl/host/include/OpenGLESDispatch/RenderEGL_extensions_functions.h deleted file mode 100644 index 163789b5034baf0d807a4d5ae3417df4456f950e..0000000000000000000000000000000000000000 --- a/external/android-emugl/host/include/OpenGLESDispatch/RenderEGL_extensions_functions.h +++ /dev/null @@ -1,15 +0,0 @@ -// Auto-generated with: android/scripts/gen-entries.py --mode=functions distrib/android-emugl/host/libs/libOpenGLESDispatch/render_egl_extensions.entries --output=distrib/android-emugl/host/include/OpenGLESDispatch/RenderEGL_extensions_functions.h -// DO NOT EDIT THIS FILE - -#ifndef RENDER_EGL_EXTENSIONS_FUNCTIONS_H -#define RENDER_EGL_EXTENSIONS_FUNCTIONS_H - -#include -#define EGL_EGLEXT_PROTOTYPES -#include -#define LIST_RENDER_EGL_EXTENSIONS_FUNCTIONS(X) \ - X(EGLImageKHR, eglCreateImageKHR, (EGLDisplay display, EGLContext context, EGLenum target, EGLClientBuffer buffer, const EGLint* attrib_list)) \ - X(EGLBoolean, eglDestroyImageKHR, (EGLDisplay display, EGLImageKHR image)) \ - - -#endif // RENDER_EGL_EXTENSIONS_FUNCTIONS_H diff --git a/external/android-emugl/host/include/OpenGLESDispatch/RenderEGL_functions.h b/external/android-emugl/host/include/OpenGLESDispatch/RenderEGL_functions.h deleted file mode 100644 index bbd0a4891dcec141f066ad1deef2dfb49eeb2a2b..0000000000000000000000000000000000000000 --- a/external/android-emugl/host/include/OpenGLESDispatch/RenderEGL_functions.h +++ /dev/null @@ -1,31 +0,0 @@ -// Auto-generated with: android/scripts/gen-entries.py --mode=functions distrib/android-emugl/host/libs/libOpenGLESDispatch/render_egl.entries --output=distrib/android-emugl/host/include/OpenGLESDispatch/RenderEGL_functions.h -// DO NOT EDIT THIS FILE - -#ifndef RENDER_EGL_FUNCTIONS_H -#define RENDER_EGL_FUNCTIONS_H - -#include -#define LIST_RENDER_EGL_FUNCTIONS(X) \ - X(EGLint, eglGetError, ()) \ - X(EGLDisplay, eglGetDisplay, (EGLNativeDisplayType dpy)) \ - X(EGLBoolean, eglInitialize, (EGLDisplay dpy, EGLint* major, EGLint* minor)) \ - X(char*, eglQueryString, (EGLDisplay dpy, EGLint id)) \ - X(EGLBoolean, eglGetConfigs, (EGLDisplay display, EGLConfig* configs, EGLint config_size, EGLint* num_config)) \ - X(EGLBoolean, eglChooseConfig, (EGLDisplay display, const EGLint* attribs, EGLConfig* configs, EGLint config_size, EGLint* num_config)) \ - X(EGLBoolean, eglGetConfigAttrib, (EGLDisplay display, EGLConfig config, EGLint attribute, EGLint* value)) \ - X(EGLSurface, eglCreateWindowSurface, (EGLDisplay display, EGLConfig config, EGLNativeWindowType native_window, const EGLint* attrib_list)) \ - X(EGLSurface, eglCreatePbufferSurface, (EGLDisplay display, EGLConfig config, const EGLint* attrib_list)) \ - X(EGLBoolean, eglDestroySurface, (EGLDisplay display, EGLSurface surface)) \ - X(EGLBoolean, eglBindAPI, (EGLenum api)) \ - X(EGLenum, eglQueryAPI, ()) \ - X(EGLBoolean, eglReleaseThread, ()) \ - X(EGLContext, eglCreateContext, (EGLDisplay display, EGLConfig config, EGLContext share_context, const EGLint* attrib_list)) \ - X(EGLBoolean, eglDestroyContext, (EGLDisplay display, EGLContext context)) \ - X(EGLBoolean, eglMakeCurrent, (EGLDisplay display, EGLSurface draw, EGLSurface read, EGLContext context)) \ - X(EGLContext, eglGetCurrentContext, ()) \ - X(EGLSurface, eglGetCurrentSurface, (EGLint readdraw)) \ - X(EGLBoolean, eglSwapBuffers, (EGLDisplay display, EGLSurface surface)) \ - X(void*, eglGetProcAddress, (const char* function_name)) \ - - -#endif // RENDER_EGL_FUNCTIONS_H diff --git a/external/android-emugl/host/include/OpenGLESDispatch/gles1_extensions_functions.h b/external/android-emugl/host/include/OpenGLESDispatch/gles1_extensions_functions.h deleted file mode 100644 index 71fdfeaa6498c2da03354830ffe8cc58325eaa13..0000000000000000000000000000000000000000 --- a/external/android-emugl/host/include/OpenGLESDispatch/gles1_extensions_functions.h +++ /dev/null @@ -1,27 +0,0 @@ -// Auto-generated with: android/scripts/gen-entries.py --mode=funcargs distrib/android-emugl/host/libs/libOpenGLESDispatch/gles1_extensions.entries --output=distrib/android-emugl/host/include/OpenGLESDispatch/gles1_extensions_functions.h -// DO NOT EDIT THIS FILE - -#ifndef GLES1_EXTENSIONS_FUNCTIONS_H -#define GLES1_EXTENSIONS_FUNCTIONS_H - -#define LIST_GLES1_EXTENSIONS_FUNCTIONS(X) \ - X(void, glCurrentPaletteMatrixARB, (GLint index), (index)) \ - X(void, glMatrixIndexuivARB, (GLint size, GLuint * indices), (size, indices)) \ - X(void, glMatrixIndexPointerARB, (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer), (size, type, stride, pointer)) \ - X(void, glWeightPointerARB, (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer), (size, type, stride, pointer)) \ - X(void, glTexGenf, (GLenum coord, GLenum pname, GLfloat param), (coord, pname, param)) \ - X(void, glTexGeni, (GLenum coord, GLenum pname, GLint param), (coord, pname, param)) \ - X(void, glTexGenfv, (GLenum coord, GLenum pname, const GLfloat * params), (coord, pname, params)) \ - X(void, glTexGeniv, (GLenum coord, GLenum pname, const GLint * params), (coord, pname, params)) \ - X(void, glGetTexGenfv, (GLenum coord, GLenum pname, GLfloat * params), (coord, pname, params)) \ - X(void, glGetTexGeniv, (GLenum coord, GLenum pname, GLint * params), (coord, pname, params)) \ - X(void, glDrawTexsOES, (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height), (x, y, z, width, height)) \ - X(void, glDrawTexiOES, (GLshort x, GLint y, GLint z, GLint width, GLshort height), (x, y, z, width, height)) \ - X(void, glDrawTexfOES, (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height), (x, y, z, width, height)) \ - X(void, glDrawTexxOES, (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height), (x, y, z, width, height)) \ - X(void, glDrawTexsvOES, (const GLshort *coords), (coords)) \ - X(void, glDrawTexivOES, (const GLint *coords), (coords)) \ - X(void, glDrawTexxvOES, (const GLfixed *coords), (coords)) \ - X(void, glDrawTexfvOES, (const GLfloat *coords), (coords)) \ - -#endif // GLES1_EXTENSIONS_FUNCTIONS_H diff --git a/external/android-emugl/host/include/OpenGLESDispatch/gles1_only_functions.h b/external/android-emugl/host/include/OpenGLESDispatch/gles1_only_functions.h deleted file mode 100644 index 6a9824cdeeb1e963fb68c2701cb8586cf7e0f4f4..0000000000000000000000000000000000000000 --- a/external/android-emugl/host/include/OpenGLESDispatch/gles1_only_functions.h +++ /dev/null @@ -1,71 +0,0 @@ -// Auto-generated with: android/scripts/gen-entries.py --mode=funcargs distrib/android-emugl/host/libs/libOpenGLESDispatch/gles1_only.entries --output=distrib/android-emugl/host/include/OpenGLESDispatch/gles1_only_functions.h -// DO NOT EDIT THIS FILE - -#ifndef GLES1_ONLY_FUNCTIONS_H -#define GLES1_ONLY_FUNCTIONS_H - -#define LIST_GLES1_ONLY_FUNCTIONS(X) \ - X(void, glAlphaFunc, (GLenum func, GLclampf ref), (func, ref)) \ - X(void, glBegin, (GLenum mode), (mode)) \ - X(void, glClientActiveTexture, (GLenum texture), (texture)) \ - X(void, glClipPlane, (GLenum plane, const GLdouble * equation), (plane, equation)) \ - X(void, glColor4d, (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha), (red, green, blue, alpha)) \ - X(void, glColor4f, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha)) \ - X(void, glColor4fv, (const GLfloat * v), (v)) \ - X(void, glColor4ub, (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha), (red, green, blue, alpha)) \ - X(void, glColor4ubv, (const GLubyte * v), (v)) \ - X(void, glColorPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer), (size, type, stride, pointer)) \ - X(void, glDisableClientState, (GLenum array), (array)) \ - X(void, glEnableClientState, (GLenum array), (array)) \ - X(void, glEnd, (), ()) \ - X(void, glFogf, (GLenum pname, GLfloat param), (pname, param)) \ - X(void, glFogfv, (GLenum pname, const GLfloat * params), (pname, params)) \ - X(void, glFrustum, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left, right, bottom, top, zNear, zFar)) \ - X(void, glGetClipPlane, (GLenum plane, GLdouble * equation), (plane, equation)) \ - X(void, glGetDoublev, (GLenum pname, GLdouble * params), (pname, params)) \ - X(void, glGetLightfv, (GLenum light, GLenum pname, GLfloat * params), (light, pname, params)) \ - X(void, glGetMaterialfv, (GLenum face, GLenum pname, GLfloat * params), (face, pname, params)) \ - X(void, glGetPointerv, (GLenum pname, GLvoid* * params), (pname, params)) \ - X(void, glGetTexEnvfv, (GLenum target, GLenum pname, GLfloat * params), (target, pname, params)) \ - X(void, glGetTexEnviv, (GLenum target, GLenum pname, GLint * params), (target, pname, params)) \ - X(void, glLightf, (GLenum light, GLenum pname, GLfloat param), (light, pname, param)) \ - X(void, glLightfv, (GLenum light, GLenum pname, const GLfloat * params), (light, pname, params)) \ - X(void, glLightModelf, (GLenum pname, GLfloat param), (pname, param)) \ - X(void, glLightModelfv, (GLenum pname, const GLfloat * params), (pname, params)) \ - X(void, glLoadIdentity, (), ()) \ - X(void, glLoadMatrixf, (const GLfloat * m), (m)) \ - X(void, glLogicOp, (GLenum opcode), (opcode)) \ - X(void, glMaterialf, (GLenum face, GLenum pname, GLfloat param), (face, pname, param)) \ - X(void, glMaterialfv, (GLenum face, GLenum pname, const GLfloat * params), (face, pname, params)) \ - X(void, glMultiTexCoord2fv, (GLenum target, const GLfloat * v), (target, v)) \ - X(void, glMultiTexCoord2sv, (GLenum target, const GLshort * v), (target, v)) \ - X(void, glMultiTexCoord3fv, (GLenum target, const GLfloat * v), (target, v)) \ - X(void, glMultiTexCoord3sv, (GLenum target, const GLshort * v), (target, v)) \ - X(void, glMultiTexCoord4f, (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q), (target, s, t, r, q)) \ - X(void, glMultiTexCoord4fv, (GLenum target, const GLfloat * v), (target, v)) \ - X(void, glMultiTexCoord4sv, (GLenum target, const GLshort * v), (target, v)) \ - X(void, glMultMatrixf, (const GLfloat * m), (m)) \ - X(void, glNormal3f, (GLfloat nx, GLfloat ny, GLfloat nz), (nx, ny, nz)) \ - X(void, glNormal3fv, (const GLfloat * v), (v)) \ - X(void, glNormal3sv, (const GLshort * v), (v)) \ - X(void, glOrtho, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left, right, bottom, top, zNear, zFar)) \ - X(void, glPointParameterf, (GLenum param, GLfloat value), (param, value)) \ - X(void, glPointParameterfv, (GLenum param, const GLfloat * values), (param, values)) \ - X(void, glPointSize, (GLfloat size), (size)) \ - X(void, glRotatef, (GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (angle, x, y, z)) \ - X(void, glScalef, (GLfloat x, GLfloat y, GLfloat z), (x, y, z)) \ - X(void, glTexEnvf, (GLenum target, GLenum pname, GLfloat param), (target, pname, param)) \ - X(void, glTexEnvfv, (GLenum target, GLenum pname, const GLfloat * params), (target, pname, params)) \ - X(void, glMatrixMode, (GLenum mode), (mode)) \ - X(void, glNormalPointer, (GLenum type, GLsizei stride, const GLvoid * pointer), (type, stride, pointer)) \ - X(void, glPopMatrix, (), ()) \ - X(void, glPushMatrix, (), ()) \ - X(void, glShadeModel, (GLenum mode), (mode)) \ - X(void, glTexCoordPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer), (size, type, stride, pointer)) \ - X(void, glTexEnvi, (GLenum target, GLenum pname, GLint param), (target, pname, param)) \ - X(void, glTexEnviv, (GLenum target, GLenum pname, const GLint * params), (target, pname, params)) \ - X(void, glTranslatef, (GLfloat x, GLfloat y, GLfloat z), (x, y, z)) \ - X(void, glVertexPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer), (size, type, stride, pointer)) \ - - -#endif // GLES1_ONLY_FUNCTIONS_H diff --git a/external/android-emugl/host/include/OpenGLESDispatch/gles2_extensions_functions.h b/external/android-emugl/host/include/OpenGLESDispatch/gles2_extensions_functions.h deleted file mode 100644 index 980963f3de6b83b3e624893a20b1bb6d97135a0a..0000000000000000000000000000000000000000 --- a/external/android-emugl/host/include/OpenGLESDispatch/gles2_extensions_functions.h +++ /dev/null @@ -1,13 +0,0 @@ -// Auto-generated with: android/scripts/gen-entries.py --mode=funcargs distrib/android-emugl/host/libs/libOpenGLESDispatch/gles2_extensions.entries --output=distrib/android-emugl/host/include/OpenGLESDispatch/gles2_extensions_functions.h -// DO NOT EDIT THIS FILE - -#ifndef GLES2_EXTENSIONS_FUNCTIONS_H -#define GLES2_EXTENSIONS_FUNCTIONS_H - -#define LIST_GLES2_EXTENSIONS_FUNCTIONS(X) \ - X(void, glGetShaderPrecisionFormat, (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision), (shadertype, precisiontype, range, precision)) \ - X(void, glReleaseShaderCompiler, (), ()) \ - X(void, glShaderBinary, (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length), (n, shaders, binaryformat, binary, length)) \ - - -#endif // GLES2_EXTENSIONS_FUNCTIONS_H diff --git a/external/android-emugl/host/include/OpenGLESDispatch/gles2_only_functions.h b/external/android-emugl/host/include/OpenGLESDispatch/gles2_only_functions.h deleted file mode 100644 index b82c8c95b640fb36d3fafc2e8119c409423a6294..0000000000000000000000000000000000000000 --- a/external/android-emugl/host/include/OpenGLESDispatch/gles2_only_functions.h +++ /dev/null @@ -1,85 +0,0 @@ -// Auto-generated with: android/scripts/gen-entries.py --mode=funcargs distrib/android-emugl/host/libs/libOpenGLESDispatch/gles2_only.entries --output=distrib/android-emugl/host/include/OpenGLESDispatch/gles2_only_functions.h -// DO NOT EDIT THIS FILE - -#ifndef GLES2_ONLY_FUNCTIONS_H -#define GLES2_ONLY_FUNCTIONS_H - -#define LIST_GLES2_ONLY_FUNCTIONS(X) \ - X(void, glBlendColor, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red, green, blue, alpha)) \ - X(void, glStencilFuncSeparate, (GLenum face, GLenum func, GLint ref, GLuint mask), (face, func, ref, mask)) \ - X(void, glStencilMaskSeparate, (GLenum face, GLuint mask), (face, mask)) \ - X(void, glStencilOpSeparate, (GLenum face, GLenum fail, GLenum zfail, GLenum zpass), (face, fail, zfail, zpass)) \ - X(GLboolean, glIsProgram, (GLuint program), (program)) \ - X(GLboolean, glIsShader, (GLuint shader), (shader)) \ - X(void, glVertexAttrib1f, (GLuint indx, GLfloat x), (indx, x)) \ - X(void, glVertexAttrib1fv, (GLuint indx, const GLfloat* values), (indx, values)) \ - X(void, glVertexAttrib2f, (GLuint indx, GLfloat x, GLfloat y), (indx, x, y)) \ - X(void, glVertexAttrib2fv, (GLuint indx, const GLfloat* values), (indx, values)) \ - X(void, glVertexAttrib3f, (GLuint indx, GLfloat x, GLfloat y, GLfloat z), (indx, x, y, z)) \ - X(void, glVertexAttrib3fv, (GLuint indx, const GLfloat* values), (indx, values)) \ - X(void, glVertexAttrib4f, (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (indx, x, y, z, w)) \ - X(void, glVertexAttrib4fv, (GLuint indx, const GLfloat* values), (indx, values)) \ - X(void, glVertexAttribPointer, (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr), (indx, size, type, normalized, stride, ptr)) \ - X(void, glDisableVertexAttribArray, (GLuint index), (index)) \ - X(void, glEnableVertexAttribArray, (GLuint index), (index)) \ - X(void, glGetVertexAttribfv, (GLuint index, GLenum pname, GLfloat* params), (index, pname, params)) \ - X(void, glGetVertexAttribiv, (GLuint index, GLenum pname, GLint* params), (index, pname, params)) \ - X(void, glGetVertexAttribPointerv, (GLuint index, GLenum pname, GLvoid** pointer), (index, pname, pointer)) \ - X(void, glUniform1f, (GLint location, GLfloat x), (location, x)) \ - X(void, glUniform1fv, (GLint location, GLsizei count, const GLfloat* v), (location, count, v)) \ - X(void, glUniform1i, (GLint location, GLint x), (location, x)) \ - X(void, glUniform1iv, (GLint location, GLsizei count, const GLint* v), (location, count, v)) \ - X(void, glUniform2f, (GLint location, GLfloat x, GLfloat y), (location, x, y)) \ - X(void, glUniform2fv, (GLint location, GLsizei count, const GLfloat* v), (location, count, v)) \ - X(void, glUniform2i, (GLint location, GLint x, GLint y), (location, x, y)) \ - X(void, glUniform2iv, (GLint location, GLsizei count, const GLint* v), (location, count, v)) \ - X(void, glUniform3f, (GLint location, GLfloat x, GLfloat y, GLfloat z), (location, x, y, z)) \ - X(void, glUniform3fv, (GLint location, GLsizei count, const GLfloat* v), (location, count, v)) \ - X(void, glUniform3i, (GLint location, GLint x, GLint y, GLint z), (location, x, y, z)) \ - X(void, glUniform3iv, (GLint location, GLsizei count, const GLint* v), (location, count, v)) \ - X(void, glUniform4f, (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w), (location, x, y, z, w)) \ - X(void, glUniform4fv, (GLint location, GLsizei count, const GLfloat* v), (location, count, v)) \ - X(void, glUniform4i, (GLint location, GLint x, GLint y, GLint z, GLint w), (location, x, y, z, w)) \ - X(void, glUniform4iv, (GLint location, GLsizei count, const GLint* v), (location, count, v)) \ - X(void, glUniformMatrix2fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value), (location, count, transpose, value)) \ - X(void, glUniformMatrix3fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value), (location, count, transpose, value)) \ - X(void, glUniformMatrix4fv, (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value), (location, count, transpose, value)) \ - X(void, glAttachShader, (GLuint program, GLuint shader), (program, shader)) \ - X(void, glBindAttribLocation, (GLuint program, GLuint index, const GLchar* name), (program, index, name)) \ - X(void, glCompileShader, (GLuint shader), (shader)) \ - X(GLuint, glCreateProgram, (), ()) \ - X(GLuint, glCreateShader, (GLenum type), (type)) \ - X(void, glDeleteProgram, (GLuint program), (program)) \ - X(void, glDeleteShader, (GLuint shader), (shader)) \ - X(void, glDetachShader, (GLuint program, GLuint shader), (program, shader)) \ - X(void, glLinkProgram, (GLuint program), (program)) \ - X(void, glUseProgram, (GLuint program), (program)) \ - X(void, glValidateProgram, (GLuint program), (program)) \ - X(void, glGetActiveAttrib, (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name), (program, index, bufsize, length, size, type, name)) \ - X(void, glGetActiveUniform, (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name), (program, index, bufsize, length, size, type, name)) \ - X(void, glGetAttachedShaders, (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders), (program, maxcount, count, shaders)) \ - X(int, glGetAttribLocation, (GLuint program, const GLchar* name), (program, name)) \ - X(void, glGetProgramiv, (GLuint program, GLenum pname, GLint* params), (program, pname, params)) \ - X(void, glGetProgramInfoLog, (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog), (program, bufsize, length, infolog)) \ - X(void, glGetShaderiv, (GLuint shader, GLenum pname, GLint* params), (shader, pname, params)) \ - X(void, glGetShaderInfoLog, (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog), (shader, bufsize, length, infolog)) \ - X(void, glGetShaderSource, (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source), (shader, bufsize, length, source)) \ - X(void, glGetUniformfv, (GLuint program, GLint location, GLfloat* params), (program, location, params)) \ - X(void, glGetUniformiv, (GLuint program, GLint location, GLint* params), (program, location, params)) \ - X(int, glGetUniformLocation, (GLuint program, const GLchar* name), (program, name)) \ - X(void, glShaderSource, (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length), (shader, count, string, length)) \ - X(void, glBindFramebuffer, (GLenum target, GLuint framebuffer), (target, framebuffer)) \ - X(void, glGenFramebuffers, (GLsizei n, GLuint* framebuffers), (n, framebuffers)) \ - X(void, glFramebufferTexture2D, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level)) \ - X(GLenum, glCheckFramebufferStatus, (GLenum target), (target)) \ - X(void, glDeleteFramebuffers, (GLsizei n, const GLuint* framebuffers), (n, framebuffers)) \ - X(GLboolean, glIsRenderbuffer, (GLuint renderbuffer), (renderbuffer)) \ - X(void, glBindRenderbuffer, (GLenum target, GLuint renderbuffer), (target, renderbuffer)) \ - X(void, glDeleteRenderbuffers, (GLsizei n, const GLuint * renderbuffers), (n, renderbuffers)) \ - X(void, glGenRenderbuffers, (GLsizei n, GLuint * renderbuffers), (n, renderbuffers)) \ - X(void, glRenderbufferStorage, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height)) \ - X(void, glGetRenderbufferParameteriv, (GLenum target, GLenum pname, GLint * params), (target, pname, params)) \ - X(void, glFramebufferRenderbuffer, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer)) \ - - -#endif // GLES2_ONLY_FUNCTIONS_H diff --git a/external/android-emugl/host/include/OpenGLESDispatch/gles3_only_functions.h b/external/android-emugl/host/include/OpenGLESDispatch/gles3_only_functions.h deleted file mode 100644 index 340a2c54e8137741cb89a0d6253220e391271717..0000000000000000000000000000000000000000 --- a/external/android-emugl/host/include/OpenGLESDispatch/gles3_only_functions.h +++ /dev/null @@ -1,18 +0,0 @@ -// Auto-generated with: android/scripts/gen-entries.py --mode=funcargs distrib/android-emugl/host/libs/libOpenGLESDispatch/gles3_only.entries --output=distrib/android-emugl/host/include/OpenGLESDispatch/gles3_only_functions.h -// DO NOT EDIT THIS FILE - -#ifndef GLES3_ONLY_FUNCTIONS_H -#define GLES3_ONLY_FUNCTIONS_H - -#include - -// Used to avoid adding GLES3/gl3.h to our headers. -#ifndef GL_NUM_EXTENSIONS -#define GL_NUM_EXTENSIONS 0x821D -#endif -typedef const GLubyte* GLconstubyteptr; -#define LIST_GLES3_ONLY_FUNCTIONS(X) \ - X(GLconstubyteptr, glGetStringi, (GLenum name, GLint index), (name, index)) \ - - -#endif // GLES3_ONLY_FUNCTIONS_H diff --git a/external/android-emugl/host/include/OpenGLESDispatch/gles_common_functions.h b/external/android-emugl/host/include/OpenGLESDispatch/gles_common_functions.h deleted file mode 100644 index bef2236bf832fd805af5362ab7c7285231d3b883..0000000000000000000000000000000000000000 --- a/external/android-emugl/host/include/OpenGLESDispatch/gles_common_functions.h +++ /dev/null @@ -1,79 +0,0 @@ -// Auto-generated with: android/scripts/gen-entries.py --mode=funcargs distrib/android-emugl/host/libs/libOpenGLESDispatch/gles_common.entries --output=distrib/android-emugl/host/include/OpenGLESDispatch/gles_common_functions.h -// DO NOT EDIT THIS FILE - -#ifndef GLES_COMMON_FUNCTIONS_H -#define GLES_COMMON_FUNCTIONS_H - -#include -// Return types must be single words, see GLDispatch.cpp -typedef const GLubyte* GLconstubyteptr; -#define LIST_GLES_COMMON_FUNCTIONS(X) \ - X(void, glActiveTexture, (GLenum texture), (texture)) \ - X(void, glBindBuffer, (GLenum target, GLuint buffer), (target, buffer)) \ - X(void, glBindTexture, (GLenum target, GLuint texture), (target, texture)) \ - X(void, glBlendFunc, (GLenum sfactor, GLenum dfactor), (sfactor, dfactor)) \ - X(void, glBlendEquation, (GLenum mode), (mode)) \ - X(void, glBlendEquationSeparate, (GLenum modeRGB, GLenum modeAlpha), (modeRGB, modeAlpha)) \ - X(void, glBlendFuncSeparate, (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (srcRGB, dstRGB, srcAlpha, dstAlpha)) \ - X(void, glBufferData, (GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage), (target, size, data, usage)) \ - X(void, glBufferSubData, (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data), (target, offset, size, data)) \ - X(void, glClear, (GLbitfield mask), (mask)) \ - X(void, glClearColor, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red, green, blue, alpha)) \ - X(void, glClearDepth, (GLclampd depth), (depth)) \ - X(void, glClearStencil, (GLint s), (s)) \ - X(void, glColorMask, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha), (red, green, blue, alpha)) \ - X(void, glCompressedTexImage2D, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data), (target, level, internalformat, width, height, border, imageSize, data)) \ - X(void, glCompressedTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data), (target, level, xoffset, yoffset, width, height, format, imageSize, data)) \ - X(void, glCopyTexImage2D, (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target, level, internalFormat, x, y, width, height, border)) \ - X(void, glCopyTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, x, y, width, height)) \ - X(void, glCullFace, (GLenum mode), (mode)) \ - X(void, glDeleteBuffers, (GLsizei n, const GLuint * buffers), (n, buffers)) \ - X(void, glDeleteTextures, (GLsizei n, const GLuint * textures), (n, textures)) \ - X(void, glDepthFunc, (GLenum func), (func)) \ - X(void, glDepthMask, (GLboolean flag), (flag)) \ - X(void, glDepthRange, (GLclampd zNear, GLclampd zFar), (zNear, zFar)) \ - X(void, glDisable, (GLenum cap), (cap)) \ - X(void, glDrawArrays, (GLenum mode, GLint first, GLsizei count), (mode, first, count)) \ - X(void, glDrawElements, (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices), (mode, count, type, indices)) \ - X(void, glEnable, (GLenum cap), (cap)) \ - X(void, glFinish, (), ()) \ - X(void, glFlush, (), ()) \ - X(void, glFrontFace, (GLenum mode), (mode)) \ - X(void, glGenBuffers, (GLsizei n, GLuint * buffers), (n, buffers)) \ - X(void, glGenTextures, (GLsizei n, GLuint * textures), (n, textures)) \ - X(void, glGetBooleanv, (GLenum pname, GLboolean * params), (pname, params)) \ - X(void, glGetBufferParameteriv, (GLenum buffer, GLenum parameter, GLint * value), (buffer, parameter, value)) \ - X(GLenum, glGetError, (), ()) \ - X(void, glGetFloatv, (GLenum pname, GLfloat * params), (pname, params)) \ - X(void, glGetIntegerv, (GLenum pname, GLint * params), (pname, params)) \ - X(GLconstubyteptr, glGetString, (GLenum name), (name)) \ - X(void, glTexParameterf, (GLenum target, GLenum pname, GLfloat param), (target, pname, param)) \ - X(void, glTexParameterfv, (GLenum target, GLenum pname, const GLfloat * params), (target, pname, params)) \ - X(void, glGetTexParameterfv, (GLenum target, GLenum pname, GLfloat * params), (target, pname, params)) \ - X(void, glGetTexParameteriv, (GLenum target, GLenum pname, GLint * params), (target, pname, params)) \ - X(void, glGetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint * params), (target, level, pname, params)) \ - X(void, glHint, (GLenum target, GLenum mode), (target, mode)) \ - X(GLboolean, glIsBuffer, (GLuint buffer), (buffer)) \ - X(GLboolean, glIsEnabled, (GLenum cap), (cap)) \ - X(GLboolean, glIsTexture, (GLuint texture), (texture)) \ - X(void, glLineWidth, (GLfloat width), (width)) \ - X(void, glPolygonOffset, (GLfloat factor, GLfloat units), (factor, units)) \ - X(void, glPixelStorei, (GLenum pname, GLint param), (pname, param)) \ - X(void, glReadPixels, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels), (x, y, width, height, format, type, pixels)) \ - X(void, glSampleCoverage, (GLclampf value, GLboolean invert), (value, invert)) \ - X(void, glScissor, (GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height)) \ - X(void, glStencilFunc, (GLenum func, GLint ref, GLuint mask), (func, ref, mask)) \ - X(void, glStencilMask, (GLuint mask), (mask)) \ - X(void, glStencilOp, (GLenum fail, GLenum zfail, GLenum zpass), (fail, zfail, zpass)) \ - X(void, glTexImage2D, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels), (target, level, internalformat, width, height, border, format, type, pixels)) \ - X(void, glTexParameteri, (GLenum target, GLenum pname, GLint param), (target, pname, param)) \ - X(void, glTexParameteriv, (GLenum target, GLenum pname, const GLint * params), (target, pname, params)) \ - X(void, glTexSubImage2D, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels), (target, level, xoffset, yoffset, width, height, format, type, pixels)) \ - X(void, glViewport, (GLint x, GLint y, GLsizei width, GLsizei height), (x, y, width, height)) \ - X(void, glPushAttrib, (GLbitfield mask), (mask)) \ - X(void, glPushClientAttrib, (GLbitfield mask), (mask)) \ - X(void, glPopAttrib, (), ()) \ - X(void, glPopClientAttrib, (), ()) \ - - -#endif // GLES_COMMON_FUNCTIONS_H diff --git a/external/android-emugl/host/include/OpenGLESDispatch/gles_extensions_functions.h b/external/android-emugl/host/include/OpenGLESDispatch/gles_extensions_functions.h deleted file mode 100644 index f673240134a4e1b07aeff758c43c48eaa9d7dcf0..0000000000000000000000000000000000000000 --- a/external/android-emugl/host/include/OpenGLESDispatch/gles_extensions_functions.h +++ /dev/null @@ -1,29 +0,0 @@ -// Auto-generated with: android/scripts/gen-entries.py --mode=funcargs distrib/android-emugl/host/libs/libOpenGLESDispatch/gles_extensions.entries --output=distrib/android-emugl/host/include/OpenGLESDispatch/gles_extensions_functions.h -// DO NOT EDIT THIS FILE - -#ifndef GLES_EXTENSIONS_FUNCTIONS_H -#define GLES_EXTENSIONS_FUNCTIONS_H - -#define LIST_GLES_EXTENSIONS_FUNCTIONS(X) \ - X(GLboolean, glIsRenderbufferEXT, (GLuint renderbuffer), (renderbuffer)) \ - X(void, glBindRenderbufferEXT, (GLenum target, GLuint renderbuffer), (target, renderbuffer)) \ - X(void, glDeleteRenderbuffersEXT, (GLsizei n, const GLuint * renderbuffers), (n, renderbuffers)) \ - X(void, glGenRenderbuffersEXT, (GLsizei n, GLuint * renderbuffers), (n, renderbuffers)) \ - X(void, glRenderbufferStorageEXT, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height)) \ - X(void, glGetRenderbufferParameterivEXT, (GLenum target, GLenum pname, GLint * params), (target, pname, params)) \ - X(GLboolean, glIsFramebufferEXT, (GLuint framebuffer), (framebuffer)) \ - X(void, glBindFramebufferEXT, (GLenum target, GLuint framebuffer), (target, framebuffer)) \ - X(void, glDeleteFramebuffersEXT, (GLsizei n, const GLuint * framebuffers), (n, framebuffers)) \ - X(void, glGenFramebuffersEXT, (GLsizei n, GLuint * framebuffers), (n, framebuffers)) \ - X(GLenum, glCheckFramebufferStatusEXT, (GLenum target), (target)) \ - X(void, glFramebufferTexture1DEXT, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level)) \ - X(void, glFramebufferTexture2DEXT, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level)) \ - X(void, glFramebufferTexture3DEXT, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (target, attachment, textarget, texture, level, zoffset)) \ - X(void, glFramebufferRenderbufferEXT, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer)) \ - X(void, glGetFramebufferAttachmentParameterivEXT, (GLenum target, GLenum attachment, GLenum pname, GLint * params), (target, attachment, pname, params)) \ - X(void, glGenerateMipmapEXT, (GLenum target), (target)) \ - X(void, glEGLImageTargetTexture2DOES, (GLenum target, GLeglImageOES image), (target, image)) \ - X(void, glEGLImageTargetRenderbufferStorageOES, (GLenum target, GLeglImageOES image), (target, image)) \ - - -#endif // GLES_EXTENSIONS_FUNCTIONS_H diff --git a/external/android-emugl/host/libs/CMakeLists.txt b/external/android-emugl/host/libs/CMakeLists.txt index 09b6e09b750986cc14c6639ff62066b9ebea4965..1e15260e63fe3d67c2a8121262fc5bf443a407d7 100644 --- a/external/android-emugl/host/libs/CMakeLists.txt +++ b/external/android-emugl/host/libs/CMakeLists.txt @@ -1,3 +1,22 @@ +set(GENERATED_SOURCES + gles1_extensions_functions.h + gles1_only_functions.h + gles2_extensions_functions.h + gles2_only_functions.h + gles3_only_functions.h + gles_common_functions.h + gles_extensions_functions.h + gles_functions.h + RenderEGL_extensions_functions.h + RenderEGL_functions.h) + +add_custom_target(GLHeaders) +add_custom_command( + TARGET GLHeaders + POST_BUILD + COMMAND ${CMAKE_SOURCE_DIR}/scripts/gen-emugl-headers.sh ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) + add_subdirectory(GLESv1_dec) add_subdirectory(GLESv2_dec) add_subdirectory(libOpenGLESDispatch) diff --git a/external/android-emugl/host/libs/GLESv1_dec/CMakeLists.txt b/external/android-emugl/host/libs/GLESv1_dec/CMakeLists.txt index c0b79af7d9fcbaa153944f8d64a28ab5e07f35d8..c057c59ef6043456020eb75deeda322902d03c27 100644 --- a/external/android-emugl/host/libs/GLESv1_dec/CMakeLists.txt +++ b/external/android-emugl/host/libs/GLESv1_dec/CMakeLists.txt @@ -21,4 +21,5 @@ if ("${cmake_build_type_lower}" STREQUAL "trace") endif() add_library(GLESv1_dec STATIC ${SOURCES} ${GENERATED_SOURCES}) +add_dependencies(GLESv1_dec GLHeaders) target_link_libraries(GLESv1_dec OpenglCodecCommon) diff --git a/external/android-emugl/host/libs/GLESv2_dec/CMakeLists.txt b/external/android-emugl/host/libs/GLESv2_dec/CMakeLists.txt index 6bd78c55eac97ea92f4408f67d59f21d26df012a..0e4ad0d2b375ca2a81173ae476a534d4305e4c09 100644 --- a/external/android-emugl/host/libs/GLESv2_dec/CMakeLists.txt +++ b/external/android-emugl/host/libs/GLESv2_dec/CMakeLists.txt @@ -21,4 +21,5 @@ if ("${cmake_build_type_lower}" STREQUAL "trace") endif() add_library(GLESv2_dec STATIC ${SOURCES} ${GENERATED_SOURCES}) +add_dependencies(GLESv2_dec GLHeaders) target_link_libraries(GLESv2_dec OpenglCodecCommon) diff --git a/external/android-emugl/host/libs/libOpenGLESDispatch/CMakeLists.txt b/external/android-emugl/host/libs/libOpenGLESDispatch/CMakeLists.txt index c4bd232a4c0a386040180e9ba5debb50b97990b7..46c4847ff6c50035d336de245b2423517bcd0eaf 100644 --- a/external/android-emugl/host/libs/libOpenGLESDispatch/CMakeLists.txt +++ b/external/android-emugl/host/libs/libOpenGLESDispatch/CMakeLists.txt @@ -3,7 +3,8 @@ set(SOURCES GLESv2Dispatch.cpp GLESv1Dispatch.cpp) -add_library(OpenGLESDispatch STATIC ${SOURCES} ${GENERATED_SOURCES}) +add_library(OpenGLESDispatch STATIC ${SOURCES}) +add_dependencies(OpenGLESDispatch GLHeaders) target_link_libraries(OpenGLESDispatch emugl_common GLESv2_dec diff --git a/external/android-emugl/host/libs/libOpenGLESDispatch/gles1_extensions.entries b/external/android-emugl/host/libs/libOpenGLESDispatch/gles1_extensions.entries index 1e7f2f1fea16ada1b9a3d4778f92ca28a0d36e2f..72c05264f2d908dd6a1b59b42d1bc183f118e31d 100644 --- a/external/android-emugl/host/libs/libOpenGLESDispatch/gles1_extensions.entries +++ b/external/android-emugl/host/libs/libOpenGLESDispatch/gles1_extensions.entries @@ -5,9 +5,17 @@ void glCurrentPaletteMatrixARB(GLint index); void glMatrixIndexuivARB(GLint size, GLuint * indices); void glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); void glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); -void glTexGenf(GLenum coord, GLenum pname, GLfloat param ); -void glTexGeni(GLenum coord, GLenum pname, GLint param ); -void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params ); -void glTexGeniv(GLenum coord, GLenum pname, const GLint *params ); -void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params ); -void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params ); +void glTexGenf(GLenum coord, GLenum pname, GLfloat param); +void glTexGeni(GLenum coord, GLenum pname, GLint param); +void glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params); +void glTexGeniv(GLenum coord, GLenum pname, const GLint *params); +void glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); +void glGetTexGeniv(GLenum coord, GLenum pname, GLint *params); +void glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); +void glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height); +void glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +void glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); +void glDrawTexsvOES(const GLshort *coords); +void glDrawTexivOES(const GLint *coords); +void glDrawTexfvOES(const GLfloat *coords); +void glDrawTexxvOES(const GLfixed *coords); diff --git a/external/android-emugl/host/libs/libOpenGLESDispatch/gles2_only.entries b/external/android-emugl/host/libs/libOpenGLESDispatch/gles2_only.entries index 55bdff44b7c5002381805f1b7e24d1836d07a526..cecc4474c8e4807fde94a60be9435c895ec16c38 100644 --- a/external/android-emugl/host/libs/libOpenGLESDispatch/gles2_only.entries +++ b/external/android-emugl/host/libs/libOpenGLESDispatch/gles2_only.entries @@ -4,6 +4,7 @@ void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask); void glStencilMaskSeparate(GLenum face, GLuint mask); +void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); GLboolean glIsProgram(GLuint program); GLboolean glIsShader(GLuint shader); void glVertexAttrib1f(GLuint indx, GLfloat x); diff --git a/scripts/gen-emugl-entries.py b/scripts/gen-emugl-entries.py new file mode 100755 index 0000000000000000000000000000000000000000..a122ef7e3eea050b5cd54f431143093fbbd7936f --- /dev/null +++ b/scripts/gen-emugl-entries.py @@ -0,0 +1,478 @@ +#!/usr/bin/env python + +# Copyright 2015 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. + +# Utility functions used to parse a list of DLL entry points. +# Expected format: +# +# -> ignored +# # -> ignored +# % -> verbatim output for header files. +# ! -> prefix name for header files. +# ; -> entry point declaration. +# +# Anything else is an error. + +import re +import sys +import argparse + +re_func = re.compile(r"""^(.*[\* ])([A-Za-z_][A-Za-z0-9_]*)\((.*)\);$""") +re_param = re.compile(r"""^(.*[\* ])([A-Za-z_][A-Za-z0-9_]*)$""") + +class Entry: + """Small class used to model a single DLL entry point.""" + def __init__(self, func_name, return_type, parameters): + """Initialize Entry instance. |func_name| is the function name, + |return_type| its return type, and |parameters| is a list of + (type,name) tuples from the entry's signature. + """ + self.func_name = func_name + self.return_type = return_type + self.parameters = "" + self.vartypes = [] + self.varnames = [] + self.call = "" + comma = "" + for param in parameters: + self.vartypes.append(param[0]) + self.varnames.append(param[1]) + self.parameters += "%s%s %s" % (comma, param[0], param[1]) + self.call += "%s%s" % (comma, param[1]) + comma = ", " + +def banner_command(argv): + """Return sanitized command-line description. + |argv| must be a list of command-line parameters, e.g. sys.argv. + Return a string corresponding to the command, with platform-specific + paths removed.""" + + # Remove path from first parameter + argv = argv[:] + argv[0] = "android/scripts/gen-entries.py" + return ' '.join(argv) + +def parse_entries_file(lines): + """Parse an .entries file and return a tuple of: + entries: list of Entry instances from the file. + prefix_name: prefix name from the file, or None. + verbatim: list of verbatim lines from the file. + errors: list of errors in the file, prefixed by line number. + """ + entries = [] + verbatim = [] + errors = [] + lineno = 0 + prefix_name = None + for line in lines: + lineno += 1 + line = line.strip() + if len(line) == 0: # Ignore empty lines + continue + if line[0] == '#': # Ignore comments + continue + if line[0] == '!': # Prefix name + prefix_name = line[1:] + continue + if line[0] == '%': # Verbatim line copy + verbatim.append(line[1:]) + continue + # Must be a function signature. + m = re_func.match(line) + if not m: + errors.append("%d: '%s'" % (lineno, line)) + continue + + return_type, func_name, parameters = m.groups() + return_type = return_type.strip() + parameters = parameters.strip() + params = [] + failure = False + if parameters != "void": + for parameter in parameters.split(','): + parameter = parameter.strip() + m = re_param.match(parameter) + if not m: + errors.append("%d: parameter '%s'" % (lineno, parameter)) + failure = True + break + else: + param_type, param_name = m.groups() + params.append((param_type.strip(), param_name.strip())) + + if not failure: + entries.append(Entry(func_name, return_type, params)) + + return (entries, prefix_name, verbatim, errors) + + +def gen_functions_header(entries, prefix_name, verbatim, filename, with_args): + """Generate a C header containing a macro listing all entry points. + |entries| is a list of Entry instances. + |prefix_name| is a prefix-name, it will be converted to upper-case. + |verbatim| is a list of verbatim lines that must appear before the + macro declaration. Useful to insert #include <> statements. + |filename| is the name of the original file. + """ + prefix_name = prefix_name.upper() + + print "// Auto-generated with: %s" % banner_command(sys.argv) + print "// DO NOT EDIT THIS FILE" + print "" + print "#ifndef %s_FUNCTIONS_H" % prefix_name + print "#define %s_FUNCTIONS_H" % prefix_name + print "" + for line in verbatim: + print line + + print "#define LIST_%s_FUNCTIONS(X) \\" % prefix_name + for entry in entries: + if with_args: + print " X(%s, %s, (%s), (%s)) \\" % \ + (entry.return_type, entry.func_name, entry.parameters, + entry.call) + else: + print " X(%s, %s, (%s)) \\" % \ + (entry.return_type, entry.func_name, entry.parameters) + + print "" + print "" + print "#endif // %s_FUNCTIONS_H" % prefix_name + + + +# The purpose of gen_translator() +# is to quickly generate implementations on the host Translator, +# which processes commands that just got onto the renderthread off goldfish pipe +# and are fed to system OpenGL. + +def gen_translator(entries): + # Definitions for custom implementation bodies go in + # android/scripts/gles3translatorgen/gles30_custom.py + # android/scripts/gles3translatorgen/gles31_custom.py + from gles3translatorgen import gles30_custom + from gles3translatorgen import gles31_custom + + translator_custom_share_processing = { } + for (k, v) in gles30_custom.custom_share_processing.items(): + translator_custom_share_processing[k] = v + for (k, v) in gles31_custom.custom_share_processing.items(): + translator_custom_share_processing[k] = v + + translator_custom_pre = { } + for (k, v) in gles30_custom.custom_preprocesses.items(): + translator_custom_pre[k] = v + for (k, v) in gles31_custom.custom_preprocesses.items(): + translator_custom_pre[k] = v + + translator_custom_post = { } + for (k, v) in gles30_custom.custom_postprocesses.items(): + translator_custom_post[k] = v + for (k, v) in gles31_custom.custom_postprocesses.items(): + translator_custom_post[k] = v + + translator_no_passthrough = {} + for (k, v) in gles30_custom.no_passthrough.items(): + translator_no_passthrough[k] = v + for (k, v) in gles31_custom.no_passthrough.items(): + translator_no_passthrough[k] = v + + translator_needexternc = { + "glGetStringi": 1, + "glUniform4ui": 1, + "glGetUniformIndices": 1, + "glTransformFeedbackVaryings": 1, + "glCreateShaderProgramv": 1, + "glProgramUniform2ui": 1, + "glProgramUniform3ui": 1, + "glProgramUniform4ui": 1, + "glBindVertexBuffer": 1, + }; + translator_nocontext_fail_codes = { + "glClientWaitSync" : "GL_WAIT_FAILED", + }; + def needExternC(entry): + if translator_needexternc.has_key(entry.func_name): + return "extern \"C\" " + else: + return "" + def get_fail_code(entry): + if translator_nocontext_fail_codes.has_key(entry.func_name): + return translator_nocontext_fail_codes[entry.func_name]; + else: + return "0" + def gen_cxt_getter(entry): + if (entry.return_type == "void"): + print " GET_CTX_V2();" + else: + print " GET_CTX_V2_RET(%s);" % get_fail_code(entry) + + def gen_validations_custom_impl(entry): + isGen = entry.func_name.startswith("glGen") + isDelete = entry.func_name.startswith("glDelete") + isBufferOp = "Buffer" in entry.func_name + + hasTargetArg = "target" in entry.varnames + hasProgramArg = "program" in entry.varnames + + def mySetError(condition, glerr): + if entry.return_type == "void": + return "SET_ERROR_IF(%s,%s)" % (condition, glerr); + else: + return "RET_AND_SET_ERROR_IF(%s,%s,%s)" % (condition, glerr, get_fail_code(entry)); + + if (isGen or isDelete) and ("n" in entry.varnames): + print " %s;" % mySetError("n < 0", "GL_INVALID_VALUE"); + if (isBufferOp and hasTargetArg): + print " %s;" % mySetError("!GLESv2Validate::bufferTarget(ctx, target)", "GL_INVALID_ENUM"); + if translator_custom_pre.has_key(entry.func_name): + print translator_custom_pre[entry.func_name], + + def gen_call_ret(entry): + globalNameTypes = { + ("GLuint", "program") : "NamedObjectType::SHADER_OR_PROGRAM", + ("GLuint", "texture") : "NamedObjectType::TEXTURE", + ("GLuint", "buffer") : "NamedObjectType::VERTEXBUFFER", + ("GLuint", "sampler") : "NamedObjectType::SAMPLER", + ("GLuint", "query") : "NamedObjectType::QUERY", + } + globalNames = { + ("GLuint", "program") : "globalProgramName", + ("GLuint", "texture") : "globalTextureName", + ("GLuint", "buffer") : "globalBufferName", + ("GLuint", "sampler") : "globalSampler", + ("GLuint", "query") : "globalQuery", + } + + needsShareGroup = False + for v in zip(entry.vartypes, entry.varnames): + if v in globalNameTypes.keys(): + needsShareGroup = True + + if needsShareGroup: + print " if (ctx->shareGroup().get()) {" + for key in zip(entry.vartypes, entry.varnames): + vartype, varname = key + if globalNames.has_key(key): + print " const GLuint %s = ctx->shareGroup()->getGlobalName(%s, %s);" % (globalNames[key], globalNameTypes[key], varname) + + globalCall = ", ".join(map(lambda k: globalNames.get(k, k[1]), zip(entry.vartypes, entry.varnames))) + + if needsShareGroup and translator_custom_share_processing.has_key(entry.func_name): + print translator_custom_share_processing[entry.func_name], + + if (entry.return_type == "void"): + if (needsShareGroup): + print " ", + + if not translator_no_passthrough.has_key(entry.func_name): + print " ctx->dispatcher().%s(%s);" % (entry.func_name, globalCall) + + if needsShareGroup: + print " }" + if translator_custom_post.has_key(entry.func_name): + print translator_custom_post[entry.func_name]; + else: + if (needsShareGroup): + print " ", + if not translator_no_passthrough.has_key(entry.func_name): + print " %s %s = ctx->dispatcher().%s(%s);" % (entry.return_type, entry.func_name + "RET", entry.func_name, globalCall) + else: + print " %s %s = %s" % (entry.return_type, entry_func_name + "RET", get_fail_code(entry)) + + if translator_custom_post.has_key(entry.func_name): + print translator_custom_post[entry.func_name]; + + print " return %s;" % (entry.func_name + "RET"); + if needsShareGroup: + print " } else return %s;" % (get_fail_code(entry)) + + print "// Auto-generated with: %s" % banner_command(sys.argv) + print "// This file is best left unedited." + print "// Try to make changes through gen_translator in gen-entries.py," + print "// and/or parcel out custom functionality in separate code." + for entry in entries: + print "%sGL_APICALL %s GL_APIENTRY %s(%s) {" % (needExternC(entry), entry.return_type, entry.func_name, entry.parameters) + gen_cxt_getter(entry); + gen_validations_custom_impl(entry); + gen_call_ret(entry); + print "}\n" + +def gen_dll_wrapper(entries, prefix_name, verbatim, filename): + """Generate a C source file that contains functions that act as wrappers + for entry points located in another shared library. This allows the + code that calls these functions to perform lazy-linking to system + libraries. + |entries|, |prefix_name|, |verbatim| and |filename| are the same as + for gen_functions_header() above. + """ + upper_name = prefix_name.upper() + + ENTRY_PREFIX = "__dll_" + + print "// Auto-generated with: %s" % banner_command(sys.argv) + print "// DO NOT EDIT THIS FILE" + print "" + print "#include " + for line in verbatim: + print line + + print "" + print "///" + print "/// W R A P P E R P O I N T E R S" + print "///" + print "" + for entry in entries: + ptr_name = ENTRY_PREFIX + entry.func_name + print "static %s (*%s)(%s) = 0;" % \ + (entry.return_type, ptr_name, entry.parameters) + + print "" + print "///" + print "/// W R A P P E R F U N C T I O N S" + print "///" + print "" + + for entry in entries: + print "%s %s(%s) {" % \ + (entry.return_type, entry.func_name, entry.parameters) + ptr_name = ENTRY_PREFIX + entry.func_name + if entry.return_type != "void": + print " return %s(%s);" % (ptr_name, entry.call) + else: + print " %s(%s);" % (ptr_name, entry.call) + print "}\n" + + print "" + print "///" + print "/// I N I T I A L I Z A T I O N F U N C T I O N" + print "///" + print "" + + print "int %s_dynlink_init(void* lib) {" % prefix_name + for entry in entries: + ptr_name = ENTRY_PREFIX + entry.func_name + print " %s = (%s(*)(%s))dlsym(lib, \"%s\");" % \ + (ptr_name, + entry.return_type, + entry.parameters, + entry.func_name) + print " if (!%s) return -1;" % ptr_name + print " return 0;" + print "}" + + +def gen_windows_def_file(entries): + """Generate a windows DLL .def file. |entries| is a list of Entry instances. + """ + print "EXPORTS" + for entry in entries: + print " %s" % entry.func_name + + +def gen_unix_sym_file(entries): + """Generate an ELF linker version file. |entries| is a list of Entry + instances. + """ + print "VERSION {" + print "\tglobal:" + for entry in entries: + print "\t\t%s;" % entry.func_name + print "\tlocal:" + print "\t\t*;" + print "};" + +def gen_symbols(entries, underscore): + """Generate a list of symbols from |entries|, a list of Entry instances. + |underscore| is a boolean. If True, then prepend an underscore to each + symbol name. + """ + prefix = "" + if underscore: + prefix = "_" + for entry in entries: + print "%s%s" % (prefix, entry.func_name) + +def parse_file(filename, lines, mode): + """Generate one of possible outputs from |filename|. |lines| must be a list + of text lines from the file, and |mode| is one of the --mode option + values. + """ + entries, prefix_name, verbatim, errors = parse_entries_file(lines) + if errors: + for error in errors: + print >> sys.stderr, "ERROR: %s:%s" % (filename, error) + sys.exit(1) + + if not prefix_name: + prefix_name = "unknown" + + if mode == 'def': + gen_windows_def_file(entries) + elif mode == 'sym': + gen_unix_sym_file(entries) + elif mode == 'translator_passthrough': + gen_translator(entries) + elif mode == 'wrapper': + gen_dll_wrapper(entries, prefix_name, verbatim, filename) + elif mode == 'symbols': + gen_symbols(entries, False) + elif mode == '_symbols': + gen_symbols(entries, True) + elif mode == 'functions': + gen_functions_header(entries, prefix_name, verbatim, filename, False) + elif mode == 'funcargs': + gen_functions_header(entries, prefix_name, verbatim, filename, True) + + +# List of valid --mode option values. +mode_list = [ + 'def', 'sym', 'translator_passthrough', 'wrapper', 'symbols', '_symbols', 'functions', 'funcargs' +] + +# Argument parsing. +parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description="""\ +A script used to parse an .entries input file containing a list of function +declarations, and generate various output files depending on the value of +the --mode option, which can be: + + def Generate a windows DLL .def file. + sym Generate a Unix .so linker script. + wrapper Generate a C source file containing wrapper functions. + symbols Generate a simple list of symbols, one per line. + _symbols Generate a simple list of symbols, prefixed with _. + functions Generate a C header containing a macro listing all functions. + funcargs Like 'functions', but adds function call arguments to listing. + +""") +parser.add_argument("--mode", help="Output mode", choices=mode_list) +parser.add_argument("--output", help="output file") +parser.add_argument("file", help=".entries file path") + +args = parser.parse_args() + +if not args.mode: + print >> sys.stderr, "ERROR: Please use --mode=, see --help." + sys.exit(1) + +if args.output: + sys.stdout = open(args.output, "w+") + +if args.file == '--': + parse_file("", sys.stdin, args.mode) +else: + parse_file(args.file, open(args.file), args.mode) diff --git a/scripts/gen-emugl-headers.sh b/scripts/gen-emugl-headers.sh new file mode 100755 index 0000000000000000000000000000000000000000..20aa9d16a2c7dc24458b8c5ac20888f9f01bf32a --- /dev/null +++ b/scripts/gen-emugl-headers.sh @@ -0,0 +1,110 @@ +#!/bin/sh + +# Copyright (C) 2015 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. + +# Run this script to re-generate headers with the gen-entries.py script. + +set -e +export LANG=C +export LC_ALL=C + +PROGDIR=$(dirname "$0") +OUTDIR=$1 + +panic () { + echo "ERROR: $@" + exit 1 +} + +if [ -z "$OUTDIR" ]; then + panic "No output dir defined!" +fi + +QEMU_TOP_DIR=$(cd $PROGDIR/../ && pwd -P) +SCRIPT_DIR=scripts +if [ ! -d "$QEMU_TOP_DIR/$SCRIPT_DIR" ]; then + panic "Missing scripts directory: $QEMU_TOP_DIR/$SCRIPT_DIR" +fi + +cd $QEMU_TOP_DIR +GEN_ENTRIES=$SCRIPT_DIR/gen-emugl-entries.py +if [ ! -f "$GEN_ENTRIES" ]; then + panic "Missing script: $GEN_ENTRIES" +fi + +FAILURES= + +# $1: Source file +# $2: Target file +# $3: gen-entries script. +gen_functions_header () { + local SRC_FILE="$1" + local DST_FILE="$2" + local GEN_ENTRIES="$3" + if [ ! -f "$SRC_FILE" ]; then + echo "ERROR: Missing source file: $SRC_FILE" + FAILURES=true + else + echo "Generating $DST_FILE" + $GEN_ENTRIES --mode=functions $SRC_FILE --output=$DST_FILE + fi +} + +# $1: Source file +# $2: Target file +# $3: gen-entries script. +gen_funcargs_header () { + local SRC_FILE="$1" + local DST_FILE="$2" + local GEN_ENTRIES="$3" + if [ ! -f "$SRC_FILE" ]; then + echo "ERROR: Missing source file: $SRC_FILE" + FAILURES=true + else + echo "Generating $DST_FILE" + $GEN_ENTRIES --mode=funcargs $SRC_FILE --output=$DST_FILE + fi +} + + +## +## libOpenGLESDispatch headers. +## +OPENGLES_DISPATCH_SRCDIR=external/android-emugl/host/libs/libOpenGLESDispatch +OPENGLES_DISPATCH_INCLUDE=$OUTDIR/external/android-emugl/host/include/OpenGLESDispatch +mkdir -p $OPENGLES_DISPATCH_INCLUDE + +gen_functions_header \ + "$OPENGLES_DISPATCH_SRCDIR"/render_egl.entries \ + "$OPENGLES_DISPATCH_INCLUDE"/RenderEGL_functions.h \ + "$GEN_ENTRIES" + +gen_functions_header \ + "$OPENGLES_DISPATCH_SRCDIR"/render_egl_extensions.entries \ + "$OPENGLES_DISPATCH_INCLUDE"/RenderEGL_extensions_functions.h \ + "$GEN_ENTRIES" + +GLES_ENTRIES="gles_common gles_extensions gles1_only gles1_extensions gles2_only \ +gles2_extensions gles3_only" + +for ENTRY in $GLES_ENTRIES; do + SRC_FILE=$OPENGLES_DISPATCH_SRCDIR/${ENTRY}.entries + DST_FILE=$OPENGLES_DISPATCH_INCLUDE/${ENTRY}_functions.h + gen_funcargs_header "$SRC_FILE" "$DST_FILE" "$GEN_ENTRIES" +done + +if [ "$FAILURES" ]; then + exit 1 +fi diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bca9db82050d9008b42786a887274d74ac2aacef..3e8bedbe1530193fd1b58acbfbd5165b55ac96d1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,6 +18,7 @@ include_directories( ${CMAKE_SOURCE_DIR}/external/process-cpp-minimal/include ${CMAKE_SOURCE_DIR}/external/android-emugl/shared ${CMAKE_SOURCE_DIR}/external/android-emugl/host/include + ${CMAKE_BINARY_DIR}/external/android-emugl/host/include ${CMAKE_SOURCE_DIR}/external/android-emugl/shared/OpenglCodecCommon ${CMAKE_SOURCE_DIR}/external/android-emugl/host/libs ${CMAKE_SOURCE_DIR}/external/android-emugl/host/include/libOpenglRender diff --git a/src/anbox/graphics/emugl/render_api.entries b/src/anbox/graphics/emugl/render_api.entries deleted file mode 100644 index 1e57a15141f9ad41f4d418abacaf4512950300ff..0000000000000000000000000000000000000000 --- a/src/anbox/graphics/emugl/render_api.entries +++ /dev/null @@ -1,129 +0,0 @@ -!render_api - -%#include "OpenglRender/render_api_platform_types.h" -% -%#include -%#include -%#include -% -%/* list of constants to be passed to setStreamMode */ -%#define RENDER_API_STREAM_MODE_DEFAULT 0 -%#define RENDER_API_STREAM_MODE_TCP 1 -%#define RENDER_API_STREAM_MODE_UNIX 2 -%#define RENDER_API_STREAM_MODE_PIPE 3 -% -%typedef void (*OnPostFn)(void* context, int width, int height, int ydir, -% int format, int type, unsigned char* pixels); - -# Initialize the library and tries to load the corresponding EGL/GLES -# translation libraries. Must be called before anything else to ensure that -# everything works. Returns 0 on success, error code otherwise. -# If it returns an error, you cannot use the library at all. -int initLibrary(void); - -# Change the stream mode. This must be called before initOpenGLRenderer() -# |mode| is one of STREAM_DEFAULT, STREAM_UNIX, STREAM_TCP or STREAM_PIPE. -int setStreamMode(int mode); - -# initOpenGLRenderer - initialize the OpenGL renderer process. -# -# width and height are the framebuffer dimensions that will be reported to the -# guest display driver. -# -# useSubWindow is true to indicate that createOpenGLSubWindow() will be called -# later. If false, only setPostCallback() is supported. -# -# addr is a buffer of addrLen bytes that will receive the address that clients -# should connect to. The interpretation depends on the transport: -# - TCP: The buffer contains the port number as a string. The server is -# listening only on the loopback address. -# - Win32 and UNIX named pipes: The buffer contains the full path clients -# should connect to. -# -# This function is *NOT* thread safe and should be called first -# to initialize the renderer after initLibrary(). -int initOpenGLRenderer(int width, int height, bool useSubWindow, char* addr, size_t addrLen, emugl_logger_struct logfuncs); - -# getHardwareStrings - describe the GPU hardware and driver. -# The underlying GL's vendor/renderer/version strings are returned to the -# caller. The pointers become invalid after a call to stopOpenGLRenderer(). -void getHardwareStrings(const char** vendor, const char** renderer, const char** version); - -# A per-frame callback can be registered with setPostCallback(); to remove it -# pass NULL for both parameters. While a callback is registered, the renderer -# will call it just before each new frame is displayed, providing a copy of -# the framebuffer contents. -# -# The callback will be called from one of the renderer's threads, so will -# probably need synchronization on any data structures it modifies. The -# pixels buffer may be overwritten as soon as the callback returns; if it -# needs the pixels afterwards it must copy them. -# -# The pixels buffer is intentionally not const: the callback may modify the -# data without copying to another buffer if it wants, e.g. in-place RGBA to -# RGB conversion, or in-place y-inversion. -# -# Parameters are: -# context The pointer optionally provided when the callback was -# registered. The client can use this to pass whatever -# information it wants to the callback. -# width, height Dimensions of the image, in pixels. Rows are tightly -# packed; there is no inter-row padding. -# ydir Indicates row order: 1 means top-to-bottom order, -1 means -# bottom-to-top order. -# format, type Format and type GL enums, as used in glTexImage2D() or -# glReadPixels(), describing the pixel format. -# pixels The framebuffer image. -# -# In the first implementation, ydir is always -1 (bottom to top), format and -# type are always GL_RGBA and GL_UNSIGNED_BYTE, and the width and height will -# always be the same as the ones passed to initOpenGLRenderer(). -void setPostCallback(OnPostFn onPost, void* onPostContext); - -# showOpenGLSubwindow - -# Create or modify a native subwindow which is a child of 'window' -# to be used for framebuffer display. If a subwindow already exists, -# its properties will be updated to match the given parameters. -# wx,wy is the top left corner of the rendering subwindow. -# ww,wh are the dimensions of the rendering subwindow. -# fbw,fbh are the dimensions of the underlying guest framebuffer. -# dpr is the device pixel ratio, which is needed for higher density -# displays like retina. -# zRot is the rotation to apply on the framebuffer display image. -# -# Return true on success, false on failure, which can happen when using -# a software-only renderer like OSMesa. In this case, the client should -# call setPostCallback to get the content of each new frame when it is -# posted, and will be responsible for displaying it. -bool showOpenGLSubwindow(FBNativeWindowType window, int wx, int wy, int ww, int wh, int fbw, int fbh, float dpr, float zRot); - -# destroyOpenGLSubwindow - -# destroys the created native subwindow. Once destroyed, -# Framebuffer content will not be visible until a new -# subwindow will be created. -# Return true on success, false otherwise. -bool destroyOpenGLSubwindow(void); - -# setOpenGLDisplayRotation - -# set the framebuffer display image rotation in units -# of degrees around the z axis -void setOpenGLDisplayRotation(float zRot); - -# setOpenGLDisplayTranslation -# change what coordinate of the guest framebuffer will be displayed at the -# corner of the GPU sub-window. Specifically, |px| and |py| = 0 means -# align the bottom-left of the framebuffer with the bottom-left of the -# sub-window, and |px| and |py| = 1 means align the top right of the -# framebuffer with the top right of the sub-window. Intermediate values -# interpolate between these states. -void setOpenGLDisplayTranslation(float px, float py); - -# repaintOpenGLDisplay - -# causes the OpenGL subwindow to get repainted with the -# latest framebuffer content. -void repaintOpenGLDisplay(void); - -# stopOpenGLRenderer - stops the OpenGL renderer process. -# This functions is#NOT* thread safe and should be called -# only if previous initOpenGLRenderer has returned true. -int stopOpenGLRenderer(void);