[Mesa-dev] [PATCH 1/2] radeon/winsys: add uvd ring support to winsys v2

Andreas Boll andreas.boll.dev at gmail.com
Thu Apr 11 07:51:53 PDT 2013


2013/4/11 Christian König <deathsimple at vodafone.de>

> 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<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=**1bcdaf0598685592844698a4f77f66**537efea139<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.
>
>
Yes.

Looking forward to see rv770 support ;-)

Andreas.


>
>>  +       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<http://lists.freedesktop.org/mailman/listinfo/mesa-dev>
>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130411/fb79024e/attachment.html>


More information about the mesa-dev mailing list