[Mesa-dev] [PATCH 1/2] radeon/winsys: add uvd ring support to winsys v2
Alex Deucher
alexdeucher at gmail.com
Thu Apr 11 06:47:39 PDT 2013
On Thu, Apr 11, 2013 at 9:39 AM, Christian König
<deathsimple at vodafone.de> wrote:
> From: Christian König <christian.koenig at amd.com>
>
> Separated from UVD patch for clarity.
>
> v2: sync with next tree for 3.10
>
> http://cgit.freedesktop.org/~agd5f/linux/log/?h=drm-next-3.10-wip
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
For the series:
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 11 +++++++++++
> src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 17 +++++++++++++++++
> src/gallium/winsys/radeon/drm/radeon_winsys.h | 3 +++
> 3 files changed, 31 insertions(+)
>
> diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> index aa7e295..720e086 100644
> --- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> +++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
> @@ -94,6 +94,10 @@
> #define RADEON_CS_RING_DMA 2
> #endif
>
> +#ifndef RADEON_CS_RING_UVD
> +#define RADEON_CS_RING_UVD 3
> +#endif
> +
> #ifndef RADEON_CS_END_OF_FRAME
> #define RADEON_CS_END_OF_FRAME 0x04
> #endif
> @@ -490,6 +494,13 @@ static void radeon_drm_cs_flush(struct radeon_winsys_cs *rcs, unsigned flags)
> cs->cst->flags[0] |= RADEON_CS_USE_VM;
> }
> break;
> +
> + case RING_UVD:
> + cs->cst->flags[0] = 0;
> + cs->cst->flags[1] = RADEON_CS_RING_UVD;
> + cs->cst->cs.num_chunks = 3;
> + break;
> +
> default:
> case RING_GFX:
> cs->cst->flags[0] = 0;
> diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
> index d1f7643..f32626b 100644
> --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
> +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
> @@ -90,6 +90,14 @@
> #define RADEON_INFO_TIMESTAMP 0x11
> #endif
>
> +#ifndef RADEON_INFO_RING_WORKING
> +#define RADEON_INFO_RING_WORKING 0x15
> +#endif
> +
> +#ifndef RADEON_CS_RING_UVD
> +#define RADEON_CS_RING_UVD 3
> +#endif
> +
> static struct util_hash_table *fd_tab = NULL;
>
> /* Enable/disable feature access for one command stream.
> @@ -323,6 +331,15 @@ static boolean do_winsys_init(struct radeon_drm_winsys *ws)
> ws->info.r600_has_dma = TRUE;
> }
>
> + /* Check for UVD */
> + ws->info.has_uvd = FALSE;
> + if (ws->info.drm_minor >= 31) {
> + uint32_t value = RADEON_CS_RING_UVD;
> + if (radeon_get_drm_value(ws->fd, RADEON_INFO_RING_WORKING,
> + "UVD Ring working", &value))
> + ws->info.has_uvd = value;
> + }
> +
> /* Get GEM info. */
> retval = drmCommandWriteRead(ws->fd, DRM_RADEON_GEM_INFO,
> &gem_info, sizeof(gem_info));
> diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h b/src/gallium/winsys/radeon/drm/radeon_winsys.h
> index 36f1f8e..e343188 100644
> --- a/src/gallium/winsys/radeon/drm/radeon_winsys.h
> +++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h
> @@ -142,6 +142,7 @@ enum chip_class {
> enum ring_type {
> RING_GFX = 0,
> RING_DMA,
> + RING_UVD,
> RING_LAST,
> };
>
> @@ -170,6 +171,8 @@ struct radeon_info {
> uint32_t drm_minor;
> uint32_t drm_patchlevel;
>
> + boolean has_uvd;
> +
> uint32_t r300_num_gb_pipes;
> uint32_t r300_num_z_pipes;
>
> --
> 1.7.9.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list