render/gles2: check for GL_OES_EGL_image_external
This commit is contained in:
parent
b5125ff328
commit
d592dcdedd
|
@ -42,6 +42,7 @@ struct wlr_gles2_renderer {
|
|||
struct {
|
||||
bool read_format_bgra_ext;
|
||||
bool debug_khr;
|
||||
bool egl_image_external_oes;
|
||||
} exts;
|
||||
|
||||
struct {
|
||||
|
|
|
@ -135,6 +135,12 @@ static bool gles2_render_texture_with_matrix(struct wlr_renderer *wlr_renderer,
|
|||
case WLR_GLES2_TEXTURE_DMABUF:
|
||||
shader = &renderer->shaders.tex_ext;
|
||||
target = GL_TEXTURE_EXTERNAL_OES;
|
||||
|
||||
if (!renderer->exts.egl_image_external_oes) {
|
||||
wlr_log(WLR_ERROR, "Failed to render texture: "
|
||||
"GL_TEXTURE_EXTERNAL_OES not supported");
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -559,6 +565,9 @@ struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) {
|
|||
renderer->exts.debug_khr =
|
||||
check_gl_ext(renderer->exts_str, "GL_KHR_debug") &&
|
||||
glDebugMessageCallbackKHR && glDebugMessageControlKHR;
|
||||
renderer->exts.egl_image_external_oes =
|
||||
check_gl_ext(renderer->exts_str, "GL_OES_EGL_image_external") &&
|
||||
glEGLImageTargetTexture2DOES;
|
||||
|
||||
if (renderer->exts.debug_khr) {
|
||||
glEnable(GL_DEBUG_OUTPUT_KHR);
|
||||
|
@ -611,7 +620,7 @@ struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) {
|
|||
renderer->shaders.tex_rgbx.tex = glGetUniformLocation(prog, "tex");
|
||||
renderer->shaders.tex_rgbx.alpha = glGetUniformLocation(prog, "alpha");
|
||||
|
||||
if (glEGLImageTargetTexture2DOES) {
|
||||
if (renderer->exts.egl_image_external_oes) {
|
||||
renderer->shaders.tex_ext.program = prog =
|
||||
link_program(tex_vertex_src, tex_fragment_src_external);
|
||||
if (!renderer->shaders.tex_ext.program) {
|
||||
|
|
Loading…
Reference in New Issue