Commit 7fdf6707 authored by Bo Liu's avatar Bo Liu Committed by Android (Google) Code Review
Browse files

Merge changes Ib9856a2c,I8d6b41f5,Ia3dad04d into m39

* changes:
  Update volantis workaround to cover L mr0.1
  Cherry-pick: Workaround NVidia eglWaitSyncKHR bug
  Cherry-pick: gpu: Use egl client wait if server wait not available
parents 5f831b54 b9856a2c
......@@ -812,6 +812,9 @@ void FeatureInfo::InitializeFeatures() {
if (workarounds_.disable_egl_khr_fence_sync) {
gfx::g_driver_egl.ext.b_EGL_KHR_fence_sync = false;
}
if (workarounds_.disable_egl_khr_wait_sync) {
gfx::g_driver_egl.ext.b_EGL_KHR_wait_sync = false;
}
#endif
if (workarounds_.disable_arb_sync)
gfx::g_driver_gl.ext.b_GL_ARB_sync = false;
......
......@@ -19,7 +19,7 @@ const char kGpuDriverBugListJson[] = LONG_STRING_CONST(
{
"name": "gpu driver bug list",
// Please update the version number whenever you change this file.
"version": "7.7",
"version": "7.8",
"entries": [
{
"id": 1,
......@@ -1057,6 +1057,27 @@ LONG_STRING_CONST(
"features": [
"disable_async_readpixels"
]
},
{
"id": 94,
"description": "Disable EGL_KHR_wait_sync on NVIDIA with GLES 3.1",
"cr_bugs": [433057],
"os": {
"type": "android",
"version": {
"op": "<=",
"value": "5.0.1"
}
},
"gl_vendor": "NVIDIA.*",
"gl_type": "gles",
"gl_version": {
"op": "=",
"value": "3.1"
},
"features": [
"disable_egl_khr_wait_sync"
]
}
]
}
......
......@@ -28,6 +28,8 @@
disable_depth_texture) \
GPU_OP(DISABLE_EGL_KHR_FENCE_SYNC, \
disable_egl_khr_fence_sync) \
GPU_OP(DISABLE_EGL_KHR_WAIT_SYNC, \
disable_egl_khr_wait_sync) \
GPU_OP(DISABLE_EXT_DISCARD_FRAMEBUFFER, \
disable_ext_discard_framebuffer) \
GPU_OP(DISABLE_EXT_DRAW_BUFFERS, \
......
......@@ -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' }
]
......
......@@ -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);
......
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