debian/patches/egl-platform-mir.patch |   94 +++++++++++++++++++++++-----------
 1 file changed, 66 insertions(+), 28 deletions(-)

New commits:
commit df57b8f4e0f246dad236c2f58d9896a7bbd2cceb
Author: Christopher James Halse Rogers <r...@ubuntu.com>
Date:   Fri Dec 18 17:37:01 2015 +1100

    Mir: Implement buffer_age because it's easy, and stop advertising 
swap_buffers_with_damage because it isn't

diff --git a/debian/patches/egl-platform-mir.patch 
b/debian/patches/egl-platform-mir.patch
index 3906473..13f6759 100644
--- a/debian/patches/egl-platform-mir.patch
+++ b/debian/patches/egl-platform-mir.patch
@@ -133,7 +133,7 @@ Index: mesa/src/egl/drivers/dri2/egl_dri2.h
     __DRIbuffer           *dri_buffers[__DRI_BUFFER_COUNT];
     struct {
  #ifdef HAVE_WAYLAND_PLATFORM
-@@ -274,9 +282,12 @@ struct dri2_egl_surface
+@@ -274,9 +282,13 @@ struct dri2_egl_surface
        void *data;
        int data_size;
  #endif
@@ -143,11 +143,12 @@ Index: mesa/src/egl/drivers/dri2/egl_dri2.h
  #endif
 +#ifdef HAVE_MIR_PLATFORM
 +      int                 fd;
++      int                 buffer_age;
 +#endif
        int                 locked;
        int                 age;
     } color_buffers[4], *back, *current;
-@@ -289,6 +300,10 @@ struct dri2_egl_surface
+@@ -289,6 +301,10 @@ struct dri2_egl_surface
     /* EGL-owned buffers */
     __DRIbuffer           *local_buffers[__DRI_BUFFER_COUNT];
  #endif
@@ -158,7 +159,7 @@ Index: mesa/src/egl/drivers/dri2/egl_dri2.h
  };
  
  
-@@ -379,4 +394,7 @@ const __DRIconfig *
+@@ -379,4 +395,7 @@ const __DRIconfig *
  dri2_get_dri_config(struct dri2_egl_config *conf, EGLint surface_type,
                      EGLenum colorspace);
  
@@ -170,7 +171,7 @@ Index: mesa/src/egl/drivers/dri2/platform_mir.c
 ===================================================================
 --- /dev/null
 +++ mesa/src/egl/drivers/dri2/platform_mir.c
-@@ -0,0 +1,620 @@
+@@ -0,0 +1,633 @@
 +/*
 + * Copyright © 2012 Canonical, Inc
 + *
@@ -478,6 +479,7 @@ Index: mesa/src/egl/drivers/dri2/platform_mir.c
 +   update_cached_buffer_ages(dri2_surf, buf_slot);
 +
 +   dri2_surf->back = &dri2_surf->color_buffers[buf_slot];
++   dri2_surf->back->buffer_age = buffer_package.age;
 +   dri2_surf->dri_buffers[__DRI_BUFFER_BACK_LEFT]->name = 0;
 +   dri2_surf->dri_buffers[__DRI_BUFFER_BACK_LEFT]->fd = buffer_package.fd[0];
 +   dri2_surf->dri_buffers[__DRI_BUFFER_BACK_LEFT]->pitch = 
buffer_package.stride;
@@ -691,6 +693,18 @@ Index: mesa/src/egl/drivers/dri2/platform_mir.c
 +   }
 +}
 +
++static EGLint
++dri2_mir_query_buffer_age(_EGLDriver *drv, _EGLDisplay *dpy,
++                               _EGLSurface *surf)
++{
++   struct dri2_egl_surface *dri2_surf = dri2_egl_surface(surf);
++   if (dri2_surf->back)
++   {
++      return dri2_surf->back->buffer_age;
++   }
++   return 0;
++}
++
 +static struct dri2_egl_display_vtbl dri2_mir_display_vtbl = {
 +   .authenticate = dri2_mir_authenticate,
 +   .create_window_surface = dri2_create_mir_window_surface,
@@ -704,8 +718,8 @@ Index: mesa/src/egl/drivers/dri2/platform_mir.c
 +   .swap_buffers_region = dri2_fallback_swap_buffers_region,
 +   .post_sub_buffer = dri2_fallback_post_sub_buffer,
 +   .copy_buffers = dri2_fallback_copy_buffers,
-+   .query_buffer_age = dri2_fallback_query_buffer_age,
-+   .create_wayland_buffer_from_image = NULL,
++   .query_buffer_age = dri2_mir_query_buffer_age,
++   .create_wayland_buffer_from_image = 
dri2_fallback_create_wayland_buffer_from_image,
 +   .get_sync_values = dri2_fallback_get_sync_values,
 +   .get_dri_drawable = dri2_surface_get_dri_drawable,
 +};
@@ -779,7 +793,7 @@ Index: mesa/src/egl/drivers/dri2/platform_mir.c
 +   }
 +
 +   disp->Extensions.EXT_buffer_age = EGL_TRUE;
-+   disp->Extensions.EXT_swap_buffers_with_damage = EGL_TRUE;
++   disp->Extensions.EXT_swap_buffers_with_damage = EGL_FALSE;
 +   disp->Extensions.KHR_image_pixmap = EGL_TRUE;
 +
 +   dri2_dpy->vtbl = &dri2_mir_display_vtbl;

commit 1fe07ef9fb906a051783b945112b6bda6a1cf9f7
Author: Christopher James Halse Rogers <r...@ubuntu.com>
Date:   Fri Dec 18 17:26:09 2015 +1100

    Update egl-platform-mir patch for vtable changes

diff --git a/debian/patches/egl-platform-mir.patch 
b/debian/patches/egl-platform-mir.patch
index 6b4320f..3906473 100644
--- a/debian/patches/egl-platform-mir.patch
+++ b/debian/patches/egl-platform-mir.patch
@@ -1,5 +1,7 @@
---- a/configure.ac
-+++ b/configure.ac
+Index: mesa/configure.ac
+===================================================================
+--- mesa.orig/configure.ac
++++ mesa/configure.ac
 @@ -1824,7 +1824,9 @@ for plat in $egl_platforms; do
                test "x$have_libdrm" != xyes &&
                        AC_MSG_ERROR([EGL platform surfaceless requires libdrm 
>= $LIBDRM_REQUIRED])
@@ -19,8 +21,10 @@
  
  AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
  
---- a/include/EGL/eglplatform.h
-+++ b/include/EGL/eglplatform.h
+Index: mesa/include/EGL/eglplatform.h
+===================================================================
+--- mesa.orig/include/EGL/eglplatform.h
++++ mesa/include/EGL/eglplatform.h
 @@ -105,6 +105,13 @@ typedef struct ANativeWindow*
  typedef struct egl_native_pixmap_t*     EGLNativePixmapType;
  typedef void*                           EGLNativeDisplayType;
@@ -35,8 +39,10 @@
  #elif defined(__unix__) || defined(__APPLE__)
  
  #if defined(MESA_EGL_NO_X11_HEADERS)
---- a/include/GL/internal/dri_interface.h
-+++ b/include/GL/internal/dri_interface.h
+Index: mesa/include/GL/internal/dri_interface.h
+===================================================================
+--- mesa.orig/include/GL/internal/dri_interface.h
++++ mesa/include/GL/internal/dri_interface.h
 @@ -895,10 +895,12 @@ struct __DRIbufferRec {
      unsigned int pitch;
      unsigned int cpp;
@@ -51,8 +57,10 @@
  struct __DRIdri2LoaderExtensionRec {
      __DRIextension base;
  
---- a/src/egl/drivers/dri2/egl_dri2.c
-+++ b/src/egl/drivers/dri2/egl_dri2.c
+Index: mesa/src/egl/drivers/dri2/egl_dri2.c
+===================================================================
+--- mesa.orig/src/egl/drivers/dri2/egl_dri2.c
++++ mesa/src/egl/drivers/dri2/egl_dri2.c
 @@ -783,6 +783,12 @@ dri2_initialize(_EGLDriver *drv, _EGLDis
           return EGL_TRUE;
        return dri2_initialize_wayland(drv, disp);
@@ -90,8 +98,10 @@
        for (i = 0; dri2_dpy->driver_configs[i]; i++)
           free((__DRIconfig *) dri2_dpy->driver_configs[i]);
        free(dri2_dpy->driver_configs);
---- a/src/egl/drivers/dri2/egl_dri2.h
-+++ b/src/egl/drivers/dri2/egl_dri2.h
+Index: mesa/src/egl/drivers/dri2/egl_dri2.h
+===================================================================
+--- mesa.orig/src/egl/drivers/dri2/egl_dri2.h
++++ mesa/src/egl/drivers/dri2/egl_dri2.h
 @@ -70,6 +70,10 @@
  
  #endif /* HAVE_ANDROID_PLATFORM */
@@ -156,9 +166,11 @@
 +dri2_initialize_mir(_EGLDriver *drv, _EGLDisplay *disp);
 +
  #endif /* EGL_DRI2_INCLUDED */
+Index: mesa/src/egl/drivers/dri2/platform_mir.c
+===================================================================
 --- /dev/null
-+++ b/src/egl/drivers/dri2/platform_mir.c
-@@ -0,0 +1,618 @@
++++ mesa/src/egl/drivers/dri2/platform_mir.c
+@@ -0,0 +1,620 @@
 +/*
 + * Copyright © 2012 Canonical, Inc
 + *
@@ -694,6 +706,8 @@
 +   .copy_buffers = dri2_fallback_copy_buffers,
 +   .query_buffer_age = dri2_fallback_query_buffer_age,
 +   .create_wayland_buffer_from_image = NULL,
++   .get_sync_values = dri2_fallback_get_sync_values,
++   .get_dri_drawable = dri2_surface_get_dri_drawable,
 +};
 +
 +EGLBoolean
@@ -777,8 +791,10 @@
 +
 +   return EGL_FALSE;
 +}
---- a/src/egl/main/egldisplay.c
-+++ b/src/egl/main/egldisplay.c
+Index: mesa/src/egl/main/egldisplay.c
+===================================================================
+--- mesa.orig/src/egl/main/egldisplay.c
++++ mesa/src/egl/main/egldisplay.c
 @@ -56,7 +56,10 @@
  #ifdef HAVE_DRM_PLATFORM
  #include <gbm.h>
@@ -868,8 +884,10 @@
     char *detection_method = NULL;
  
     if (native_platform == _EGL_INVALID_PLATFORM) {
---- a/src/egl/main/egldisplay.h
-+++ b/src/egl/main/egldisplay.h
+Index: mesa/src/egl/main/egldisplay.h
+===================================================================
+--- mesa.orig/src/egl/main/egldisplay.h
++++ mesa/src/egl/main/egldisplay.h
 @@ -50,6 +50,7 @@ enum _egl_platform_type {
     _EGL_PLATFORM_ANDROID,
     _EGL_PLATFORM_HAIKU,
@@ -878,8 +896,10 @@
  
     _EGL_NUM_PLATFORMS,
     _EGL_INVALID_PLATFORM = -1
---- a/src/gallium/state_trackers/dri/dri2.c
-+++ b/src/gallium/state_trackers/dri/dri2.c
+Index: mesa/src/gallium/state_trackers/dri/dri2.c
+===================================================================
+--- mesa.orig/src/gallium/state_trackers/dri/dri2.c
++++ mesa/src/gallium/state_trackers/dri/dri2.c
 @@ -531,12 +531,20 @@ dri2_allocate_textures(struct dri_contex
           templ.height0 = dri_drawable->h;
           templ.format = format;
@@ -905,8 +925,10 @@
           drawable->textures[statt] =
              screen->base.screen->resource_from_handle(screen->base.screen,
                    &templ, &whandle);
---- a/src/gbm/backends/dri/gbm_dri.c
-+++ b/src/gbm/backends/dri/gbm_dri.c
+Index: mesa/src/gbm/backends/dri/gbm_dri.c
+===================================================================
+--- mesa.orig/src/gbm/backends/dri/gbm_dri.c
++++ mesa/src/gbm/backends/dri/gbm_dri.c
 @@ -202,7 +202,7 @@ static const __DRIimageLookupExtension i
  };
  
@@ -1013,8 +1035,10 @@
  
     if (usage & GBM_BO_USE_SCANOUT)
        dri_use |= __DRI_IMAGE_USE_SCANOUT;
---- a/src/egl/Makefile.am
-+++ b/src/egl/Makefile.am
+Index: mesa/src/egl/Makefile.am
+===================================================================
+--- mesa.orig/src/egl/Makefile.am
++++ mesa/src/egl/Makefile.am
 @@ -84,6 +84,12 @@ AM_CFLAGS += -DHAVE_SURFACELESS_PLATFORM
  dri2_backend_FILES += drivers/dri2/platform_surfaceless.c
  endif

Reply via email to