> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-boun...@lists.freedesktop.org] On Behalf
> Of Christian König
> Sent: Thursday, October 12, 2017 6:20 AM
> To: Grodzovsky, Andrey; amd-gfx@lists.freedesktop.org
> Subject: [PATCH] drm/amdgpu: minor CS optimization
> 
> From: Christian König <christian.koe...@amd.com>
> 
> We only need to loop over all IBs for old UVD/VCE command stream
> patching.
> 
> Signed-off-by: Christian König <christian.koe...@amd.com>

Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 37 +++++++++++++++++----
> -------------
>  1 file changed, 19 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index 2ae5d52..20e2a71 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -855,36 +855,37 @@ static int amdgpu_cs_ib_vm_chunk(struct
> amdgpu_device *adev,
>       struct amdgpu_fpriv *fpriv = p->filp->driver_priv;
>       struct amdgpu_vm *vm = &fpriv->vm;
>       struct amdgpu_ring *ring = p->job->ring;
> -     int i, j, r;
> -
> -     for (i = 0, j = 0; i < p->nchunks && j < p->job->num_ibs; i++) {
> -
> -             struct amdgpu_cs_chunk *chunk;
> -             struct amdgpu_ib *ib;
> -             struct drm_amdgpu_cs_chunk_ib *chunk_ib;
> -
> -             chunk = &p->chunks[i];
> -             ib = &p->job->ibs[j];
> -             chunk_ib = (struct drm_amdgpu_cs_chunk_ib *)chunk-
> >kdata;
> +     int r;
> 
> -             if (chunk->chunk_id != AMDGPU_CHUNK_ID_IB)
> -                     continue;
> +     /* Only for UVD/VCE VM emulation */
> +     if (p->job->ring->funcs->parse_cs) {
> +             unsigned i, j;
> 
> -             if (p->job->ring->funcs->parse_cs) {
> +             for (i = 0, j = 0; i < p->nchunks && j < p->job->num_ibs; i++) {
> +                     struct drm_amdgpu_cs_chunk_ib *chunk_ib;
>                       struct amdgpu_bo_va_mapping *m;
>                       struct amdgpu_bo *aobj = NULL;
> +                     struct amdgpu_cs_chunk *chunk;
> +                     struct amdgpu_ib *ib;
>                       uint64_t offset;
>                       uint8_t *kptr;
> 
> +                     chunk = &p->chunks[i];
> +                     ib = &p->job->ibs[j];
> +                     chunk_ib = chunk->kdata;
> +
> +                     if (chunk->chunk_id != AMDGPU_CHUNK_ID_IB)
> +                             continue;
> +
>                       r = amdgpu_cs_find_mapping(p, chunk_ib->va_start,
> -                                     &aobj, &m);
> +                                                &aobj, &m);
>                       if (r) {
>                               DRM_ERROR("IB va_start is invalid\n");
>                               return r;
>                       }
> 
>                       if ((chunk_ib->va_start + chunk_ib->ib_bytes) >
> -                             (m->last + 1) * AMDGPU_GPU_PAGE_SIZE) {
> +                         (m->last + 1) * AMDGPU_GPU_PAGE_SIZE) {
>                               DRM_ERROR("IB va_start+ib_bytes is
> invalid\n");
>                               return -EINVAL;
>                       }
> @@ -901,12 +902,12 @@ static int amdgpu_cs_ib_vm_chunk(struct
> amdgpu_device *adev,
>                       memcpy(ib->ptr, kptr, chunk_ib->ib_bytes);
>                       amdgpu_bo_kunmap(aobj);
> 
> -                     /* Only for UVD/VCE VM emulation */
>                       r = amdgpu_ring_parse_cs(ring, p, j);
>                       if (r)
>                               return r;
> +
> +                     j++;
>               }
> -             j++;
>       }
> 
>       if (p->job->vm) {
> --
> 2.7.4
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to