From 341b3c8bd2387d9d6fb684e006a4eb45dfe09efa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Tue, 12 Mar 2024 10:38:21 +0100 Subject: [PATCH] gles2: Avoid crash when glGetInteger64vEXT is missing The spec for GL_EXT_disjoint_timer_query says > The GetInteger64vEXT command is required only if OpenGL ES 3.0 or later > is not supported. Some GLES 3.2 implementations like the proprietary mali driver on the rk3566 based OrangePi advertise GL_EXT_disjoint_timer_query but lack glGetInteger64vEXT. Use glGetInteger64v instead. --- render/gles2/renderer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c index 3aed64ee..139c1a80 100644 --- a/render/gles2/renderer.c +++ b/render/gles2/renderer.c @@ -614,7 +614,11 @@ struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) { load_gl_proc(&renderer->procs.glQueryCounterEXT, "glQueryCounterEXT"); load_gl_proc(&renderer->procs.glGetQueryObjectivEXT, "glGetQueryObjectivEXT"); load_gl_proc(&renderer->procs.glGetQueryObjectui64vEXT, "glGetQueryObjectui64vEXT"); - load_gl_proc(&renderer->procs.glGetInteger64vEXT, "glGetInteger64vEXT"); + if (eglGetProcAddress("glGetInteger64vEXT")) { + load_gl_proc(&renderer->procs.glGetInteger64vEXT, "glGetInteger64vEXT"); + } else { + load_gl_proc(&renderer->procs.glGetInteger64vEXT, "glGetInteger64v"); + } } if (renderer->exts.KHR_debug) {