summaryrefslogtreecommitdiffstats
path: root/src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch
diff options
context:
space:
mode:
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.patch168
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