Add __DRI_IMAGE_USE_BACKBUFFER to indicate the image is going to be used as a backbuffer.
Backbuffers are going to be attached as __DRI_BUFFER_BACK_LEFT or __DRI_BUFFER_BACK_RIGHT. This flag enables the driver to assume the buffer will only be read by an external process after a swapbuffer, in contrary to gbm buffers, front buffers and fake front buffers, which could be read after a flush. Signed-off-by: Axel Davy <axel.d...@ens.fr> --- include/GL/internal/dri_interface.h | 1 + src/egl/drivers/dri2/platform_wayland.c | 3 ++- src/glx/dri3_glx.c | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index a0f155a..555894a 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -1091,6 +1091,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 92ff2af..1fbc271 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -352,7 +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_SCANOUT; + use_flags = __DRI_IMAGE_USE_SHARE | __DRI_IMAGE_USE_SCANOUT | + __DRI_IMAGE_USE_BACKBUFFER; if (dri2_dpy->is_different_gpu && dri2_surf->back->linear_copy == NULL) { diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index 96f13e6..feee6e6 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -880,7 +880,8 @@ dri3_alloc_render_buffer(struct glx_screen *glx_screen, Drawable draw, width, height, format, __DRI_IMAGE_USE_SHARE | - __DRI_IMAGE_USE_SCANOUT, + __DRI_IMAGE_USE_SCANOUT | + __DRI_IMAGE_USE_BACKBUFFER, buffer); pixmap_buffer = buffer->image; @@ -904,7 +905,8 @@ dri3_alloc_render_buffer(struct glx_screen *glx_screen, Drawable draw, 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; -- 2.6.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev