diff options
Diffstat (limited to 'src/3rdparty/angle/src/libEGL')
-rw-r--r-- | src/3rdparty/angle/src/libEGL/Display.cpp | 5 | ||||
-rw-r--r-- | src/3rdparty/angle/src/libEGL/libEGL.cpp | 12 | ||||
-rw-r--r-- | src/3rdparty/angle/src/libEGL/main.cpp | 4 | ||||
-rw-r--r-- | src/3rdparty/angle/src/libEGL/main.h | 2 |
4 files changed, 17 insertions, 6 deletions
diff --git a/src/3rdparty/angle/src/libEGL/Display.cpp b/src/3rdparty/angle/src/libEGL/Display.cpp index 7cd83c3db4..5a50e4baf5 100644 --- a/src/3rdparty/angle/src/libEGL/Display.cpp +++ b/src/3rdparty/angle/src/libEGL/Display.cpp @@ -561,8 +561,10 @@ void Display::initDisplayExtensionString() extensions.push_back("EGL_NV_post_sub_buffer"); } +#if defined (ANGLE_TEST_CONFIG) // TODO: complete support for the EGL_KHR_create_context extension - //extensions.push_back("EGL_KHR_create_context"); + extensions.push_back("EGL_KHR_create_context"); +#endif std::ostringstream stream; std::copy(extensions.begin(), extensions.end(), std::ostream_iterator<std::string>(stream, " ")); @@ -606,6 +608,7 @@ void Display::initVendorString() { char adapterLuidString[64]; snprintf(adapterLuidString, sizeof(adapterLuidString), " (adapter LUID: %08x%08x)", adapterLuid.HighPart, adapterLuid.LowPart); + mVendorString += adapterLuidString; } } diff --git a/src/3rdparty/angle/src/libEGL/libEGL.cpp b/src/3rdparty/angle/src/libEGL/libEGL.cpp index c236d52a4f..c2e0fd6d3d 100644 --- a/src/3rdparty/angle/src/libEGL/libEGL.cpp +++ b/src/3rdparty/angle/src/libEGL/libEGL.cpp @@ -6,6 +6,9 @@ // libEGL.cpp: Implements the exported EGL functions. +#undef EGLAPI +#define EGLAPI + #include <exception> #include "common/debug.h" @@ -825,12 +828,19 @@ EGLBoolean __stdcall eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface egl::Display *display = static_cast<egl::Display*>(dpy); gl::Context *context = static_cast<gl::Context*>(ctx); + bool noContext = (ctx == EGL_NO_CONTEXT); + bool noSurface = (draw == EGL_NO_SURFACE || read == EGL_NO_SURFACE); + if (noContext != noSurface) + { + return egl::error(EGL_BAD_MATCH, EGL_FALSE); + } + if (ctx != EGL_NO_CONTEXT && !validateContext(display, context)) { return EGL_FALSE; } - if (dpy != EGL_NO_DISPLAY) + if (dpy != EGL_NO_DISPLAY && display->isInitialized()) { rx::Renderer *renderer = display->getRenderer(); if (renderer->testDeviceLost(true)) diff --git a/src/3rdparty/angle/src/libEGL/main.cpp b/src/3rdparty/angle/src/libEGL/main.cpp index 5788af7827..e74737eaba 100644 --- a/src/3rdparty/angle/src/libEGL/main.cpp +++ b/src/3rdparty/angle/src/libEGL/main.cpp @@ -105,15 +105,15 @@ extern "C" BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved break; case DLL_THREAD_DETACH: { +#if !defined(ANGLE_PLATFORM_WINRT) egl::DeallocateCurrent(); +#endif } break; case DLL_PROCESS_DETACH: { -#if !defined(ANGLE_PLATFORM_WINRT) egl::DeallocateCurrent(); DestroyTLSIndex(currentTLS); -#endif } break; default: diff --git a/src/3rdparty/angle/src/libEGL/main.h b/src/3rdparty/angle/src/libEGL/main.h index 6030fb6ad9..07f5b9e675 100644 --- a/src/3rdparty/angle/src/libEGL/main.h +++ b/src/3rdparty/angle/src/libEGL/main.h @@ -9,8 +9,6 @@ #ifndef LIBEGL_MAIN_H_ #define LIBEGL_MAIN_H_ -#undef EGLAPI -#define EGLAPI #include <EGL/egl.h> #include <EGL/eglext.h> |