Re: [PATCH 2/2] drm/amdpgu: Use VRAM domain in UVD IB test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 03.09.21 um 09:15 schrieb Pan, Xinhui:

在 2021/9/3 15:04,“Koenig, Christian”<Christian.Koenig@xxxxxxx> 写入:

     Am 03.09.21 um 08:49 schrieb Pan, Xinhui:
     > Like vce/vcn does, visible VRAM is ok for ib test.
     > And in ib test stage, VRAM is sufficient.
NAK, that won't work for older hw generations (e.g. SI, maybe CIK as
     well) where the IBs must be in a specific GTT hardware window.
Christian. Not has older HW on hand for test.
But the uvd code says below. Looks like IBs should be in specific VRAM range[0 - 256MB]?

Well, it's a long time that I locked into this.

The old UVD hardware has multiple 256MiB "windows". One is for message and feedback buffers which *must* be in VRAM and another one is for the DPB which should be in VRAM.

The IB on the other hand always had to be in GTT (except for 15+ year old AGP systems where it should be in VRAM as well for coherency reasons).

Could be that my memory is failing me and on SI/CIK both GTT and VRAM would work. But key point is don't touch this without extensive testing, it's really old stuff and was extremely painful to get working everywhere.

Christian.

         if (!ring->adev->uvd.address_64_bit) {
                 struct ttm_operation_ctx ctx = { true, false };

                 amdgpu_bo_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_VRAM);
                 amdgpu_uvd_force_into_uvd_segment(bo);
                 r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
                 if (r)
                         goto err;
         }
>
     > Signed-off-by: xinhui pan <xinhui.pan@xxxxxxx>
     > ---
     >   drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 4 ++--
     >   1 file changed, 2 insertions(+), 2 deletions(-)
     >
     > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
     > index d451c359606a..1c099b79d12c 100644
     > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
     > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
     > @@ -1178,7 +1178,7 @@ int amdgpu_uvd_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
     >   	int r, i;
     >
     >   	r = amdgpu_bo_create_reserved(adev, 1024, PAGE_SIZE,
     > -				      AMDGPU_GEM_DOMAIN_GTT,
     > +				      AMDGPU_GEM_DOMAIN_VRAM,
     >   				      &bo, NULL, (void **)&msg);
     >   	if (r)
     >   		return r;
     > @@ -1210,7 +1210,7 @@ int amdgpu_uvd_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
     >   	int r, i;
     >
     >   	r = amdgpu_bo_create_reserved(adev, 1024, PAGE_SIZE,
     > -				      AMDGPU_GEM_DOMAIN_GTT,
     > +				      AMDGPU_GEM_DOMAIN_VRAM,
     >   				      &bo, NULL, (void **)&msg);
     >   	if (r)
     >   		return r;




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux