dri: add backbuffer use flag

This will be used by the next commit.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Axel Davy 2015-10-21 12:28:00 +02:00 committed by Marek Olšák
parent 2188c77a0e
commit d943ac432d
3 changed files with 14 additions and 5 deletions

View File

@ -1100,6 +1100,11 @@ struct __DRIdri2ExtensionRec {
#define __DRI_IMAGE_USE_SCANOUT 0x0002
#define __DRI_IMAGE_USE_CURSOR 0x0004 /* Depricated */
#define __DRI_IMAGE_USE_LINEAR 0x0008
/* The buffer will only be read by an external process after SwapBuffers,
* in contrary to gbm buffers, front buffers and fake front buffers, which
* could be read after a flush."
*/
#define __DRI_IMAGE_USE_BACKBUFFER 0x0010
/**

View File

@ -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;
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;
}

View File

@ -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;