diff options
Diffstat (limited to 'src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch')
-rw-r--r-- | src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch | 168 |
1 files changed, 75 insertions, 93 deletions
diff --git a/src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch b/src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch index 9133ac73ae..9de8c54fb6 100644 --- a/src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch +++ b/src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch @@ -1,35 +1,34 @@ -From cbe9afef7cd467c41353e8a41544d86807be7dd2 Mon Sep 17 00:00:00 2001 +From f1eeb288ae18f3015f435fc2df25ec1eb0f15e1a Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@digia.com> -Date: Thu, 14 Feb 2013 09:40:30 +0100 -Subject: [PATCH] Make it possible to link ANGLE statically for single-thread - use. +Date: Sat, 14 Sep 2013 11:07:17 +0300 +Subject: [PATCH] Make it possible to link ANGLE statically for + single-thread use. Fix exports and provide static instances of thread-local data depending on QT_OPENGL_ES_2_ANGLE_STATIC. Change-Id: Ifab25a820adf5953bb3b09036de53dbf7f1a7fd5 --- - src/3rdparty/angle/include/KHR/khrplatform.h | 3 +- - src/3rdparty/angle/src/libEGL/main.cpp | 58 ++++++++++++++-------------- - src/3rdparty/angle/src/libGLESv2/main.cpp | 32 ++++++++++----- - 3 files changed, 53 insertions(+), 40 deletions(-) + src/3rdparty/angle/include/KHR/khrplatform.h | 2 +- + src/3rdparty/angle/src/libEGL/main.cpp | 35 ++++++++++++++++++++-------- + src/3rdparty/angle/src/libGLESv2/main.cpp | 21 ++++++++++++++--- + 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/src/3rdparty/angle/include/KHR/khrplatform.h b/src/3rdparty/angle/include/KHR/khrplatform.h -index 56c676c..18a104e 100644 +index 8ec0d19..541bfa9 100644 --- a/src/3rdparty/angle/include/KHR/khrplatform.h +++ b/src/3rdparty/angle/include/KHR/khrplatform.h -@@ -97,7 +97,8 @@ +@@ -97,7 +97,7 @@ *------------------------------------------------------------------------- * This precedes the return type of the function in the function prototype. */ -#if defined(_WIN32) && !defined(__SCITECH_SNAP__) -+ +#if defined(_WIN32) && !defined(__SCITECH_SNAP__) && !defined(QT_OPENGL_ES_2_ANGLE_STATIC) # define KHRONOS_APICALL __declspec(dllimport) #elif defined (__SYMBIAN32__) # define KHRONOS_APICALL IMPORT_C diff --git a/src/3rdparty/angle/src/libEGL/main.cpp b/src/3rdparty/angle/src/libEGL/main.cpp -index dc24c4f..614bcf6 100644 +index 424ec3f..7dea5fc 100644 --- a/src/3rdparty/angle/src/libEGL/main.cpp +++ b/src/3rdparty/angle/src/libEGL/main.cpp @@ -10,6 +10,8 @@ @@ -41,178 +40,161 @@ index dc24c4f..614bcf6 100644 static DWORD currentTLS = TLS_OUT_OF_INDEXES; extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) -@@ -86,76 +88,72 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved +@@ -86,74 +88,87 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved return TRUE; } -+static inline egl::Current *current() -+{ -+ return (egl::Current*)TlsGetValue(currentTLS); -+} ++#endif // !QT_OPENGL_ES_2_ANGLE_STATIC + -+#else // !QT_OPENGL_ES_2_ANGLE_STATIC -+ -+static egl::Current *current() + namespace egl + { ++Current *getCurrent() +{ ++#ifndef QT_OPENGL_ES_2_ANGLE_STATIC ++ return (Current*)TlsGetValue(currentTLS); ++#else + // No precautions for thread safety taken as ANGLE is used single-threaded in Qt. -+ static egl::Current curr = { EGL_SUCCESS, EGL_OPENGL_ES_API, EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE }; ++ static Current curr = { EGL_SUCCESS, EGL_OPENGL_ES_API, EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE }; + return &curr; ++#endif +} + -+#endif // QT_OPENGL_ES_2_ANGLE_STATIC -+ - namespace egl - { void setCurrentError(EGLint error) { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- current->error = error; -+ current()->error = error; ++ Current *current = getCurrent(); + + current->error = error; } EGLint getCurrentError() { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- return current->error; -+ return current()->error; ++ Current *current = getCurrent(); + + return current->error; } void setCurrentAPI(EGLenum API) { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- current->API = API; -+ current()->API = API; ++ Current *current = getCurrent(); + + current->API = API; } EGLenum getCurrentAPI() { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- return current->API; -+ return current()->API; ++ Current *current = getCurrent(); + + return current->API; } void setCurrentDisplay(EGLDisplay dpy) { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- current->display = dpy; -+ current()->display = dpy; ++ Current *current = getCurrent(); + + current->display = dpy; } EGLDisplay getCurrentDisplay() { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- return current->display; -+ return current()->display; ++ Current *current = getCurrent(); + + return current->display; } void setCurrentDrawSurface(EGLSurface surface) { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- current->drawSurface = surface; -+ current()->drawSurface = surface; ++ Current *current = getCurrent(); + + current->drawSurface = surface; } EGLSurface getCurrentDrawSurface() { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- return current->drawSurface; -+ return current()->drawSurface; ++ Current *current = getCurrent(); + + return current->drawSurface; } void setCurrentReadSurface(EGLSurface surface) { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- current->readSurface = surface; -+ current()->readSurface = surface; ++ Current *current = getCurrent(); + + current->readSurface = surface; } EGLSurface getCurrentReadSurface() { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- return current->readSurface; -+ return current()->readSurface; - } - } ++ Current *current = getCurrent(); + return current->readSurface; + } diff --git a/src/3rdparty/angle/src/libGLESv2/main.cpp b/src/3rdparty/angle/src/libGLESv2/main.cpp -index 6e678c2..3853e41 100644 +index 6d7a241..730a6ac 100644 --- a/src/3rdparty/angle/src/libGLESv2/main.cpp +++ b/src/3rdparty/angle/src/libGLESv2/main.cpp -@@ -14,6 +14,8 @@ +@@ -11,6 +11,8 @@ - #include "libGLESv2/Framebuffer.h" + #include "libGLESv2/Context.h" +#ifndef QT_OPENGL_ES_2_ANGLE_STATIC + static DWORD currentTLS = TLS_OUT_OF_INDEXES; extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) -@@ -72,14 +74,30 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved +@@ -69,11 +71,24 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved return TRUE; } -+static gl::Current *current() -+{ -+ return (gl::Current*)TlsGetValue(currentTLS); -+} -+ -+#else // !QT_OPENGL_ES_2_ANGLE_STATIC ++#endif // !QT_OPENGL_ES_2_ANGLE_STATIC + -+static inline gl::Current *current() + namespace gl + { ++Current *getCurrent() +{ ++#ifndef QT_OPENGL_ES_2_ANGLE_STATIC ++ return (Current*)TlsGetValue(currentTLS); ++#else + // No precautions for thread safety taken as ANGLE is used single-threaded in Qt. + static gl::Current curr = { 0, 0 }; + return &curr; ++#endif +} + -+#endif // QT_OPENGL_ES_2_ANGLE_STATIC -+ - namespace gl - { void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface) { - Current *current = (Current*)TlsGetValue(currentTLS); -+ Current *curr = current(); - -- current->context = context; -- current->display = display; -+ curr->context = context; -+ curr->display = display; ++ Current *current = getCurrent(); - if (context && display && surface) - { -@@ -89,9 +107,7 @@ void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface) + current->context = context; + current->display = display; +@@ -86,7 +101,7 @@ void makeCurrent(Context *context, egl::Display *display, egl::Surface *surface) Context *getContext() { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- return current->context; -+ return current()->context; - } ++ Current *current = getCurrent(); - Context *getNonLostContext() -@@ -115,9 +131,7 @@ Context *getNonLostContext() + return current->context; + } +@@ -112,7 +127,7 @@ Context *getNonLostContext() egl::Display *getDisplay() { - Current *current = (Current*)TlsGetValue(currentTLS); -- -- return current->display; -+ return current()->display; - } ++ Current *current = getCurrent(); - IDirect3DDevice9 *getDevice() + return current->display; + } -- -1.8.0.msysgit.0 +1.8.1.msysgit.1 |