gl-renderer: add support for EGL_KHR_swap_buffers_with_damage

Extension is identical to the EXT one, yet we need to check for the KHR
abbreviated extension name + entry-point.

v2: s/foo/swap_damage_ext_to_entrypoint/ (Eric, Daniel)

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> (v1)
Reviewed-by: Daniel Stone <daniels@collabora.com>
dev
Emil Velikov 8 years ago committed by Daniel Stone
parent c77d30c516
commit 43cea54c90
  1. 32
      libweston/gl-renderer.c

@ -2812,6 +2812,18 @@ renderer_setup_egl_client_extensions(struct gl_renderer *gr)
static int static int
gl_renderer_setup_egl_extensions(struct weston_compositor *ec) gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
{ {
static const struct {
char *extension, *entrypoint;
} swap_damage_ext_to_entrypoint[] = {
{
.extension = "EGL_EXT_swap_buffers_with_damage",
.entrypoint = "eglSwapBuffersWithDamageEXT",
},
{
.extension = "EGL_KHR_swap_buffers_with_damage",
.entrypoint = "eglSwapBuffersWithDamageKHR",
},
};
struct gl_renderer *gr = get_renderer(ec); struct gl_renderer *gr = get_renderer(ec);
const char *extensions; const char *extensions;
EGLBoolean ret; EGLBoolean ret;
@ -2846,12 +2858,20 @@ gl_renderer_setup_egl_extensions(struct weston_compositor *ec)
weston_log("warning: EGL_EXT_buffer_age not supported. " weston_log("warning: EGL_EXT_buffer_age not supported. "
"Performance could be affected.\n"); "Performance could be affected.\n");
if (weston_check_egl_extension(extensions, "EGL_EXT_swap_buffers_with_damage")) for (unsigned i = 0; i < ARRAY_LENGTH(swap_damage_ext_to_entrypoint); i++) {
gr->swap_buffers_with_damage = if (weston_check_egl_extension(extensions,
(void *) eglGetProcAddress("eglSwapBuffersWithDamageEXT"); swap_damage_ext_to_entrypoint[i].extension)) {
else gr->swap_buffers_with_damage =
weston_log("warning: EGL_EXT_swap_buffers_with_damage not " (void *) eglGetProcAddress(
"supported. Performance could be affected.\n"); swap_damage_ext_to_entrypoint[i].entrypoint);
break;
}
}
if (!gr->swap_buffers_with_damage)
weston_log("warning: neither %s or %s is supported. "
"Performance could be affected.\n",
swap_damage_ext_to_entrypoint[0].extension,
swap_damage_ext_to_entrypoint[1].extension);
if (weston_check_egl_extension(extensions, "EGL_KHR_no_config_context") || if (weston_check_egl_extension(extensions, "EGL_KHR_no_config_context") ||
weston_check_egl_extension(extensions, "EGL_MESA_configless_context")) weston_check_egl_extension(extensions, "EGL_MESA_configless_context"))

Loading…
Cancel
Save