drm/amdgpu/vce: set the priority for each ring
VCE has multiple rings. Set the proper priority level for each ring while initializing. Signed-off-by: Satyajit Sahu <satyajit.sahu@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
a0a2f7bb22
commit
080e613c74
|
@ -1167,3 +1167,17 @@ error:
|
|||
amdgpu_bo_free_kernel(&bo, NULL, NULL);
|
||||
return r;
|
||||
}
|
||||
|
||||
enum amdgpu_ring_priority_level amdgpu_vce_get_ring_prio(int ring)
|
||||
{
|
||||
switch(ring) {
|
||||
case 0:
|
||||
return AMDGPU_RING_PRIO_0;
|
||||
case 1:
|
||||
return AMDGPU_RING_PRIO_1;
|
||||
case 2:
|
||||
return AMDGPU_RING_PRIO_2;
|
||||
default:
|
||||
return AMDGPU_RING_PRIO_0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,5 +71,6 @@ void amdgpu_vce_ring_begin_use(struct amdgpu_ring *ring);
|
|||
void amdgpu_vce_ring_end_use(struct amdgpu_ring *ring);
|
||||
unsigned amdgpu_vce_ring_get_emit_ib_size(struct amdgpu_ring *ring);
|
||||
unsigned amdgpu_vce_ring_get_dma_frame_size(struct amdgpu_ring *ring);
|
||||
enum amdgpu_ring_priority_level amdgpu_vce_get_ring_prio(int ring);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -431,10 +431,12 @@ static int vce_v2_0_sw_init(void *handle)
|
|||
return r;
|
||||
|
||||
for (i = 0; i < adev->vce.num_rings; i++) {
|
||||
enum amdgpu_ring_priority_level hw_prio = amdgpu_vce_get_ring_prio(i);
|
||||
|
||||
ring = &adev->vce.ring[i];
|
||||
sprintf(ring->name, "vce%d", i);
|
||||
r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
|
||||
AMDGPU_RING_PRIO_DEFAULT, NULL);
|
||||
hw_prio, NULL);
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -440,10 +440,12 @@ static int vce_v3_0_sw_init(void *handle)
|
|||
return r;
|
||||
|
||||
for (i = 0; i < adev->vce.num_rings; i++) {
|
||||
enum amdgpu_ring_priority_level hw_prio = amdgpu_vce_get_ring_prio(i);
|
||||
|
||||
ring = &adev->vce.ring[i];
|
||||
sprintf(ring->name, "vce%d", i);
|
||||
r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
|
||||
AMDGPU_RING_PRIO_DEFAULT, NULL);
|
||||
hw_prio, NULL);
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -463,6 +463,8 @@ static int vce_v4_0_sw_init(void *handle)
|
|||
}
|
||||
|
||||
for (i = 0; i < adev->vce.num_rings; i++) {
|
||||
enum amdgpu_ring_priority_level hw_prio = amdgpu_vce_get_ring_prio(i);
|
||||
|
||||
ring = &adev->vce.ring[i];
|
||||
sprintf(ring->name, "vce%d", i);
|
||||
if (amdgpu_sriov_vf(adev)) {
|
||||
|
@ -478,7 +480,7 @@ static int vce_v4_0_sw_init(void *handle)
|
|||
ring->doorbell_index = adev->doorbell_index.uvd_vce.vce_ring2_3 * 2 + 1;
|
||||
}
|
||||
r = amdgpu_ring_init(adev, ring, 512, &adev->vce.irq, 0,
|
||||
AMDGPU_RING_PRIO_DEFAULT, NULL);
|
||||
hw_prio, NULL);
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue