[Mesa-dev] [PATCH 1/2] radeon/winsys: add uvd ring support to winsys v2
Christian König
deathsimple at vodafone.de
Thu Apr 11 07:35:24 PDT 2013
Am 11.04.2013 15:54, schrieb Andreas Boll:
> 2013/4/11 Christian König <deathsimple at vodafone.de>
>
>> 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>
>> ---
>> 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) {
>>
> This should be >= 32
> See [1]
>
> Thanks,
> Andreas.
>
> [1]
> http://cgit.freedesktop.org/~agd5f/linux/commit/?h=drm-next-3.10-wip&id=1bcdaf0598685592844698a4f77f66537efea139
Ah, yes indeed. Thanks, do I have your reviewed-by with that fixed?
Christian.
>
>> + 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