mirror of
https://gitlab.freedesktop.org/wayland/weston
synced 2024-09-06 18:05:39 +00:00
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>
This commit is contained in:
parent
c77d30c516
commit
43cea54c90
|
@ -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++) {
|
||||||
|
if (weston_check_egl_extension(extensions,
|
||||||
|
swap_damage_ext_to_entrypoint[i].extension)) {
|
||||||
gr->swap_buffers_with_damage =
|
gr->swap_buffers_with_damage =
|
||||||
(void *) eglGetProcAddress("eglSwapBuffersWithDamageEXT");
|
(void *) eglGetProcAddress(
|
||||||
else
|
swap_damage_ext_to_entrypoint[i].entrypoint);
|
||||||
weston_log("warning: EGL_EXT_swap_buffers_with_damage not "
|
break;
|
||||||
"supported. Performance could be affected.\n");
|
}
|
||||||
|
}
|
||||||
|
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…
Reference in a new issue