There are multiple rings available in VCN encode. Map each ring to different priority. Signed-off-by: Satyajit Sahu <satyajit.sahu@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 14 ++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c index 6780df0fb265..14075f2c33f0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c @@ -951,3 +951,17 @@ int amdgpu_vcn_enc_ring_test_ib(struct amdgpu_ring *ring, long timeout) return r; } + +enum vcn_enc_ring_priority get_vcn_enc_ring_prio(int index) +{ + switch(index) { + case AMDGPU_VCN_ENC_GENERAL_PURPOSE: + return AMDGPU_VCN_ENC_PRIO_NORMAL; + case AMDGPU_VCN_ENC_LOW_LATENCY: + return AMDGPU_VCN_ENC_PRIO_HIGH; + case AMDGPU_VCN_ENC_REALTIME: + return AMDGPU_VCN_ENC_PRIO_VERY_HIGH; + default: + return AMDGPU_VCN_ENC_PRIO_NORMAL; + } +} diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h index d74c62b49795..14dcf23fcf0a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h @@ -290,6 +290,19 @@ enum vcn_ring_type { VCN_UNIFIED_RING, }; +enum vcn_enc_ring_priority { + AMDGPU_VCN_ENC_PRIO_NORMAL = 1, + AMDGPU_VCN_ENC_PRIO_HIGH, + AMDGPU_VCN_ENC_PRIO_VERY_HIGH, + AMDGPU_VCN_ENC_PRIO_MAX +}; + +enum vcn_enc_ring_type { + AMDGPU_VCN_ENC_GENERAL_PURPOSE, + AMDGPU_VCN_ENC_LOW_LATENCY, + AMDGPU_VCN_ENC_REALTIME +}; + int amdgpu_vcn_sw_init(struct amdgpu_device *adev); int amdgpu_vcn_sw_fini(struct amdgpu_device *adev); int amdgpu_vcn_suspend(struct amdgpu_device *adev); @@ -307,5 +320,6 @@ int amdgpu_vcn_dec_sw_ring_test_ib(struct amdgpu_ring *ring, long timeout); int amdgpu_vcn_enc_ring_test_ring(struct amdgpu_ring *ring); int amdgpu_vcn_enc_ring_test_ib(struct amdgpu_ring *ring, long timeout); +enum vcn_enc_ring_priority get_vcn_enc_ring_prio(int index); #endif -- 2.25.1