Mesa (master): egl: inline fallback for swap_buffers_with_damage

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 16 22:26:50 UTC 2020


Module: Mesa
Branch: master
Commit: 7d5a13ebf31edab412a06c075b847fc9f0137da1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7d5a13ebf31edab412a06c075b847fc9f0137da1

Author: Eric Engestrom <eric at engestrom.ch>
Date:   Sat Jul 11 00:36:08 2020 +0200

egl: inline fallback for swap_buffers_with_damage

Signed-off-by: Eric Engestrom <eric at engestrom.ch>
Reviewed-by: Frank Binns <frank.binns at imgtec.com>
Reviewed-by: Emil Velikov <emil.velikov at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5861>

---

 src/egl/drivers/dri2/egl_dri2.c           | 7 +++++--
 src/egl/drivers/dri2/egl_dri2.h           | 1 +
 src/egl/drivers/dri2/egl_dri2_fallbacks.h | 9 ---------
 src/egl/drivers/dri2/platform_android.c   | 1 -
 src/egl/drivers/dri2/platform_drm.c       | 1 -
 src/egl/drivers/dri2/platform_wayland.c   | 1 -
 src/egl/drivers/dri2/platform_x11.c       | 1 -
 src/egl/drivers/dri2/platform_x11_dri3.c  | 1 -
 8 files changed, 6 insertions(+), 16 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 147244f774b..60e0db3c781 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -1991,8 +1991,11 @@ dri2_swap_buffers_with_damage(_EGLDriver *drv, _EGLDisplay *disp,
 
    if (ctx && surf)
       dri2_surf_update_fence_fd(ctx, disp, surf);
-   ret = dri2_dpy->vtbl->swap_buffers_with_damage(drv, disp, surf,
-                                                  rects, n_rects);
+   if (dri2_dpy->vtbl->swap_buffers_with_damage)
+      ret = dri2_dpy->vtbl->swap_buffers_with_damage(drv, disp, surf,
+                                                     rects, n_rects);
+   else
+      ret = dri2_dpy->vtbl->swap_buffers(drv, disp, surf);
 
    /* SwapBuffers marks the end of the frame; reset the damage region for
     * use again next time.
diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
index d08af6fa7bf..f3bed345c63 100644
--- a/src/egl/drivers/dri2/egl_dri2.h
+++ b/src/egl/drivers/dri2/egl_dri2.h
@@ -120,6 +120,7 @@ struct dri2_egl_display_vtbl {
    EGLBoolean (*swap_buffers)(_EGLDriver *drv, _EGLDisplay *disp,
                               _EGLSurface *surf);
 
+   /* optional - falls back to .swap_buffers */
    EGLBoolean (*swap_buffers_with_damage)(_EGLDriver *drv, _EGLDisplay *disp,
                                           _EGLSurface *surface,
                                           const EGLint *rects, EGLint n_rects);
diff --git a/src/egl/drivers/dri2/egl_dri2_fallbacks.h b/src/egl/drivers/dri2/egl_dri2_fallbacks.h
index 10417cab472..7a268dd3843 100644
--- a/src/egl/drivers/dri2/egl_dri2_fallbacks.h
+++ b/src/egl/drivers/dri2/egl_dri2_fallbacks.h
@@ -30,15 +30,6 @@
 
 struct wl_buffer;
 
-static inline EGLBoolean
-dri2_fallback_swap_buffers_with_damage(_EGLDriver *drv, _EGLDisplay *disp,
-                                      _EGLSurface *surf,
-                                      const EGLint *rects, EGLint n_rects)
-{
-   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-   return dri2_dpy->vtbl->swap_buffers(drv, disp, surf);
-}
-
 static inline EGLBoolean
 dri2_fallback_swap_buffers_region(_EGLDriver *drv, _EGLDisplay *disp,
                                   _EGLSurface *surf,
diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
index 1d9aebc95b6..6ea7d8ffc83 100644
--- a/src/egl/drivers/dri2/platform_android.c
+++ b/src/egl/drivers/dri2/platform_android.c
@@ -1266,7 +1266,6 @@ static const struct dri2_egl_display_vtbl droid_display_vtbl = {
    .destroy_surface = droid_destroy_surface,
    .create_image = droid_create_image_khr,
    .swap_buffers = droid_swap_buffers,
-   .swap_buffers_with_damage = dri2_fallback_swap_buffers_with_damage, /* Android implements the function */
    .swap_buffers_region = dri2_fallback_swap_buffers_region,
    .swap_interval = droid_swap_interval,
    .post_sub_buffer = dri2_fallback_post_sub_buffer,
diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c
index f1d02c8e041..ce0bd1b137f 100644
--- a/src/egl/drivers/dri2/platform_drm.c
+++ b/src/egl/drivers/dri2/platform_drm.c
@@ -678,7 +678,6 @@ static const struct dri2_egl_display_vtbl dri2_drm_display_vtbl = {
    .destroy_surface = dri2_drm_destroy_surface,
    .create_image = dri2_drm_create_image_khr,
    .swap_buffers = dri2_drm_swap_buffers,
-   .swap_buffers_with_damage = dri2_fallback_swap_buffers_with_damage,
    .swap_buffers_region = dri2_fallback_swap_buffers_region,
    .post_sub_buffer = dri2_fallback_post_sub_buffer,
    .copy_buffers = dri2_fallback_copy_buffers,
diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
index e9b79f8fb18..cfb777fc9a7 100644
--- a/src/egl/drivers/dri2/platform_wayland.c
+++ b/src/egl/drivers/dri2/platform_wayland.c
@@ -2005,7 +2005,6 @@ static const struct dri2_egl_display_vtbl dri2_wl_swrast_display_vtbl = {
    .destroy_surface = dri2_wl_destroy_surface,
    .create_image = dri2_create_image_khr,
    .swap_buffers = dri2_wl_swrast_swap_buffers,
-   .swap_buffers_with_damage = dri2_fallback_swap_buffers_with_damage,
    .swap_buffers_region = dri2_fallback_swap_buffers_region,
    .post_sub_buffer = dri2_fallback_post_sub_buffer,
    .copy_buffers = dri2_fallback_copy_buffers,
diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c
index ff5dc32c03a..340a7b5522b 100644
--- a/src/egl/drivers/dri2/platform_x11.c
+++ b/src/egl/drivers/dri2/platform_x11.c
@@ -1201,7 +1201,6 @@ static const struct dri2_egl_display_vtbl dri2_x11_display_vtbl = {
    .create_image = dri2_x11_create_image_khr,
    .swap_interval = dri2_x11_swap_interval,
    .swap_buffers = dri2_x11_swap_buffers,
-   .swap_buffers_with_damage = dri2_fallback_swap_buffers_with_damage,
    .swap_buffers_region = dri2_x11_swap_buffers_region,
    .post_sub_buffer = dri2_x11_post_sub_buffer,
    .copy_buffers = dri2_x11_copy_buffers,
diff --git a/src/egl/drivers/dri2/platform_x11_dri3.c b/src/egl/drivers/dri2/platform_x11_dri3.c
index ab137195a97..0275da31b44 100644
--- a/src/egl/drivers/dri2/platform_x11_dri3.c
+++ b/src/egl/drivers/dri2/platform_x11_dri3.c
@@ -499,7 +499,6 @@ struct dri2_egl_display_vtbl dri3_x11_display_vtbl = {
    .create_image = dri3_create_image_khr,
    .swap_interval = dri3_set_swap_interval,
    .swap_buffers = dri3_swap_buffers,
-   .swap_buffers_with_damage = dri2_fallback_swap_buffers_with_damage,
    .swap_buffers_region = dri2_fallback_swap_buffers_region,
    .post_sub_buffer = dri2_fallback_post_sub_buffer,
    .copy_buffers = dri3_copy_buffers,



More information about the mesa-commit mailing list