Commit ea6a98ba by Jason Macnak

Move egl locking code from main.cpp to libEGL.cpp

The next change will update the locking around eglSwapBuffers. Move all the locking into libEGL.cpp to avoid duplicating getDisplayLock(). Bug: b/135742693 Test: built locally Test: presubmit Test: cts -m CtsMediaTestCases -t android.media.cts.HeifWriterTest#testInputSurface_Grid_Handler Change-Id: I1ca863b4902d1dc4e456700ac96aecc3e61424ba Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/37768 Presubmit-Ready: Jason Macnak <natsu@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarChris Forbes <chrisforbes@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Tested-by: 's avatarJason Macnak <natsu@google.com>
parent fda994c6
...@@ -37,6 +37,11 @@ namespace egl ...@@ -37,6 +37,11 @@ namespace egl
{ {
namespace namespace
{ {
sw::RecursiveLock *getDisplayLock(egl::Display *display) {
if (!display) return nullptr;
return display->getLock();
}
bool validateDisplay(egl::Display *display) bool validateDisplay(egl::Display *display)
{ {
if(display == EGL_NO_DISPLAY) if(display == EGL_NO_DISPLAY)
...@@ -167,6 +172,8 @@ EGLBoolean EGLAPIENTRY Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor) ...@@ -167,6 +172,8 @@ EGLBoolean EGLAPIENTRY Initialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!display) if(!display)
{ {
return error(EGL_BAD_DISPLAY, EGL_FALSE); return error(EGL_BAD_DISPLAY, EGL_FALSE);
...@@ -194,6 +201,8 @@ EGLBoolean EGLAPIENTRY Terminate(EGLDisplay dpy) ...@@ -194,6 +201,8 @@ EGLBoolean EGLAPIENTRY Terminate(EGLDisplay dpy)
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
display->terminate(); display->terminate();
return success(EGL_TRUE); return success(EGL_TRUE);
...@@ -219,6 +228,8 @@ const char *EGLAPIENTRY QueryString(EGLDisplay dpy, EGLint name) ...@@ -219,6 +228,8 @@ const char *EGLAPIENTRY QueryString(EGLDisplay dpy, EGLint name)
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateDisplay(display)) if(!validateDisplay(display))
{ {
return nullptr; return nullptr;
...@@ -257,6 +268,8 @@ EGLBoolean EGLAPIENTRY GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint con ...@@ -257,6 +268,8 @@ EGLBoolean EGLAPIENTRY GetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint con
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateDisplay(display)) if(!validateDisplay(display))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -285,6 +298,8 @@ EGLBoolean EGLAPIENTRY ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, E ...@@ -285,6 +298,8 @@ EGLBoolean EGLAPIENTRY ChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, E
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateDisplay(display)) if(!validateDisplay(display))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -317,6 +332,8 @@ EGLBoolean EGLAPIENTRY GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint ...@@ -317,6 +332,8 @@ EGLBoolean EGLAPIENTRY GetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateConfig(display, config)) if(!validateConfig(display, config))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -337,6 +354,8 @@ EGLSurface EGLAPIENTRY CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig con ...@@ -337,6 +354,8 @@ EGLSurface EGLAPIENTRY CreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig con
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateConfig(display, config)) if(!validateConfig(display, config))
{ {
return EGL_NO_SURFACE; return EGL_NO_SURFACE;
...@@ -375,6 +394,8 @@ EGLSurface EGLAPIENTRY CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, co ...@@ -375,6 +394,8 @@ EGLSurface EGLAPIENTRY CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, co
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateConfig(display, config)) if(!validateConfig(display, config))
{ {
return EGL_NO_SURFACE; return EGL_NO_SURFACE;
...@@ -390,6 +411,8 @@ EGLSurface EGLAPIENTRY CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig con ...@@ -390,6 +411,8 @@ EGLSurface EGLAPIENTRY CreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig con
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateConfig(display, config)) if(!validateConfig(display, config))
{ {
return EGL_NO_SURFACE; return EGL_NO_SURFACE;
...@@ -425,6 +448,8 @@ EGLBoolean EGLAPIENTRY DestroySurface(EGLDisplay dpy, EGLSurface surface) ...@@ -425,6 +448,8 @@ EGLBoolean EGLAPIENTRY DestroySurface(EGLDisplay dpy, EGLSurface surface)
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Surface *eglSurface = static_cast<egl::Surface*>(surface); egl::Surface *eglSurface = static_cast<egl::Surface*>(surface);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateSurface(display, eglSurface)) if(!validateSurface(display, eglSurface))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -448,6 +473,8 @@ EGLBoolean EGLAPIENTRY QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint a ...@@ -448,6 +473,8 @@ EGLBoolean EGLAPIENTRY QuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint a
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Surface *eglSurface = (egl::Surface*)surface; egl::Surface *eglSurface = (egl::Surface*)surface;
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateSurface(display, eglSurface)) if(!validateSurface(display, eglSurface))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -595,6 +622,8 @@ EGLSurface EGLAPIENTRY CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buf ...@@ -595,6 +622,8 @@ EGLSurface EGLAPIENTRY CreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buf
{ {
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateConfig(display, config)) if(!validateConfig(display, config))
{ {
return EGL_NO_SURFACE; return EGL_NO_SURFACE;
...@@ -618,6 +647,8 @@ EGLBoolean EGLAPIENTRY SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint ...@@ -618,6 +647,8 @@ EGLBoolean EGLAPIENTRY SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Surface *eglSurface = static_cast<egl::Surface*>(surface); egl::Surface *eglSurface = static_cast<egl::Surface*>(surface);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateSurface(display, eglSurface)) if(!validateSurface(display, eglSurface))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -674,6 +705,8 @@ EGLBoolean EGLAPIENTRY BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint b ...@@ -674,6 +705,8 @@ EGLBoolean EGLAPIENTRY BindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint b
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Surface *eglSurface = static_cast<egl::Surface*>(surface); egl::Surface *eglSurface = static_cast<egl::Surface*>(surface);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateSurface(display, eglSurface)) if(!validateSurface(display, eglSurface))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -716,6 +749,8 @@ EGLBoolean EGLAPIENTRY ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLin ...@@ -716,6 +749,8 @@ EGLBoolean EGLAPIENTRY ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLin
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Surface *eglSurface = static_cast<egl::Surface*>(surface); egl::Surface *eglSurface = static_cast<egl::Surface*>(surface);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateSurface(display, eglSurface)) if(!validateSurface(display, eglSurface))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -753,6 +788,8 @@ EGLBoolean EGLAPIENTRY SwapInterval(EGLDisplay dpy, EGLint interval) ...@@ -753,6 +788,8 @@ EGLBoolean EGLAPIENTRY SwapInterval(EGLDisplay dpy, EGLint interval)
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Context *context = egl::getCurrentContext(); egl::Context *context = egl::getCurrentContext();
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateContext(display, context)) if(!validateContext(display, context))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -860,6 +897,8 @@ EGLContext EGLAPIENTRY CreateContext(EGLDisplay dpy, EGLConfig config, EGLContex ...@@ -860,6 +897,8 @@ EGLContext EGLAPIENTRY CreateContext(EGLDisplay dpy, EGLConfig config, EGLContex
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Context *shareContext = static_cast<egl::Context*>(share_context); egl::Context *shareContext = static_cast<egl::Context*>(share_context);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateConfig(display, config)) if(!validateConfig(display, config))
{ {
return EGL_NO_CONTEXT; return EGL_NO_CONTEXT;
...@@ -883,6 +922,8 @@ EGLBoolean EGLAPIENTRY DestroyContext(EGLDisplay dpy, EGLContext ctx) ...@@ -883,6 +922,8 @@ EGLBoolean EGLAPIENTRY DestroyContext(EGLDisplay dpy, EGLContext ctx)
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Context *context = static_cast<egl::Context*>(ctx); egl::Context *context = static_cast<egl::Context*>(ctx);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateContext(display, context)) if(!validateContext(display, context))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -908,6 +949,8 @@ EGLBoolean EGLAPIENTRY MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface r ...@@ -908,6 +949,8 @@ EGLBoolean EGLAPIENTRY MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface r
egl::Surface *drawSurface = static_cast<egl::Surface*>(draw); egl::Surface *drawSurface = static_cast<egl::Surface*>(draw);
egl::Surface *readSurface = static_cast<egl::Surface*>(read); egl::Surface *readSurface = static_cast<egl::Surface*>(read);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(ctx != EGL_NO_CONTEXT || draw != EGL_NO_SURFACE || read != EGL_NO_SURFACE) if(ctx != EGL_NO_CONTEXT || draw != EGL_NO_SURFACE || read != EGL_NO_SURFACE)
{ {
if(!validateDisplay(display)) if(!validateDisplay(display))
...@@ -1012,6 +1055,8 @@ EGLBoolean EGLAPIENTRY QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attri ...@@ -1012,6 +1055,8 @@ EGLBoolean EGLAPIENTRY QueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attri
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Context *context = static_cast<egl::Context*>(ctx); egl::Context *context = static_cast<egl::Context*>(ctx);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateContext(display, context)) if(!validateContext(display, context))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -1091,6 +1136,8 @@ EGLBoolean EGLAPIENTRY SwapBuffers(EGLDisplay dpy, EGLSurface surface) ...@@ -1091,6 +1136,8 @@ EGLBoolean EGLAPIENTRY SwapBuffers(EGLDisplay dpy, EGLSurface surface)
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Surface *eglSurface = (egl::Surface*)surface; egl::Surface *eglSurface = (egl::Surface*)surface;
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateSurface(display, eglSurface)) if(!validateSurface(display, eglSurface))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -1113,6 +1160,8 @@ EGLBoolean EGLAPIENTRY CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNative ...@@ -1113,6 +1160,8 @@ EGLBoolean EGLAPIENTRY CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNative
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Surface *eglSurface = static_cast<egl::Surface*>(surface); egl::Surface *eglSurface = static_cast<egl::Surface*>(surface);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateSurface(display, eglSurface)) if(!validateSurface(display, eglSurface))
{ {
return EGL_FALSE; return EGL_FALSE;
...@@ -1130,6 +1179,8 @@ EGLImage EGLAPIENTRY CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, ...@@ -1130,6 +1179,8 @@ EGLImage EGLAPIENTRY CreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target,
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
egl::Context *context = static_cast<egl::Context*>(ctx); egl::Context *context = static_cast<egl::Context*>(ctx);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateDisplay(display)) if(!validateDisplay(display))
{ {
return error(EGL_BAD_DISPLAY, EGL_NO_IMAGE_KHR); return error(EGL_BAD_DISPLAY, EGL_NO_IMAGE_KHR);
...@@ -1226,6 +1277,8 @@ EGLBoolean EGLAPIENTRY DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image) ...@@ -1226,6 +1277,8 @@ EGLBoolean EGLAPIENTRY DestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateDisplay(display)) if(!validateDisplay(display))
{ {
return error(EGL_BAD_DISPLAY, EGL_FALSE); return error(EGL_BAD_DISPLAY, EGL_FALSE);
...@@ -1308,6 +1361,8 @@ EGLSync EGLAPIENTRY CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *at ...@@ -1308,6 +1361,8 @@ EGLSync EGLAPIENTRY CreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *at
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateDisplay(display)) if(!validateDisplay(display))
{ {
return error(EGL_BAD_DISPLAY, EGL_NO_SYNC_KHR); return error(EGL_BAD_DISPLAY, EGL_NO_SYNC_KHR);
...@@ -1350,6 +1405,8 @@ EGLBoolean EGLAPIENTRY DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync) ...@@ -1350,6 +1405,8 @@ EGLBoolean EGLAPIENTRY DestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
FenceSync *eglSync = static_cast<FenceSync*>(sync); FenceSync *eglSync = static_cast<FenceSync*>(sync);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateDisplay(display)) if(!validateDisplay(display))
{ {
return error(EGL_BAD_DISPLAY, EGL_FALSE); return error(EGL_BAD_DISPLAY, EGL_FALSE);
...@@ -1372,6 +1429,8 @@ EGLint EGLAPIENTRY ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint fla ...@@ -1372,6 +1429,8 @@ EGLint EGLAPIENTRY ClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint fla
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
FenceSync *eglSync = static_cast<FenceSync*>(sync); FenceSync *eglSync = static_cast<FenceSync*>(sync);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateDisplay(display)) if(!validateDisplay(display))
{ {
return error(EGL_BAD_DISPLAY, EGL_FALSE); return error(EGL_BAD_DISPLAY, EGL_FALSE);
...@@ -1400,6 +1459,8 @@ EGLBoolean EGLAPIENTRY GetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint att ...@@ -1400,6 +1459,8 @@ EGLBoolean EGLAPIENTRY GetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint att
egl::Display *display = egl::Display::get(dpy); egl::Display *display = egl::Display::get(dpy);
FenceSync *eglSync = static_cast<FenceSync*>(sync); FenceSync *eglSync = static_cast<FenceSync*>(sync);
RecursiveLockGuard lock(egl::getDisplayLock(display));
if(!validateDisplay(display)) if(!validateDisplay(display))
{ {
return error(EGL_BAD_DISPLAY, EGL_FALSE); return error(EGL_BAD_DISPLAY, EGL_FALSE);
......
...@@ -340,12 +340,6 @@ void error(EGLint errorCode) ...@@ -340,12 +340,6 @@ void error(EGLint errorCode)
} }
} }
sw::RecursiveLock *getDisplayLock(EGLDisplay dpy)
{
auto display = Display::get(dpy);
if (!display) return nullptr;
return display->getLock();
}
} }
namespace egl namespace egl
...@@ -415,67 +409,56 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id) ...@@ -415,67 +409,56 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id)
EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor) EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::Initialize(dpy, major, minor); return egl::Initialize(dpy, major, minor);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy) EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::Terminate(dpy); return egl::Terminate(dpy);
} }
EGLAPI const char *EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name) EGLAPI const char *EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::QueryString(dpy, name); return egl::QueryString(dpy, name);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config) EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::GetConfigs(dpy, configs, config_size, 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) EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ChooseConfig(dpy, attrib_list, configs, config_size, 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) EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::GetConfigAttrib(dpy, config, attribute, value); return egl::GetConfigAttrib(dpy, config, attribute, value);
} }
EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list) EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType window, const EGLint *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateWindowSurface(dpy, config, window, attrib_list); return egl::CreateWindowSurface(dpy, config, window, attrib_list);
} }
EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list) EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePbufferSurface(dpy, config, attrib_list); return egl::CreatePbufferSurface(dpy, config, attrib_list);
} }
EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list) EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePixmapSurface(dpy, config, pixmap, attrib_list); return egl::CreatePixmapSurface(dpy, config, pixmap, attrib_list);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface) EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroySurface(dpy, surface); return egl::DestroySurface(dpy, surface);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value) EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::QuerySurface(dpy, surface, attribute, value); return egl::QuerySurface(dpy, surface, attribute, value);
} }
...@@ -501,49 +484,41 @@ EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void) ...@@ -501,49 +484,41 @@ EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void)
EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list) EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list); return egl::CreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value) EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::SurfaceAttrib(dpy, surface, attribute, value); return egl::SurfaceAttrib(dpy, surface, attribute, value);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::BindTexImage(dpy, surface, buffer); return egl::BindTexImage(dpy, surface, buffer);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ReleaseTexImage(dpy, surface, buffer); return egl::ReleaseTexImage(dpy, surface, buffer);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval) EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::SwapInterval(dpy, interval); return egl::SwapInterval(dpy, interval);
} }
EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list) EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateContext(dpy, config, share_context, attrib_list); return egl::CreateContext(dpy, config, share_context, attrib_list);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx) EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroyContext(dpy, ctx); return egl::DestroyContext(dpy, ctx);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::MakeCurrent(dpy, draw, read, ctx); return egl::MakeCurrent(dpy, draw, read, ctx);
} }
...@@ -564,7 +539,6 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void) ...@@ -564,7 +539,6 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void)
EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value) EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::QueryContext(dpy, ctx, attribute, value); return egl::QueryContext(dpy, ctx, attribute, value);
} }
...@@ -580,37 +554,31 @@ EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine) ...@@ -580,37 +554,31 @@ EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine)
EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface) EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::SwapBuffers(dpy, surface); return egl::SwapBuffers(dpy, surface);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target) EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CopyBuffers(dpy, surface, target); return egl::CopyBuffers(dpy, surface, target);
} }
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list) EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateImageKHR(dpy, ctx, target, buffer, attrib_list); return egl::CreateImageKHR(dpy, ctx, target, buffer, attrib_list);
} }
EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list) EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImage(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateImage(dpy, ctx, target, buffer, attrib_list); return egl::CreateImage(dpy, ctx, target, buffer, attrib_list);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image) EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroyImageKHR(dpy, image); return egl::DestroyImageKHR(dpy, image);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage(EGLDisplay dpy, EGLImageKHR image) EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage(EGLDisplay dpy, EGLImageKHR image)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroyImageKHR(dpy, image); return egl::DestroyImageKHR(dpy, image);
} }
...@@ -626,85 +594,71 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay(EGLenum platform, void *nati ...@@ -626,85 +594,71 @@ EGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay(EGLenum platform, void *nati
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list) EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePlatformWindowSurfaceEXT(dpy, config, native_window, attrib_list); return egl::CreatePlatformWindowSurfaceEXT(dpy, config, native_window, attrib_list);
} }
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list) EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface(EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePlatformWindowSurface(dpy, config, native_window, attrib_list); return egl::CreatePlatformWindowSurface(dpy, config, native_window, attrib_list);
} }
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list) EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePlatformPixmapSurfaceEXT(dpy, config, native_pixmap, attrib_list); return egl::CreatePlatformPixmapSurfaceEXT(dpy, config, native_pixmap, attrib_list);
} }
EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list) EGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface(EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreatePlatformPixmapSurface(dpy, config, native_pixmap, attrib_list); return egl::CreatePlatformPixmapSurface(dpy, config, native_pixmap, attrib_list);
} }
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list) EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateSyncKHR(dpy, type, attrib_list); return egl::CreateSyncKHR(dpy, type, attrib_list);
} }
EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list) EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::CreateSync(dpy, type, attrib_list); return egl::CreateSync(dpy, type, attrib_list);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync) EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroySyncKHR(dpy, sync); return egl::DestroySyncKHR(dpy, sync);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync(EGLDisplay dpy, EGLSyncKHR sync) EGLAPI EGLBoolean EGLAPIENTRY eglDestroySync(EGLDisplay dpy, EGLSyncKHR sync)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::DestroySyncKHR(dpy, sync); return egl::DestroySyncKHR(dpy, sync);
} }
EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout) EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ClientWaitSyncKHR(dpy, sync, flags, timeout); return egl::ClientWaitSyncKHR(dpy, sync, flags, timeout);
} }
EGLAPI EGLint EGLAPIENTRY eglClientWaitSync(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout) EGLAPI EGLint EGLAPIENTRY eglClientWaitSync(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ClientWaitSyncKHR(dpy, sync, flags, timeout); return egl::ClientWaitSyncKHR(dpy, sync, flags, timeout);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value) EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::GetSyncAttribKHR(dpy, sync, attribute, value); return egl::GetSyncAttribKHR(dpy, sync, attribute, value);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLAttrib *value) EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLAttrib *value)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::GetSyncAttrib(dpy, sync, attribute, value); return egl::GetSyncAttrib(dpy, sync, attribute, value);
} }
EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags) EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ClientWaitSyncKHR(dpy, sync, flags, EGL_FOREVER_KHR); return egl::ClientWaitSyncKHR(dpy, sync, flags, EGL_FOREVER_KHR);
} }
EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags) EGLAPI EGLBoolean EGLAPIENTRY eglWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags)
{ {
RecursiveLockGuard lock(egl::getDisplayLock(dpy));
return egl::ClientWaitSyncKHR(dpy, sync, flags, EGL_FOREVER_KHR); return egl::ClientWaitSyncKHR(dpy, sync, flags, EGL_FOREVER_KHR);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment