mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
anv/video: use vk_video_derive_h264_scaling_list
Reviewed-by: Hyunjun Ko <zzoon@igalia.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Lynne <dev@lynne.ee> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24572>
This commit is contained in:
parent
d578e4416a
commit
e921b889e3
1 changed files with 23 additions and 79 deletions
|
|
@ -1022,90 +1022,34 @@ anv_h264_decode_video(struct anv_cmd_buffer *cmd_buffer,
|
|||
avc_img.CurrentPictureFrameNumber = h264_pic_info->pStdPictureInfo->frame_num;
|
||||
}
|
||||
|
||||
if (pps->flags.pic_scaling_matrix_present_flag) {
|
||||
StdVideoH264ScalingLists scaling_lists;
|
||||
vk_video_derive_h264_scaling_list(sps, pps, &scaling_lists);
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(MFX_QM_STATE), qm) {
|
||||
qm.DWordLength = 16;
|
||||
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];
|
||||
}
|
||||
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];
|
||||
}
|
||||
if (pps->flags.transform_8x8_mode_flag) {
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(MFX_QM_STATE), qm) {
|
||||
qm.DWordLength = 16;
|
||||
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] = pps->pScalingLists->ScalingList4x4[m][q];
|
||||
qm.AVC = AVC_8x8_Intra_MATRIX;
|
||||
for (unsigned q = 0; q < 64; q++)
|
||||
qm.ForwardQuantizerMatrix[q] = scaling_lists.ScalingList8x8[0][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] = pps->pScalingLists->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] = pps->pScalingLists->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] = pps->pScalingLists->ScalingList8x8[1][q];
|
||||
}
|
||||
}
|
||||
} else if (sps->flags.seq_scaling_matrix_present_flag) {
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(MFX_QM_STATE), qm) {
|
||||
qm.DWordLength = 16;
|
||||
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] = sps->pScalingLists->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] = sps->pScalingLists->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] = sps->pScalingLists->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] = sps->pScalingLists->ScalingList8x8[1][q];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(MFX_QM_STATE), qm) {
|
||||
qm.DWordLength = 16;
|
||||
qm.AVC = AVC_4x4_Intra_MATRIX;
|
||||
for (unsigned q = 0; q < 3 * 16; q++)
|
||||
qm.ForwardQuantizerMatrix[q] = 0x10;
|
||||
}
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(MFX_QM_STATE), qm) {
|
||||
qm.DWordLength = 16;
|
||||
qm.AVC = AVC_4x4_Inter_MATRIX;
|
||||
for (unsigned q = 0; q < 3 * 16; q++)
|
||||
qm.ForwardQuantizerMatrix[q] = 0x10;
|
||||
}
|
||||
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] = 0x10;
|
||||
}
|
||||
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] = 0x10;
|
||||
}
|
||||
qm.AVC = AVC_8x8_Inter_MATRIX;
|
||||
for (unsigned q = 0; q < 64; q++)
|
||||
qm.ForwardQuantizerMatrix[q] = scaling_lists.ScalingList8x8[1][q];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue