Mesa (main): radeonsi/vcn: use calculated max hierarchy depth for hevc enc
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jul 14 14:38:53 UTC 2022
Module: Mesa
Branch: main
Commit: 3962555db89a12ecffd0d6a6259d96b24c60779e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3962555db89a12ecffd0d6a6259d96b24c60779e
Author: Boyuan Zhang <boyuan.zhang at amd.com>
Date: Tue Jul 12 12:11:41 2022 -0400
radeonsi/vcn: use calculated max hierarchy depth for hevc enc
Certain player has hard coded max_transform_hierarchy_depth_inter and
max_transform_hierarchy_depth_intra values set through VA-API, which
doesn't work on radeon HW. Until properly fixing it on player side,
temporarily adding this workaround to use calculated values instead.
Signed-off-by: Boyuan Zhang <boyuan.zhang at amd.com>
Reviewed-by: Ruijing Dong <ruijing.dong at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17489>
---
src/gallium/drivers/radeonsi/radeon_vcn_enc.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c
index 0ae9b9ce881..0e608adf721 100644
--- a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c
+++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c
@@ -142,10 +142,17 @@ static void radeon_vcn_enc_get_param(struct radeon_encoder *enc, struct pipe_pic
pic->seq.log2_min_transform_block_size_minus2;
enc->enc_pic.log2_diff_max_min_transform_block_size =
pic->seq.log2_diff_max_min_transform_block_size;
+
+ /* To fix incorrect hardcoded values set by player
+ * log2_diff_max_min_luma_coding_block_size = log2(64) - (log2_min_luma_coding_block_size_minus3 + 3)
+ * max_transform_hierarchy_depth_inter = log2_diff_max_min_luma_coding_block_size + 1
+ * max_transform_hierarchy_depth_intra = log2_diff_max_min_luma_coding_block_size + 1
+ */
enc->enc_pic.max_transform_hierarchy_depth_inter =
- pic->seq.max_transform_hierarchy_depth_inter;
+ 6 - (pic->seq.log2_min_luma_coding_block_size_minus3 + 3) + 1;
enc->enc_pic.max_transform_hierarchy_depth_intra =
- pic->seq.max_transform_hierarchy_depth_intra;
+ enc->enc_pic.max_transform_hierarchy_depth_inter;
+
enc->enc_pic.log2_parallel_merge_level_minus2 = pic->pic.log2_parallel_merge_level_minus2;
enc->enc_pic.bit_depth_luma_minus8 = pic->seq.bit_depth_luma_minus8;
enc->enc_pic.bit_depth_chroma_minus8 = pic->seq.bit_depth_chroma_minus8;
More information about the mesa-commit
mailing list