From 12794e2de81ab9735446ea01b23a215d7bc70ae3 Mon Sep 17 00:00:00 2001 From: Nicolas Capens Date: Sun, 26 Apr 2015 18:34:16 -0700 Subject: [PATCH] Dispatch EGL entry functions to avoid resolving to the same symbol. Bug 18752589 Change-Id: I96bbad9ab0593b93b219ec8a769523342497c5da Reviewed-on: https://swiftshader-review.googlesource.com/2910 Reviewed-by: Nicolas Capens Tested-by: Nicolas Capens --- src/OpenGL/libEGL/libEGL.cpp | 84 +++++------ src/OpenGL/libEGL/libEGL.hpp | 72 +++++----- src/OpenGL/libEGL/main.cpp | 315 ++++++++++++++++++++++++++++++++++++----- src/OpenGL/libGLES_CM/main.cpp | 2 +- src/OpenGL/libGLESv2/main.cpp | 2 +- 5 files changed, 358 insertions(+), 117 deletions(-) diff --git a/src/OpenGL/libEGL/libEGL.cpp b/src/OpenGL/libEGL/libEGL.cpp index 1fa048f69..2953d2586 100644 --- a/src/OpenGL/libEGL/libEGL.cpp +++ b/src/OpenGL/libEGL/libEGL.cpp @@ -88,9 +88,9 @@ static bool validateSurface(egl::Display *display, egl::Surface *surface) return true; } -extern "C" +namespace egl { -EGLAPI EGLint EGLAPIENTRY eglGetError(void) +EGLint GetError(void) { TRACE("()"); @@ -104,14 +104,14 @@ EGLAPI EGLint EGLAPIENTRY eglGetError(void) return error; } -EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id) +EGLDisplay GetDisplay(EGLNativeDisplayType display_id) { TRACE("(EGLNativeDisplayType display_id = %p)", display_id); return egl::Display::getPlatformDisplay(EGL_UNKNOWN, display_id); } -EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor) +EGLBoolean Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor) { TRACE("(EGLDisplay dpy = %p, EGLint *major = %p, EGLint *minor = %p)", dpy, major, minor); @@ -134,7 +134,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLin return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy) +EGLBoolean Terminate(EGLDisplay dpy) { TRACE("(EGLDisplay dpy = %p)", dpy); @@ -150,7 +150,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy) return success(EGL_TRUE); } -EGLAPI const char *EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name) +const char *QueryString(EGLDisplay dpy, EGLint name) { TRACE("(EGLDisplay dpy = %p, EGLint name = %d)", dpy, name); @@ -187,7 +187,7 @@ EGLAPI const char *EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name) return error(EGL_BAD_PARAMETER, (const char*)NULL); } -EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config) +EGLBoolean GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config) { TRACE("(EGLDisplay dpy = %p, EGLConfig *configs = %p, " "EGLint config_size = %d, EGLint *num_config = %p)", @@ -215,7 +215,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config) +EGLBoolean ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config) { TRACE("(EGLDisplay dpy = %p, const EGLint *attrib_list = %p, " "EGLConfig *configs = %p, EGLint config_size = %d, EGLint *num_config = %p)", @@ -245,7 +245,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attr return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value) +EGLBoolean GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value) { TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLint attribute = %d, EGLint *value = %p)", dpy, config, attribute, value); @@ -265,7 +265,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig confi return success(EGL_TRUE); } -EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list) +EGLSurface CreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list) { TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLNativeWindowType win = %p, " "const EGLint *attrib_list = %p)", dpy, config, window, attrib_list); @@ -285,7 +285,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig c return display->createWindowSurface(window, config, attrib_list); } -EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list) +EGLSurface CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list) { TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, const EGLint *attrib_list = %p)", dpy, config, attrib_list); @@ -300,7 +300,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig return display->createOffscreenSurface(config, attrib_list); } -EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list) +EGLSurface CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list) { TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLNativePixmapType pixmap = %p, " "const EGLint *attrib_list = %p)", dpy, config, pixmap, attrib_list); @@ -317,7 +317,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig c return success(EGL_NO_SURFACE); } -EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface) +EGLBoolean DestroySurface(EGLDisplay dpy, EGLSurface surface) { TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p)", dpy, surface); @@ -339,7 +339,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surfa return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value) +EGLBoolean QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value) { TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint attribute = %d, EGLint *value = %p)", dpy, surface, attribute, value); @@ -414,7 +414,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api) +EGLBoolean BindAPI(EGLenum api) { TRACE("(EGLenum api = 0x%X)", api); @@ -434,7 +434,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api) return success(EGL_TRUE); } -EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void) +EGLenum QueryAPI(void) { TRACE("()"); @@ -443,7 +443,7 @@ EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void) return success(API); } -EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void) +EGLBoolean WaitClient(void) { TRACE("()"); @@ -452,7 +452,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void) return success(EGL_FALSE); } -EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void) +EGLBoolean ReleaseThread(void) { TRACE("()"); @@ -461,7 +461,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void) return success(EGL_TRUE); } -EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list) +EGLSurface CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list) { TRACE("(EGLDisplay dpy = %p, EGLenum buftype = 0x%X, EGLClientBuffer buffer = %p, " "EGLConfig config = %p, const EGLint *attrib_list = %p)", @@ -472,7 +472,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy, E return error(EGL_BAD_PARAMETER, EGL_NO_SURFACE); } -EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value) +EGLBoolean SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value) { TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint attribute = %d, EGLint value = %d)", dpy, surface, attribute, value); @@ -508,7 +508,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surfac return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) +EGLBoolean BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint buffer = %d)", dpy, surface, buffer); @@ -550,7 +550,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) +EGLBoolean ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) { TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLint buffer = %d)", dpy, surface, buffer); @@ -587,7 +587,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surf return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval) +EGLBoolean SwapInterval(EGLDisplay dpy, EGLint interval) { TRACE("(EGLDisplay dpy = %p, EGLint interval = %d)", dpy, interval); @@ -610,7 +610,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval) return success(EGL_TRUE); } -EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list) +EGLContext CreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list) { TRACE("(EGLDisplay dpy = %p, EGLConfig config = %p, EGLContext share_context = %p, " "const EGLint *attrib_list = %p)", dpy, config, share_context, attrib_list); @@ -647,7 +647,7 @@ EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, return display->createContext(config, shareContext, clientVersion); } -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx) +EGLBoolean DestroyContext(EGLDisplay dpy, EGLContext ctx) { TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p)", dpy, ctx); @@ -669,7 +669,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx) return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) +EGLBoolean MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) { TRACE("(EGLDisplay dpy = %p, EGLSurface draw = %p, EGLSurface read = %p, EGLContext ctx = %p)", dpy, draw, read, ctx); @@ -726,7 +726,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EG return success(EGL_TRUE); } -EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void) +EGLContext GetCurrentContext(void) { TRACE("()"); @@ -735,7 +735,7 @@ EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void) return success(context); } -EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw) +EGLSurface GetCurrentSurface(EGLint readdraw) { TRACE("(EGLint readdraw = %d)", readdraw); @@ -755,7 +755,7 @@ EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw) } } -EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void) +EGLDisplay GetCurrentDisplay(void) { TRACE("()"); @@ -764,7 +764,7 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void) return success(dpy); } -EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value) +EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value) { TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p, EGLint attribute = %d, EGLint *value = %p)", dpy, ctx, attribute, value); @@ -782,7 +782,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, EG return success(0); } -EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void) +EGLBoolean WaitGL(void) { TRACE("()"); @@ -791,7 +791,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void) return success(EGL_FALSE); } -EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine) +EGLBoolean WaitNative(EGLint engine) { TRACE("(EGLint engine = %d)", engine); @@ -800,7 +800,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine) return success(EGL_FALSE); } -EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) +EGLBoolean SwapBuffers(EGLDisplay dpy, EGLSurface surface) { TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p)", dpy, surface); @@ -822,7 +822,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) return success(EGL_TRUE); } -EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) +EGLBoolean CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) { TRACE("(EGLDisplay dpy = %p, EGLSurface surface = %p, EGLNativePixmapType target = %p)", dpy, surface, target); @@ -839,7 +839,7 @@ EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, return success(EGL_FALSE); } -EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list) +EGLImageKHR CreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list) { TRACE("(EGLDisplay dpy = %p, EGLContext ctx = %p, EGLenum target = 0x%X, buffer = %p, const EGLint attrib_list = %p)", dpy, ctx, target, buffer, attrib_list); @@ -913,7 +913,7 @@ EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, return success((EGLImageKHR)image); } -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image) +EGLBoolean DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image) { TRACE("(EGLDisplay dpy = %p, EGLImageKHR image = %p)", dpy, image); @@ -935,24 +935,24 @@ EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR ima return success(EGL_TRUE); } -EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list) +EGLDisplay GetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list) { TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLint *attrib_list = %p)", platform, native_display, attrib_list); return egl::Display::getPlatformDisplay(platform, (EGLNativeDisplayType)native_display); } -EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list) +EGLSurface CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list) { - return eglCreateWindowSurface(dpy, config, (EGLNativeWindowType)native_window, attrib_list); + return CreateWindowSurface(dpy, config, (EGLNativeWindowType)native_window, attrib_list); } -EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list) +EGLSurface CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list) { - return eglCreatePixmapSurface(dpy, config, (EGLNativePixmapType)native_pixmap, attrib_list); + return CreatePixmapSurface(dpy, config, (EGLNativePixmapType)native_pixmap, attrib_list); } -EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress(const char *procname) +__eglMustCastToProperFunctionPointerType GetProcAddress(const char *procname) { TRACE("(const char *procname = \"%s\")", procname); diff --git a/src/OpenGL/libEGL/libEGL.hpp b/src/OpenGL/libEGL/libEGL.hpp index f7f3d3083..33055ac69 100644 --- a/src/OpenGL/libEGL/libEGL.hpp +++ b/src/OpenGL/libEGL/libEGL.hpp @@ -11,42 +11,42 @@ class LibEGLexports public: LibEGLexports(); - EGLint (EGLAPIENTRY *eglGetError)(void); - EGLDisplay (EGLAPIENTRY *eglGetDisplay)(EGLNativeDisplayType display_id); - EGLBoolean (EGLAPIENTRY *eglInitialize)(EGLDisplay dpy, EGLint *major, EGLint *minor); - EGLBoolean (EGLAPIENTRY *eglTerminate)(EGLDisplay dpy); - const char *(EGLAPIENTRY *eglQueryString)(EGLDisplay dpy, EGLint name); - EGLBoolean (EGLAPIENTRY *eglGetConfigs)(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); - EGLBoolean (EGLAPIENTRY *eglChooseConfig)(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); - EGLBoolean (EGLAPIENTRY *eglGetConfigAttrib)(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value); - EGLSurface (EGLAPIENTRY *eglCreateWindowSurface)(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list); - EGLSurface (EGLAPIENTRY *eglCreatePbufferSurface)(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); - EGLSurface (EGLAPIENTRY *eglCreatePixmapSurface)(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list); - EGLBoolean (EGLAPIENTRY *eglDestroySurface)(EGLDisplay dpy, EGLSurface surface); - EGLBoolean (EGLAPIENTRY *eglQuerySurface)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value); - EGLBoolean (EGLAPIENTRY *eglBindAPI)(EGLenum api); - EGLenum (EGLAPIENTRY *eglQueryAPI)(void); - EGLBoolean (EGLAPIENTRY *eglWaitClient)(void); - EGLBoolean (EGLAPIENTRY *eglReleaseThread)(void); - EGLSurface (EGLAPIENTRY *eglCreatePbufferFromClientBuffer)(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list); - EGLBoolean (EGLAPIENTRY *eglSurfaceAttrib)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); - EGLBoolean (EGLAPIENTRY *eglBindTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer); - EGLBoolean (EGLAPIENTRY *eglReleaseTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer); - EGLBoolean (EGLAPIENTRY *eglSwapInterval)(EGLDisplay dpy, EGLint interval); - EGLContext (EGLAPIENTRY *eglCreateContext)(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list); - EGLBoolean (EGLAPIENTRY *eglDestroyContext)(EGLDisplay dpy, EGLContext ctx); - EGLBoolean (EGLAPIENTRY *eglMakeCurrent)(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx); - EGLContext (EGLAPIENTRY *eglGetCurrentContext)(void); - EGLSurface (EGLAPIENTRY *eglGetCurrentSurface)(EGLint readdraw); - EGLDisplay (EGLAPIENTRY *eglGetCurrentDisplay)(void); - EGLBoolean (EGLAPIENTRY *eglQueryContext)(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value); - EGLBoolean (EGLAPIENTRY *eglWaitGL)(void); - EGLBoolean (EGLAPIENTRY *eglWaitNative)(EGLint engine); - EGLBoolean (EGLAPIENTRY *eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface); - EGLBoolean (EGLAPIENTRY *eglCopyBuffers)(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); - EGLImageKHR (EGLAPIENTRY *eglCreateImageKHR)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); - EGLBoolean (EGLAPIENTRY *eglDestroyImageKHR)(EGLDisplay dpy, EGLImageKHR image); - __eglMustCastToProperFunctionPointerType (EGLAPIENTRY *eglGetProcAddress)(const char*); + EGLint (*eglGetError)(void); + EGLDisplay (*eglGetDisplay)(EGLNativeDisplayType display_id); + EGLBoolean (*eglInitialize)(EGLDisplay dpy, EGLint *major, EGLint *minor); + EGLBoolean (*eglTerminate)(EGLDisplay dpy); + const char *(*eglQueryString)(EGLDisplay dpy, EGLint name); + EGLBoolean (*eglGetConfigs)(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); + EGLBoolean (*eglChooseConfig)(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); + EGLBoolean (*eglGetConfigAttrib)(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value); + EGLSurface (*eglCreateWindowSurface)(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list); + EGLSurface (*eglCreatePbufferSurface)(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); + EGLSurface (*eglCreatePixmapSurface)(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list); + EGLBoolean (*eglDestroySurface)(EGLDisplay dpy, EGLSurface surface); + EGLBoolean (*eglQuerySurface)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value); + EGLBoolean (*eglBindAPI)(EGLenum api); + EGLenum (*eglQueryAPI)(void); + EGLBoolean (*eglWaitClient)(void); + EGLBoolean (*eglReleaseThread)(void); + EGLSurface (*eglCreatePbufferFromClientBuffer)(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list); + EGLBoolean (*eglSurfaceAttrib)(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); + EGLBoolean (*eglBindTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + EGLBoolean (*eglReleaseTexImage)(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + EGLBoolean (*eglSwapInterval)(EGLDisplay dpy, EGLint interval); + EGLContext (*eglCreateContext)(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list); + EGLBoolean (*eglDestroyContext)(EGLDisplay dpy, EGLContext ctx); + EGLBoolean (*eglMakeCurrent)(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx); + EGLContext (*eglGetCurrentContext)(void); + EGLSurface (*eglGetCurrentSurface)(EGLint readdraw); + EGLDisplay (*eglGetCurrentDisplay)(void); + EGLBoolean (*eglQueryContext)(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value); + EGLBoolean (*eglWaitGL)(void); + EGLBoolean (*eglWaitNative)(EGLint engine); + EGLBoolean (*eglSwapBuffers)(EGLDisplay dpy, EGLSurface surface); + EGLBoolean (*eglCopyBuffers)(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); + EGLImageKHR (*eglCreateImageKHR)(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); + EGLBoolean (*eglDestroyImageKHR)(EGLDisplay dpy, EGLImageKHR image); + __eglMustCastToProperFunctionPointerType (*eglGetProcAddress)(const char*); // Functions that don't change the error code, for use by client APIs egl::Context *(*clientGetCurrentContext)(); diff --git a/src/OpenGL/libEGL/main.cpp b/src/OpenGL/libEGL/main.cpp index 351cc8b37..549c05847 100644 --- a/src/OpenGL/libEGL/main.cpp +++ b/src/OpenGL/libEGL/main.cpp @@ -320,50 +320,291 @@ void error(EGLint errorCode) } } +namespace egl +{ +EGLint GetError(void); +EGLDisplay GetDisplay(EGLNativeDisplayType display_id); +EGLBoolean Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor); +EGLBoolean Terminate(EGLDisplay dpy); +const char *QueryString(EGLDisplay dpy, EGLint name); +EGLBoolean GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); +EGLBoolean ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); +EGLBoolean GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value); +EGLSurface CreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list); +EGLSurface CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list); +EGLSurface CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list); +EGLBoolean DestroySurface(EGLDisplay dpy, EGLSurface surface); +EGLBoolean QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value); +EGLBoolean BindAPI(EGLenum api); +EGLenum QueryAPI(void); +EGLBoolean WaitClient(void); +EGLBoolean ReleaseThread(void); +EGLSurface CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list); +EGLBoolean SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value); +EGLBoolean BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); +EGLBoolean ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); +EGLBoolean SwapInterval(EGLDisplay dpy, EGLint interval); +EGLContext CreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list); +EGLBoolean DestroyContext(EGLDisplay dpy, EGLContext ctx); +EGLBoolean MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx); +EGLContext GetCurrentContext(void); +EGLSurface GetCurrentSurface(EGLint readdraw); +EGLDisplay GetCurrentDisplay(void); +EGLBoolean QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value); +EGLBoolean WaitGL(void); +EGLBoolean WaitNative(EGLint engine); +EGLBoolean SwapBuffers(EGLDisplay dpy, EGLSurface surface); +EGLBoolean CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target); +EGLImageKHR CreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); +EGLBoolean DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image); +EGLDisplay GetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list); +EGLSurface CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list); +EGLSurface CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list); +__eglMustCastToProperFunctionPointerType GetProcAddress(const char *procname); +} + +extern "C" +{ +EGLAPI EGLint EGLAPIENTRY eglGetError(void) +{ + return egl::GetError(); +} + +EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id) +{ + return egl::GetDisplay(display_id); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor) +{ + return egl::Initialize(dpy, major, minor); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy) +{ + return egl::Terminate(dpy); +} + +EGLAPI const char *EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name) +{ + return egl::QueryString(dpy, name); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config) +{ + return egl::GetConfigs(dpy, configs, config_size, num_config); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config) +{ + return egl::ChooseConfig(dpy, attrib_list, configs, config_size, num_config); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value) +{ + return egl::GetConfigAttrib(dpy, config, attribute, value); +} + +EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list) +{ + return egl::CreateWindowSurface(dpy, config, window, attrib_list); +} + +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list) +{ + return egl::CreatePbufferSurface(dpy, config, attrib_list); +} + +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list) +{ + return egl::CreatePixmapSurface(dpy, config, pixmap, attrib_list); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface) +{ + return egl::DestroySurface(dpy, surface); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value) +{ + return egl::QuerySurface(dpy, surface, attribute, value); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api) +{ + return egl::BindAPI(api); +} + +EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void) +{ + return egl::QueryAPI(); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void) +{ + return egl::WaitClient(); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void) +{ + return egl::ReleaseThread(); +} + +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list) +{ + return egl::CreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value) +{ + return egl::SurfaceAttrib(dpy, surface, attribute, value); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) +{ + return egl::BindTexImage(dpy, surface, buffer); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) +{ + return egl::ReleaseTexImage(dpy, surface, buffer); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval) +{ + return egl::SwapInterval(dpy, interval); +} + +EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list) +{ + return egl::CreateContext(dpy, config, share_context, attrib_list); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx) +{ + return egl::DestroyContext(dpy, ctx); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) +{ + return egl::MakeCurrent(dpy, draw, read, ctx); +} + +EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void) +{ + return egl::GetCurrentContext(); +} + +EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw) +{ + return egl::GetCurrentSurface(readdraw); +} + +EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void) +{ + return egl::GetCurrentDisplay(); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value) +{ + return egl::QueryContext(dpy, ctx, attribute, value); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void) +{ + return egl::WaitClient(); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine) +{ + return egl::WaitNative(engine); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) +{ + return egl::SwapBuffers(dpy, surface); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) +{ + return egl::CopyBuffers(dpy, surface, target); +} + +EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list) +{ + return egl::CreateImageKHR(dpy, ctx, target, buffer, attrib_list); +} + +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image) +{ + return egl::DestroyImageKHR(dpy, image); +} + +EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, const EGLint *attrib_list) +{ + return egl::GetPlatformDisplayEXT(platform, native_display, attrib_list); +} + +EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list) +{ + return egl::CreatePlatformWindowSurfaceEXT(dpy, config, native_window, attrib_list); +} + +EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list) +{ + return egl::CreatePlatformPixmapSurfaceEXT(dpy, config, native_pixmap, attrib_list); +} + +EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress(const char *procname) +{ + return egl::GetProcAddress(procname); +} +} + LibEGLexports::LibEGLexports() { - this->eglGetError = ::eglGetError; - this->eglGetDisplay = ::eglGetDisplay; - this->eglInitialize = ::eglInitialize; - this->eglTerminate = ::eglTerminate; - this->eglQueryString = ::eglQueryString; - this->eglGetConfigs = ::eglGetConfigs; - this->eglChooseConfig = ::eglChooseConfig; - this->eglGetConfigAttrib = ::eglGetConfigAttrib; - this->eglCreateWindowSurface = ::eglCreateWindowSurface; - this->eglCreatePbufferSurface = ::eglCreatePbufferSurface; - this->eglCreatePixmapSurface = ::eglCreatePixmapSurface; - this->eglDestroySurface = ::eglDestroySurface; - this->eglQuerySurface = ::eglQuerySurface; - this->eglBindAPI = ::eglBindAPI; - this->eglQueryAPI = ::eglQueryAPI; - this->eglWaitClient = ::eglWaitClient; - this->eglReleaseThread = ::eglReleaseThread; - this->eglCreatePbufferFromClientBuffer = ::eglCreatePbufferFromClientBuffer; - this->eglSurfaceAttrib = ::eglSurfaceAttrib; - this->eglBindTexImage = ::eglBindTexImage; - this->eglReleaseTexImage = ::eglReleaseTexImage; - this->eglSwapInterval = ::eglSwapInterval; - this->eglCreateContext = ::eglCreateContext; - this->eglDestroyContext = ::eglDestroyContext; - this->eglMakeCurrent = ::eglMakeCurrent; - this->eglGetCurrentContext = ::eglGetCurrentContext; - this->eglGetCurrentSurface = ::eglGetCurrentSurface; - this->eglGetCurrentDisplay = ::eglGetCurrentDisplay; - this->eglQueryContext = ::eglQueryContext; - this->eglWaitGL = ::eglWaitGL; - this->eglWaitNative = ::eglWaitNative; - this->eglSwapBuffers = ::eglSwapBuffers; - this->eglCopyBuffers = ::eglCopyBuffers; - this->eglCreateImageKHR = ::eglCreateImageKHR; - this->eglDestroyImageKHR = ::eglDestroyImageKHR; - this->eglGetProcAddress = ::eglGetProcAddress; + this->eglGetError = egl::GetError; + this->eglGetDisplay = egl::GetDisplay; + this->eglInitialize = egl::Initialize; + this->eglTerminate = egl::Terminate; + this->eglQueryString = egl::QueryString; + this->eglGetConfigs = egl::GetConfigs; + this->eglChooseConfig = egl::ChooseConfig; + this->eglGetConfigAttrib = egl::GetConfigAttrib; + this->eglCreateWindowSurface = egl::CreateWindowSurface; + this->eglCreatePbufferSurface = egl::CreatePbufferSurface; + this->eglCreatePixmapSurface = egl::CreatePixmapSurface; + this->eglDestroySurface = egl::DestroySurface; + this->eglQuerySurface = egl::QuerySurface; + this->eglBindAPI = egl::BindAPI; + this->eglQueryAPI = egl::QueryAPI; + this->eglWaitClient = egl::WaitClient; + this->eglReleaseThread = egl::ReleaseThread; + this->eglCreatePbufferFromClientBuffer = egl::CreatePbufferFromClientBuffer; + this->eglSurfaceAttrib = egl::SurfaceAttrib; + this->eglBindTexImage = egl::BindTexImage; + this->eglReleaseTexImage = egl::ReleaseTexImage; + this->eglSwapInterval = egl::SwapInterval; + this->eglCreateContext = egl::CreateContext; + this->eglDestroyContext = egl::DestroyContext; + this->eglMakeCurrent = egl::MakeCurrent; + this->eglGetCurrentContext = egl::GetCurrentContext; + this->eglGetCurrentSurface = egl::GetCurrentSurface; + this->eglGetCurrentDisplay = egl::GetCurrentDisplay; + this->eglQueryContext = egl::QueryContext; + this->eglWaitGL = egl::WaitGL; + this->eglWaitNative = egl::WaitNative; + this->eglSwapBuffers = egl::SwapBuffers; + this->eglCopyBuffers = egl::CopyBuffers; + this->eglCreateImageKHR = egl::CreateImageKHR; + this->eglDestroyImageKHR = egl::DestroyImageKHR; + this->eglGetProcAddress = egl::GetProcAddress; this->clientGetCurrentContext = egl::getCurrentContext; this->clientGetCurrentDisplay = egl::getCurrentDisplay; } -extern "C" LibEGLexports *libEGL_swiftshader() +extern "C" EGLAPI LibEGLexports *libEGL_swiftshader() { static LibEGLexports libEGL; return &libEGL; diff --git a/src/OpenGL/libGLES_CM/main.cpp b/src/OpenGL/libGLES_CM/main.cpp index 662ab0a55..5bf9377e8 100644 --- a/src/OpenGL/libGLES_CM/main.cpp +++ b/src/OpenGL/libGLES_CM/main.cpp @@ -156,7 +156,7 @@ LibGLES_CMexports::LibGLES_CMexports() this->glEGLImageTargetTexture2DOES = ::glEGLImageTargetTexture2DOES; } -extern "C" LibGLES_CMexports *libGLES_CM_swiftshader() +extern "C" GL_API LibGLES_CMexports *libGLES_CM_swiftshader() { static LibGLES_CMexports libGLES_CM; return &libGLES_CM; diff --git a/src/OpenGL/libGLESv2/main.cpp b/src/OpenGL/libGLESv2/main.cpp index 9094333c5..dd748d89e 100644 --- a/src/OpenGL/libGLESv2/main.cpp +++ b/src/OpenGL/libGLESv2/main.cpp @@ -165,7 +165,7 @@ LibGLESv2exports::LibGLESv2exports() this->createFrameBuffer = ::createFrameBuffer; } -extern "C" LibGLESv2exports *libGLESv2_swiftshader() +extern "C" GL_APICALL LibGLESv2exports *libGLESv2_swiftshader() { static LibGLESv2exports libGLESv2; return &libGLESv2; -- 2.11.0