[Mesa-dev] [PATCH 1/2] dri: add backbuffer use flag

Ian Romanick idr at freedesktop.org
Tue Mar 1 23:01:15 UTC 2016


On 03/01/2016 01:41 PM, Marek Olšák wrote:
> From: Axel Davy <axel.davy at ens.fr>
> 
> This will be used by the next commit.
> ---
>  include/GL/internal/dri_interface.h     | 1 +
>  src/egl/drivers/dri2/platform_wayland.c | 8 +++++---
>  src/loader/loader_dri3_helper.c         | 6 ++++--
>  3 files changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
> index 6bbd3fa..9ff4e4b 100644
> --- a/include/GL/internal/dri_interface.h
> +++ b/include/GL/internal/dri_interface.h
> @@ -1100,6 +1100,7 @@ struct __DRIdri2ExtensionRec {
>  #define __DRI_IMAGE_USE_SCANOUT		0x0002
>  #define __DRI_IMAGE_USE_CURSOR		0x0004 /* Depricated */
>  #define __DRI_IMAGE_USE_LINEAR		0x0008
> +#define __DRI_IMAGE_USE_BACKBUFFER     0x0010
>  
>  
>  /**
> diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
> index 341acb7..ff0d5c8 100644
> --- a/src/egl/drivers/dri2/platform_wayland.c
> +++ b/src/egl/drivers/dri2/platform_wayland.c
> @@ -305,7 +305,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
>  {
>     struct dri2_egl_display *dri2_dpy =
>        dri2_egl_display(dri2_surf->base.Resource.Display);
> -   int i;
> +   int i, use_flags;
>     unsigned int dri_image_format;
>  
>     /* currently supports three WL DRM formats,
> @@ -352,6 +352,8 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
>     if (dri2_surf->back == NULL)
>        return -1;
>  
> +   use_flags = __DRI_IMAGE_USE_SHARE | __DRI_IMAGE_USE_BACKBUFFER;
> +

I think this needs some versioning, but I'm not that familiar with these
flags.  What happens when you use this with a *_dri.so that doesn't know
what __DRI_IMAGE_USE_BACKBUFFER is?

>     if (dri2_dpy->is_different_gpu &&
>         dri2_surf->back->linear_copy == NULL) {
>         dri2_surf->back->linear_copy =
> @@ -359,7 +361,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
>                                        dri2_surf->base.Width,
>                                        dri2_surf->base.Height,
>                                        dri_image_format,
> -                                      __DRI_IMAGE_USE_SHARE |
> +                                      use_flags |
>                                        __DRI_IMAGE_USE_LINEAR,
>                                        NULL);
>        if (dri2_surf->back->linear_copy == NULL)
> @@ -373,7 +375,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
>                                        dri2_surf->base.Height,
>                                        dri_image_format,
>                                        dri2_dpy->is_different_gpu ?
> -                                         0 : __DRI_IMAGE_USE_SHARE,
> +                                         0 : use_flags,
>                                        NULL);
>        dri2_surf->back->age = 0;
>     }
> diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c
> index 62bfe84..896f225 100644
> --- a/src/loader/loader_dri3_helper.c
> +++ b/src/loader/loader_dri3_helper.c
> @@ -858,7 +858,8 @@ dri3_alloc_render_buffer(struct loader_dri3_drawable *draw, unsigned int format,
>                                                        width, height,
>                                                        format,
>                                                        __DRI_IMAGE_USE_SHARE |
> -                                                      __DRI_IMAGE_USE_SCANOUT,
> +                                                      __DRI_IMAGE_USE_SCANOUT |
> +                                                      __DRI_IMAGE_USE_BACKBUFFER,
>                                                        buffer);
>        pixmap_buffer = buffer->image;
>  
> @@ -878,7 +879,8 @@ dri3_alloc_render_buffer(struct loader_dri3_drawable *draw, unsigned int format,
>          (draw->ext->image->createImage)(draw->dri_screen,
>                                          width, height, format,
>                                          __DRI_IMAGE_USE_SHARE |
> -                                           __DRI_IMAGE_USE_LINEAR,
> +                                        __DRI_IMAGE_USE_LINEAR |
> +                                        __DRI_IMAGE_USE_BACKBUFFER,
>                                          buffer);
>        pixmap_buffer = buffer->linear_buffer;
>  
> 



More information about the mesa-dev mailing list