summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Neph <ryanneph@google.com>2023-06-22 13:37:05 -0700
committerMarge Bot <emma+marge@anholt.net>2023-06-26 18:20:48 +0000
commit6252b33f7c28940c155e2fc01a84c8026826f44b (patch)
treee818b2222f8879c01df9c9da5bcf64cec6ac393a
parent3764d450ac04cf9b1113e160ed5e85a3f211cdd9 (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.c3
-rw-r--r--src/vrend_winsys_egl.c2
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) {