diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 52935f18077..590461f5259 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -729,6 +729,9 @@ dri2_setup_screen(_EGLDisplay *disp) dri2_dpy->has_modifiers = has_modifiers && util_bitcount(caps) == 2; dri2_dpy->has_dmabuf_import = has_modifiers && caps & DRM_PRIME_CAP_IMPORT; #endif +#ifdef HAVE_ANDROID_PLATFORM + dri2_dpy->has_native_fence_fd = get_screen_param(disp, PIPE_CAP_NATIVE_FENCE_FD); +#endif /* * EGL 1.5 specification defines the default value to 1. Moreover, diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h index 4024e72d899..b08558e7e5e 100644 --- a/src/egl/drivers/dri2/egl_dri2.h +++ b/src/egl/drivers/dri2/egl_dri2.h @@ -317,6 +317,7 @@ struct dri2_egl_display { struct u_gralloc *gralloc; /* gralloc vendor usage bit for front rendering */ uint32_t front_rendering_usage; + bool has_native_fence_fd; #endif }; diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index f9f792739be..fc75e4ecea3 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -123,8 +123,7 @@ handle_in_fence_fd(struct dri2_egl_surface *dri2_surf, __DRIimage *img) validate_fence_fd(dri2_surf->in_fence_fd); - if (dri2_dpy->image->base.version >= 21 && - dri2_dpy->image->setInFenceFd != NULL) { + if (dri2_dpy->has_native_fence_fd) { dri2_set_in_fence_fd(img, dri2_surf->in_fence_fd); } else { sync_wait(dri2_surf->in_fence_fd, -1);