diff options
author | Ryan Neph <ryanneph@google.com> | 2023-06-22 13:37:05 -0700 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-06-26 18:20:48 +0000 |
commit | 6252b33f7c28940c155e2fc01a84c8026826f44b (patch) | |
tree | e818b2222f8879c01df9c9da5bcf64cec6ac393a | |
parent | 3764d450ac04cf9b1113e160ed5e85a3f211cdd9 (diff) |
vrend/egl: allow EGL fencing for OpenGL contexts
I cannot find any limitation in EGL_KHR_fence_sync or
EGL_ANDROID_native_fence_sync that limits our abilty in vrend to
support EGL fencing for OpenGL contexts (in addition to GLES contexts,
which vrend already supports).
EGL_ANDROID_native_fence_sync is critical for providing
virgl_renderer_export_fence()-like functionality, which is interesting
for obtaining a sync_file fd exported from a rendering context to give
to the host compositor (one half of explicit fencing for WSI).
Signed-off-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1168>
-rw-r--r-- | src/vrend_renderer.c | 3 | ||||
-rw-r--r-- | src/vrend_winsys_egl.c | 2 |
2 files changed, 2 insertions, 3 deletions
diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c index 797742c..b88c075 100644 --- a/src/vrend_renderer.c +++ b/src/vrend_renderer.c @@ -7442,8 +7442,7 @@ int vrend_renderer_init(const struct vrend_if_cbs *cbs, uint32_t flags) vrend_state.use_external_blob = true; #ifdef HAVE_EPOXY_EGL_H - if (vrend_state.use_gles) - vrend_state.use_egl_fence = virgl_egl_supports_fences(egl); + vrend_state.use_egl_fence = virgl_egl_supports_fences(egl); #endif if (!vrend_check_no_error(vrend_state.ctx0) || !has_feature(feat_ubo)) { diff --git a/src/vrend_winsys_egl.c b/src/vrend_winsys_egl.c index b5ca0ac..dbbed88 100644 --- a/src/vrend_winsys_egl.c +++ b/src/vrend_winsys_egl.c @@ -427,7 +427,7 @@ struct virgl_egl *virgl_egl_init(EGLNativeDisplayType display_id, bool surfacele eglMakeCurrent(egl->egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, egl->egl_ctx); - if (gles && virgl_egl_supports_fences(egl)) { + if (virgl_egl_supports_fences(egl)) { egl->signaled_fence = eglCreateSyncKHR(egl->egl_display, EGL_SYNC_NATIVE_FENCE_ANDROID, NULL); if (!egl->signaled_fence) { |