From 954974950726f3b6dbc8c5341722c942eade07f1 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 10 Oct 2022 09:25:33 +0200 Subject: [PATCH] render/gles2: assert that GL_OES_EGL_image_external is supported The target is set to GL_TEXTURE_EXTERNAL_OES when EGL_EXT_image_dma_buf_import_modifiers [1] returns an external_only flag. That spec states: > In order to support imports for the GL_TEXTURE_EXTERNAL_OES target, a > compatible OpenGL ES implementation supporting GL_OES_EGL_image_external > must be present. Fail hearder when a driver doesn't follow the spec instead of skipping rendering. See [2]. [1]: https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt [2]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3631#note_1584343 --- render/gles2/renderer.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c index 354584e5..b1543cdd 100644 --- a/render/gles2/renderer.c +++ b/render/gles2/renderer.c @@ -267,13 +267,10 @@ static bool gles2_render_subtexture_with_matrix( } break; case GL_TEXTURE_EXTERNAL_OES: + // EGL_EXT_image_dma_buf_import_modifiers requires + // GL_OES_EGL_image_external + assert(renderer->exts.OES_egl_image_external); shader = &renderer->shaders.tex_ext; - - if (!renderer->exts.OES_egl_image_external) { - wlr_log(WLR_ERROR, "Failed to render texture: " - "GL_TEXTURE_EXTERNAL_OES not supported"); - return false; - } break; default: abort();