egl/dri2: glFlush is not optional, treat it as such
The documentation is clear - one must glFlush the old context on eglMakeCurrent. Thus keeping it optional is not something we should be doing. Furthermore if we cannot get the entry point we're likely having a broken setup/stack. Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
This commit is contained in:
committed by
Emil Velikov
parent
13bf390657
commit
b349c11098
@@ -1262,7 +1262,7 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
|
||||
}
|
||||
|
||||
/* flush before context switch */
|
||||
if (old_ctx && dri2_drv->glFlush)
|
||||
if (old_ctx)
|
||||
dri2_drv->glFlush();
|
||||
|
||||
ddraw = (dsurf) ? dri2_dpy->vtbl->get_dri_drawable(dsurf) : NULL;
|
||||
@@ -2666,8 +2666,7 @@ dri2_client_wait_sync(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync,
|
||||
if (dri2_ctx && dri2_sync->base.SyncStatus == EGL_UNSIGNALED_KHR &&
|
||||
(flags & EGL_SYNC_FLUSH_COMMANDS_BIT_KHR)) {
|
||||
/* flush context if EGL_SYNC_FLUSH_COMMANDS_BIT_KHR is set */
|
||||
if (dri2_drv->glFlush)
|
||||
dri2_drv->glFlush();
|
||||
dri2_drv->glFlush();
|
||||
}
|
||||
|
||||
/* if timeout is EGL_FOREVER_KHR, it should wait without any timeout.*/
|
||||
@@ -2832,6 +2831,12 @@ dri2_load(_EGLDriver *drv)
|
||||
dri2_drv->glFlush = (void (*)(void))
|
||||
dri2_drv->get_proc_address("glFlush");
|
||||
|
||||
/* if glFlush is not available things are horribly broken */
|
||||
if (!dri2_drv->glFlush) {
|
||||
_eglLog(_EGL_WARNING, "DRI2: failed to find glFlush entry point");
|
||||
return EGL_FALSE;
|
||||
}
|
||||
|
||||
dri2_drv->handle = handle;
|
||||
|
||||
return EGL_TRUE;
|
||||
|
||||
Reference in New Issue
Block a user