summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorboliu <boliu@chromium.org>2014-10-21 16:46:08 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-21 23:46:24 +0000
commitbf634aa33aa21ce25ef680bca6305b9ad64acfbc (patch)
treeb75256ada3dacfd2c3a942e10b42f5fdb98cc25e
parent013109b88a7996ab9dce709aa02a34833084e44c (diff)
downloadchromium_src-bf634aa33aa21ce25ef680bca6305b9ad64acfbc.zip
chromium_src-bf634aa33aa21ce25ef680bca6305b9ad64acfbc.tar.gz
chromium_src-bf634aa33aa21ce25ef680bca6305b9ad64acfbc.tar.bz2
gpu: Use egl client wait if server wait not available
Check for EGL_KHR_wait_sync extension before calling eglWaitSyncKHR. If extension not present, fallback to EGL_KHR_fence_sync and eglClientWaitSyncKHR. BUG= Review URL: https://codereview.chromium.org/670843002 Cr-Commit-Position: refs/heads/master@{#300569}
-rwxr-xr-xui/gl/generate_bindings.py2
-rw-r--r--ui/gl/gl_fence_egl.cc4
2 files changed, 5 insertions, 1 deletions
diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py
index b135cac..5a73056 100755
--- a/ui/gl/generate_bindings.py
+++ b/ui/gl/generate_bindings.py
@@ -1079,7 +1079,7 @@ EGL_FUNCTIONS = [
'EGLuint64CHROMIUM* sbc', },
{ 'return_type': 'EGLint',
'versions': [{ 'name': 'eglWaitSyncKHR',
- 'extensions': ['EGL_KHR_fence_sync'] }],
+ 'extensions': ['EGL_KHR_fence_sync', 'EGL_KHR_wait_sync'] }],
'arguments': 'EGLDisplay dpy, EGLSyncKHR sync, EGLint flags' }
]
diff --git a/ui/gl/gl_fence_egl.cc b/ui/gl/gl_fence_egl.cc
index ebc33bf..2ff18fc 100644
--- a/ui/gl/gl_fence_egl.cc
+++ b/ui/gl/gl_fence_egl.cc
@@ -42,6 +42,10 @@ void GLFenceEGL::ClientWait() {
}
void GLFenceEGL::ServerWait() {
+ if (!gfx::g_driver_egl.ext.b_EGL_KHR_wait_sync) {
+ ClientWait();
+ return;
+ }
if (!flush_event_.get() || flush_event_->IsSignaled()) {
EGLint flags = 0;
eglWaitSyncKHR(display_, sync_, flags);