[Mesa-dev] [PATCH 1/4] dri: Add a flushSwapBuffers method to the image loader extension

Emil Velikov emil.l.velikov at gmail.com
Wed Aug 2 16:06:29 UTC 2017


On 2 August 2017 at 13:23, Thomas Hellstrom <thellstrom at vmware.com> wrote:
> This method may be used by dri drivers to make sure all outstanding
> buffer swaps have been flushed to hardware.
> Also make sure we're allowed to bump the image loader extension version
> without actually providing the getCapability method that was introduced
> with the previous version.
>
> Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
> ---
>  include/GL/internal/dri_interface.h         | 16 +++++++++++++++-
>  src/gallium/state_trackers/dri/dri_screen.c |  3 ++-
>  2 files changed, 17 insertions(+), 2 deletions(-)
>
> diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
> index 31f1eba..f676ac5 100644
> --- a/include/GL/internal/dri_interface.h
> +++ b/include/GL/internal/dri_interface.h
> @@ -1747,7 +1747,7 @@ struct __DRIimageList {
>  };
>
>  #define __DRI_IMAGE_LOADER "DRI_IMAGE_LOADER"
> -#define __DRI_IMAGE_LOADER_VERSION 2
> +#define __DRI_IMAGE_LOADER_VERSION 3
>
>  struct __DRIimageLoaderExtensionRec {
>      __DRIextension base;
> @@ -1791,6 +1791,20 @@ struct __DRIimageLoaderExtensionRec {
>       * \since 2
>       */
>      unsigned (*getCapability)(void *loaderPrivate, enum dri_loader_cap cap);
> +
> +    /**
> +     * Flush swap buffers
> +     *
> +     * Make sure any outstanding swap buffers have been submitted to the
> +     * device.
> +     *
> +     * \param driDrawable    Drawable whose swaps need to be flushed
> +     * \param loaderPrivate  Loader's private data that was previously passed
> +     *                       into __DRIdri2ExtensionRec::createNewDrawable
> +     *
> +     * \since 3
> +     */
> +    void (*flushSwapBuffers)(__DRIdrawable *driDrawable, void *loaderPrivate);
>  };
>
Looks good
Reviewed-by: Emil Velikov <emil.velikov at collabora.com>

>  /**
> diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c
> index f888abd..60ea611 100644
> --- a/src/gallium/state_trackers/dri/dri_screen.c
> +++ b/src/gallium/state_trackers/dri/dri_screen.c
> @@ -96,7 +96,8 @@ dri_loader_get_cap(struct dri_screen *screen, enum dri_loader_cap cap)
>     if (dri2_loader && dri2_loader->base.version >= 4)
>        return dri2_loader->getCapability(screen->sPriv->loaderPrivate, cap);
>
> -   if (image_loader && image_loader->base.version >= 2)
> +   if (image_loader && image_loader->base.version >= 2 &&
> +       image_loader->getCapability)
I have a patch for this hunk which I'll push in a moment.

-Emil


More information about the mesa-dev mailing list