[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