[xf86-video-nouveau] dri2: Enable BufferAge support

Mario Kleiner mario.kleiner.de at gmail.com
Fri May 8 21:41:55 PDT 2015



On 01/19/2015 12:00 PM, Chris Wilson wrote:
> For enable BufferAge support, we just have to be not using the
> DRI2Buffer->flags field for any purpose (i.e. it is always expected to
> be 0, as it is now) and to be sure to swap the flags field whenever we
> exchange buffers. As nouveau does not exactly support TripleBuffer, we
> don't have to worry about setting the copying the flags field when
> injecting the third buffer.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Maarten Lankhorst <maarten.lankhorst at ubuntu.com>
> Cc: Mario Kleiner <mario.kleiner.de at gmail.com>
> ---
>   src/nouveau_dri2.c | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/src/nouveau_dri2.c b/src/nouveau_dri2.c
> index e3445b2..428ef92 100644
> --- a/src/nouveau_dri2.c
> +++ b/src/nouveau_dri2.c
> @@ -711,6 +711,7 @@ nouveau_dri2_finish_swap(DrawablePtr draw, unsigned int frame,
>   		}
>
>   		SWAP(s->dst->name, s->src->name);
> +		SWAP(s->dst->flags, s->src->flags);
>   		SWAP(nouveau_pixmap(dst_pix)->bo, nouveau_pixmap(src_pix)->bo);
>
>   		DamageRegionProcessPending(draw);
> @@ -1003,6 +1004,12 @@ nouveau_dri2_init(ScreenPtr pScreen)
>   	dri2.DestroyBuffer2 = nouveau_dri2_destroy_buffer2;
>   	dri2.CopyRegion2 = nouveau_dri2_copy_region2;
>   #endif
> +
> +#if DRI2INFOREC_VERSION >= 10
> +	dri2.version = 10;
> +	dri2.bufferAge = 1;
> +#endif
> +
>   	return DRI2ScreenInit(pScreen, &dri2);
>   }
>
>

Seems ok to me.

Reviewed-by: Mario Kleiner <mario.kleiner.de at gmail.com>

-mario


More information about the dri-devel mailing list