diff options
| author | James Zhu <James.Zhu@amd.com> | 2020-11-18 09:08:03 -0500 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2020-11-24 12:03:58 -0500 | 
| commit | 9b84ec8e43d6ca6c356705f7b02b51a2d8641d01 (patch) | |
| tree | 1e08951bb8b8628460096e668c40e8fe5ce37373 /drivers/gpu/drm/amd/amdgpu | |
| parent | 2261229cef728da98355e63a6068901640acd504 (diff) | |
drm/amdgpu/vcn: refactor dec message functions
refactor dec message functions to add dec software ring support.
Signed-off-by: James Zhu <James.Zhu@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 30 | 
1 files changed, 19 insertions, 11 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c index 7e19a6656715..32251dbf4bd7 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c @@ -510,16 +510,16 @@ err:  }  static int amdgpu_vcn_dec_get_create_msg(struct amdgpu_ring *ring, uint32_t handle, -			      struct dma_fence **fence) +					 struct amdgpu_bo **bo)  {  	struct amdgpu_device *adev = ring->adev; -	struct amdgpu_bo *bo = NULL;  	uint32_t *msg;  	int r, i; +	*bo = NULL;  	r = amdgpu_bo_create_reserved(adev, 1024, PAGE_SIZE,  				      AMDGPU_GEM_DOMAIN_VRAM, -				      &bo, NULL, (void **)&msg); +				      bo, NULL, (void **)&msg);  	if (r)  		return r; @@ -540,20 +540,20 @@ static int amdgpu_vcn_dec_get_create_msg(struct amdgpu_ring *ring, uint32_t hand  	for (i = 14; i < 1024; ++i)  		msg[i] = cpu_to_le32(0x0); -	return amdgpu_vcn_dec_send_msg(ring, bo, fence); +	return 0;  }  static int amdgpu_vcn_dec_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle, -			       struct dma_fence **fence) +					  struct amdgpu_bo **bo)  {  	struct amdgpu_device *adev = ring->adev; -	struct amdgpu_bo *bo = NULL;  	uint32_t *msg;  	int r, i; +	*bo = NULL;  	r = amdgpu_bo_create_reserved(adev, 1024, PAGE_SIZE,  				      AMDGPU_GEM_DOMAIN_VRAM, -				      &bo, NULL, (void **)&msg); +				      bo, NULL, (void **)&msg);  	if (r)  		return r; @@ -566,19 +566,27 @@ static int amdgpu_vcn_dec_get_destroy_msg(struct amdgpu_ring *ring, uint32_t han  	for (i = 6; i < 1024; ++i)  		msg[i] = cpu_to_le32(0x0); -	return amdgpu_vcn_dec_send_msg(ring, bo, fence); +	return 0;  }  int amdgpu_vcn_dec_ring_test_ib(struct amdgpu_ring *ring, long timeout)  { -	struct dma_fence *fence; +	struct dma_fence *fence = NULL; +	struct amdgpu_bo *bo;  	long r; -	r = amdgpu_vcn_dec_get_create_msg(ring, 1, NULL); +	r = amdgpu_vcn_dec_get_create_msg(ring, 1, &bo); +	if (r) +		goto error; + +	r = amdgpu_vcn_dec_send_msg(ring, bo, NULL); +	if (r) +		goto error; +	r = amdgpu_vcn_dec_get_destroy_msg(ring, 1, &bo);  	if (r)  		goto error; -	r = amdgpu_vcn_dec_get_destroy_msg(ring, 1, &fence); +	r = amdgpu_vcn_dec_send_msg(ring, bo, &fence);  	if (r)  		goto error;  | 
