aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2022-10-10 09:25:33 +0200
committerAlexander Orzechowski <orzechowski.alexander@gmail.com>2022-10-10 07:54:35 +0000
commit954974950726f3b6dbc8c5341722c942eade07f1 (patch)
tree088ed4c64ff3532347b29c8d836323f1cbdaa646
parentf216e979836a25adca4656583ae5fb9db06be00c (diff)
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
-rw-r--r--render/gles2/renderer.c9
1 files 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();