render/egl: add support for EGL_EXT_image_implicit_sync_control

This allows the driver to disable implicit sync logic.
This commit is contained in:
Simon Ser 2022-04-05 22:41:39 +02:00
parent 785549bc3e
commit 456f29bd28
2 changed files with 10 additions and 0 deletions

View file

@ -15,6 +15,7 @@ struct wlr_egl {
bool EXT_image_dma_buf_import;
bool EXT_image_dma_buf_import_modifiers;
bool IMG_context_priority;
bool EXT_image_implicit_sync_control;
// Device extensions
bool EXT_device_drm;

View file

@ -323,6 +323,9 @@ static bool egl_init_display(struct wlr_egl *egl, EGLDisplay *display) {
egl->exts.IMG_context_priority =
check_egl_ext(display_exts_str, "EGL_IMG_context_priority");
egl->exts.EXT_image_implicit_sync_control =
check_egl_ext(display_exts_str, "EGL_EXT_image_implicit_sync_control");
if (check_egl_ext(display_exts_str, "EGL_KHR_fence_sync") &&
check_egl_ext(display_exts_str, "EGL_ANDROID_native_fence_sync")) {
load_egl_proc(&egl->procs.eglCreateSyncKHR, "eglCreateSyncKHR");
@ -684,6 +687,12 @@ EGLImageKHR wlr_egl_create_image_from_dmabuf(struct wlr_egl *egl,
attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT;
attribs[atti++] = attributes->format;
// TODO: switch on conditionally
if (egl->exts.EXT_image_implicit_sync_control) {
attribs[atti++] = EGL_IMPORT_SYNC_TYPE_EXT;
attribs[atti++] = EGL_IMPORT_EXPLICIT_SYNC_EXT;
}
struct {
EGLint fd;
EGLint offset;