From f64f08a9e006e829db352b8d2878fd346e72bb10 Mon Sep 17 00:00:00 2001 From: Benjamin Cheng Date: Mon, 21 Aug 2023 09:58:15 -0400 Subject: [PATCH] anv/video: send h264 scaling list in raster order ITU spec defines the H264 ScalingList{4x4,8x8} in zig-zag order, but Intel HW wants raster order. Reviewed-by: Lynne Part-of: --- src/intel/vulkan/genX_video.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/intel/vulkan/genX_video.c b/src/intel/vulkan/genX_video.c index f00d5d6..b01d2cf 100644 --- a/src/intel/vulkan/genX_video.c +++ b/src/intel/vulkan/genX_video.c @@ -26,6 +26,8 @@ #include "genxml/gen_macros.h" #include "genxml/genX_pack.h" +#include "util/vl_zscan_data.h" + void genX(CmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR *pBeginInfo) @@ -1029,27 +1031,27 @@ anv_h264_decode_video(struct anv_cmd_buffer *cmd_buffer, qm.AVC = AVC_4x4_Intra_MATRIX; for (unsigned m = 0; m < 3; m++) for (unsigned q = 0; q < 16; q++) - qm.ForwardQuantizerMatrix[m * 16 + q] = scaling_lists.ScalingList4x4[m][q]; + qm.ForwardQuantizerMatrix[m * 16 + vl_zscan_normal_16[q]] = scaling_lists.ScalingList4x4[m][q]; } anv_batch_emit(&cmd_buffer->batch, GENX(MFX_QM_STATE), qm) { qm.DWordLength = 16; qm.AVC = AVC_4x4_Inter_MATRIX; for (unsigned m = 0; m < 3; m++) for (unsigned q = 0; q < 16; q++) - qm.ForwardQuantizerMatrix[m * 16 + q] = scaling_lists.ScalingList4x4[m + 3][q]; + qm.ForwardQuantizerMatrix[m * 16 + vl_zscan_normal_16[q]] = scaling_lists.ScalingList4x4[m + 3][q]; } if (pps->flags.transform_8x8_mode_flag) { anv_batch_emit(&cmd_buffer->batch, GENX(MFX_QM_STATE), qm) { qm.DWordLength = 16; qm.AVC = AVC_8x8_Intra_MATRIX; for (unsigned q = 0; q < 64; q++) - qm.ForwardQuantizerMatrix[q] = scaling_lists.ScalingList8x8[0][q]; + qm.ForwardQuantizerMatrix[vl_zscan_normal[q]] = scaling_lists.ScalingList8x8[0][q]; } anv_batch_emit(&cmd_buffer->batch, GENX(MFX_QM_STATE), qm) { qm.DWordLength = 16; qm.AVC = AVC_8x8_Inter_MATRIX; for (unsigned q = 0; q < 64; q++) - qm.ForwardQuantizerMatrix[q] = scaling_lists.ScalingList8x8[1][q]; + qm.ForwardQuantizerMatrix[vl_zscan_normal[q]] = scaling_lists.ScalingList8x8[1][q]; } } -- 2.7.4