Add a fence_wait before destroying dpb buffer in dpg_unref_list to make sure
previous decode job has been done. (for DPB_DYNAMIC_TIER_2)
Signed-off-by: Boyuan Zhang <boyuan.zhang@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Reviewed-by: Sajeesh Sidharthan <sajeesh.sidharthan@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20805>
}
list_for_each_entry_safe(struct rvcn_dec_dynamic_dpb_t2, d, &dec->dpb_unref_list, list) {
+ dec->ws->fence_wait(dec->ws, dec->prev_fence, PIPE_DEFAULT_DECODER_FEEDBACK_TIMEOUT_NS);
list_del(&d->list);
si_vid_destroy_buffer(&d->dpb);
FREE(d);
dec->send_cmd(dec, target, picture);
flush(dec, PIPE_FLUSH_ASYNC, picture->fence);
+ dec->prev_fence = *picture->fence;
next_buffer(dec);
}
struct radeon_winsys_ctx **jctx;
unsigned cb_idx;
unsigned njctx;
+ struct pipe_fence_handle *prev_fence;
};
void send_cmd_dec(struct radeon_decoder *dec, struct pipe_video_buffer *target,