[PATCH 1/2] Add radeon_get_pixmap_tiling_flags helper
Alex Deucher
alexdeucher at gmail.com
Thu Apr 2 06:59:01 PDT 2015
On Wed, Apr 1, 2015 at 9:36 PM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
For the series:
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> src/radeon_bo_helper.c | 33 +++++++++++++++++++++++++++++++++
> src/radeon_bo_helper.h | 3 +++
> 2 files changed, 36 insertions(+)
>
> diff --git a/src/radeon_bo_helper.c b/src/radeon_bo_helper.c
> index adf6599..ebbb192 100644
> --- a/src/radeon_bo_helper.c
> +++ b/src/radeon_bo_helper.c
> @@ -229,8 +229,16 @@ Bool radeon_get_pixmap_handle(PixmapPtr pixmap, uint32_t *handle)
> r = drmPrimeFDToHandle(info->dri2.drm_fd, fd, &priv->handle);
> close(fd);
> if (r == 0) {
> + struct drm_radeon_gem_set_tiling args = { .handle = priv->handle };
> +
> priv->handle_valid = TRUE;
> *handle = priv->handle;
> +
> + if (drmCommandWriteRead(info->dri2.drm_fd,
> + DRM_RADEON_GEM_GET_TILING, &args,
> + sizeof(args)) == 0)
> + priv->tiling_flags = args.tiling_flags;
> +
> return TRUE;
> }
> }
> @@ -239,6 +247,31 @@ Bool radeon_get_pixmap_handle(PixmapPtr pixmap, uint32_t *handle)
> return FALSE;
> }
>
> +uint32_t radeon_get_pixmap_tiling_flags(PixmapPtr pPix)
> +{
> +#ifdef USE_GLAMOR
> + RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(pPix->drawable.pScreen));
> +
> + if (info->use_glamor) {
> + struct radeon_pixmap *priv = radeon_get_pixmap_private(pPix);
> +
> + if (!priv || (!priv->bo && !priv->handle_valid)) {
> + uint32_t handle;
> +
> + radeon_get_pixmap_handle(pPix, &handle);
> + priv = radeon_get_pixmap_private(pPix);
> + }
> +
> + return priv ? priv->tiling_flags : 0;
> + } else
> +#endif
> + {
> + struct radeon_exa_pixmap_priv *driver_priv;
> + driver_priv = exaGetPixmapDriverPrivate(pPix);
> + return driver_priv ? driver_priv->tiling_flags : 0;
> + }
> +}
> +
> #ifdef RADEON_PIXMAP_SHARING
>
> Bool radeon_share_pixmap_backing(struct radeon_bo *bo, void **handle_p)
> diff --git a/src/radeon_bo_helper.h b/src/radeon_bo_helper.h
> index 89ad4be..d4a4ee0 100644
> --- a/src/radeon_bo_helper.h
> +++ b/src/radeon_bo_helper.h
> @@ -31,6 +31,9 @@ radeon_alloc_pixmap_bo(ScrnInfoPtr pScrn, int width, int height, int depth,
> extern Bool
> radeon_get_pixmap_handle(PixmapPtr pixmap, uint32_t *handle);
>
> +extern uint32_t
> +radeon_get_pixmap_tiling_flags(PixmapPtr pPix);
> +
> extern Bool
> radeon_share_pixmap_backing(struct radeon_bo *bo, void **handle_p);
>
> --
> 2.1.4
>
> _______________________________________________
> xorg-driver-ati mailing list
> xorg-driver-ati at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-driver-ati
More information about the xorg-driver-ati
mailing list