[Mesa-dev] [PATCH v4 2/5] dri_interface: add DRI2_BufferDamage interface

Boris Brezillon boris.brezillon at collabora.com
Tue Jun 25 16:46:30 UTC 2019


On Tue, 25 Jun 2019 18:37:46 +0200
Boris Brezillon <boris.brezillon at collabora.com> wrote:

> From: Daniel Stone <daniels at collabora.com>
> 
> Add a new DRI2_BufferDamage interface to support the
> EGL_KHR_partial_update extension, informing the driver of an overriding
> scissor region for a particular drawable.
> 
> Based on a commit originally authored by:
> Harish Krupo <harish.krupo.kps at intel.com>
> renamed extension, retargeted at DRI drawable instead of context,
> rewritten description
> 

Oops, this patch is missing Daniel's SoB.

> Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
> ---
>  include/GL/internal/dri_interface.h | 43 +++++++++++++++++++++++++++++
>  1 file changed, 43 insertions(+)
> 
> diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
> index af0ee9c56670..ada78c5d53d6 100644
> --- a/include/GL/internal/dri_interface.h
> +++ b/include/GL/internal/dri_interface.h
> @@ -85,6 +85,7 @@ typedef struct __DRI2throttleExtensionRec	__DRI2throttleExtension;
>  typedef struct __DRI2fenceExtensionRec          __DRI2fenceExtension;
>  typedef struct __DRI2interopExtensionRec	__DRI2interopExtension;
>  typedef struct __DRI2blobExtensionRec           __DRI2blobExtension;
> +typedef struct __DRI2bufferDamageExtensionRec   __DRI2bufferDamageExtension;
>  
>  typedef struct __DRIimageLoaderExtensionRec     __DRIimageLoaderExtension;
>  typedef struct __DRIimageDriverExtensionRec     __DRIimageDriverExtension;
> @@ -488,6 +489,48 @@ struct __DRI2interopExtensionRec {
>                          struct mesa_glinterop_export_out *out);
>  };
>  
> +
> +/**
> + * Extension for limiting window system back buffer rendering to user-defined
> + * scissor region.
> + */
> +
> +#define __DRI2_BUFFER_DAMAGE "DRI2_BufferDamage"
> +#define __DRI2_BUFFER_DAMAGE_VERSION 1
> +
> +struct __DRI2bufferDamageExtensionRec {
> +   __DRIextension base;
> +
> +   /**
> +    * Provides an array of rectangles representing an overriding scissor region
> +    * for rendering operations performed to the specified drawable. These
> +    * rectangles do not replace client API scissor regions or draw
> +    * co-ordinates, but instead inform the driver of the overall bounds of all
> +    * operations which will be issued before the next flush.
> +    *
> +    * Any rendering operations writing pixels outside this region to the
> +    * drawable will have an undefined effect on the entire drawable.
> +    *
> +    * This entrypoint may only be called after the drawable has been either been
> +    * newly created or flushed, and before any rendering operations which write
> +    * pixels to the drawable. Calling this entrypoint at any other time will
> +    * have an undefined effect on the entire drawable.
> +    *
> +    * Calling this entrypoint with @size 0 and @rects NULL will reset the
> +    * region to the buffer's full size. This entrypoint may be called once to
> +    * reset the region, followed by a second call with a populated region,
> +    * before a rendering call is made.
> +    *
> +    * Used to implement EGL_KHR_partial_update.
> +    *
> +    * \param drawable affected drawable
> +    * \param size     number of rectangles provided
> +    * \param rects    the array of rectangles, lower-left origin
> +    */
> +   void (*set_damage_region)(__DRIdrawable *drawable, unsigned int nrects,
> +                             int *rects);
> +};
> +
>  /*@}*/
>  
>  /**



More information about the mesa-dev mailing list