mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 12:40:09 +01:00
radv/video: Always end ref pic modification list
The app-provided arrays should always end with IDC_END, but when
overriding we need to end the list with IDC_END as well.
Fixes: 2e21eec921 ("radv/video: Fix num_ref_idx_l{0,1} related overrides")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/14436
Reviewed-by: David Rosca <david.rosca@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38858>
This commit is contained in:
parent
69a9ed4d9e
commit
72b43c0595
1 changed files with 10 additions and 2 deletions
|
|
@ -1131,8 +1131,9 @@ radv_enc_slice_header(struct radv_cmd_buffer *cmd_buffer, const VkVideoEncodeInf
|
|||
|
||||
radv_enc_code_fixed_bits(cmd_buffer, ref_lists->flags.ref_pic_list_modification_flag_l0, 1);
|
||||
if (ref_lists->flags.ref_pic_list_modification_flag_l0) {
|
||||
const StdVideoEncodeH264RefListModEntry *entry = NULL;
|
||||
for (unsigned op = 0; op < MIN2(ref_lists->refList0ModOpCount, num_active_l0_refs_minus1 + 1); op++) {
|
||||
const StdVideoEncodeH264RefListModEntry *entry = &ref_lists->pRefList0ModOperations[op];
|
||||
entry = &ref_lists->pRefList0ModOperations[op];
|
||||
|
||||
radv_enc_code_ue(cmd_buffer, entry->modification_of_pic_nums_idc);
|
||||
if (entry->modification_of_pic_nums_idc ==
|
||||
|
|
@ -1142,13 +1143,17 @@ radv_enc_slice_header(struct radv_cmd_buffer *cmd_buffer, const VkVideoEncodeInf
|
|||
else if (entry->modification_of_pic_nums_idc == STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM)
|
||||
radv_enc_code_ue(cmd_buffer, entry->long_term_pic_num);
|
||||
}
|
||||
|
||||
if (entry && entry->modification_of_pic_nums_idc != STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END)
|
||||
radv_enc_code_ue(cmd_buffer, STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END);
|
||||
}
|
||||
|
||||
if (pic->primary_pic_type == STD_VIDEO_H264_PICTURE_TYPE_B) {
|
||||
radv_enc_code_fixed_bits(cmd_buffer, ref_lists->flags.ref_pic_list_modification_flag_l1, 1);
|
||||
if (ref_lists->flags.ref_pic_list_modification_flag_l1) {
|
||||
const StdVideoEncodeH264RefListModEntry *entry = NULL;
|
||||
for (unsigned op = 0; op < MIN2(ref_lists->refList1ModOpCount, /* num_active_l1_refs_minus1 + */ 1); op++) {
|
||||
const StdVideoEncodeH264RefListModEntry *entry = &ref_lists->pRefList1ModOperations[op];
|
||||
entry = &ref_lists->pRefList1ModOperations[op];
|
||||
|
||||
radv_enc_code_ue(cmd_buffer, entry->modification_of_pic_nums_idc);
|
||||
if (entry->modification_of_pic_nums_idc ==
|
||||
|
|
@ -1158,6 +1163,9 @@ radv_enc_slice_header(struct radv_cmd_buffer *cmd_buffer, const VkVideoEncodeInf
|
|||
else if (entry->modification_of_pic_nums_idc == STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM)
|
||||
radv_enc_code_ue(cmd_buffer, entry->long_term_pic_num);
|
||||
}
|
||||
|
||||
if (entry && entry->modification_of_pic_nums_idc != STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END)
|
||||
radv_enc_code_ue(cmd_buffer, STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue