From 2130df7c2a2cc2cd0544602700cc4f4804629b5c Mon Sep 17 00:00:00 2001 From: David Rosca Date: Thu, 22 Jan 2026 18:01:17 +0100 Subject: [PATCH] radeonsi/video: Drop offsets parameter for si_vid_resize_buffer Not used anymore. Reviewed-by: Ruijing Dong Part-of: --- src/gallium/drivers/radeonsi/radeon_uvd_enc.c | 2 +- src/gallium/drivers/radeonsi/radeon_vce.c | 2 +- src/gallium/drivers/radeonsi/radeon_vcn_enc.c | 4 +-- src/gallium/drivers/radeonsi/si_video.c | 34 ++++--------------- src/gallium/drivers/radeonsi/si_video.h | 10 +----- src/gallium/drivers/radeonsi/si_video_dec.c | 2 +- 6 files changed, 13 insertions(+), 41 deletions(-) diff --git a/src/gallium/drivers/radeonsi/radeon_uvd_enc.c b/src/gallium/drivers/radeonsi/radeon_uvd_enc.c index 268b669ce93..affb3c4346a 100644 --- a/src/gallium/drivers/radeonsi/radeon_uvd_enc.c +++ b/src/gallium/drivers/radeonsi/radeon_uvd_enc.c @@ -933,7 +933,7 @@ static void radeon_uvd_enc_begin_frame(struct pipe_video_codec *encoder, RVID_ERR("Can't create DPB buffer.\n"); return; } - } else if (!si_vid_resize_buffer(enc->base.context, &enc->dpb, dpb_size, NULL)) { + } else if (!si_vid_resize_buffer(enc->base.context, &enc->dpb, dpb_size)) { RVID_ERR("Can't resize DPB buffer.\n"); return; } diff --git a/src/gallium/drivers/radeonsi/radeon_vce.c b/src/gallium/drivers/radeonsi/radeon_vce.c index 9b01c4d32d8..c35bf433d22 100644 --- a/src/gallium/drivers/radeonsi/radeon_vce.c +++ b/src/gallium/drivers/radeonsi/radeon_vce.c @@ -803,7 +803,7 @@ static void rvce_begin_frame(struct pipe_video_codec *encoder, struct pipe_video RVID_ERR("Can't create DPB buffer.\n"); return; } - } else if (!si_vid_resize_buffer(enc->base.context, &enc->dpb, dpb_size, NULL)) { + } else if (!si_vid_resize_buffer(enc->base.context, &enc->dpb, dpb_size)) { RVID_ERR("Can't resize DPB buffer.\n"); return; } diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c index 75daf13c646..66724e2604d 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c @@ -1627,12 +1627,12 @@ static void radeon_enc_begin_frame(struct pipe_video_codec *encoder, if (dpb_slots > enc->dpb_slots) { setup_dpb(enc, dpb_slots); - if (!si_vid_resize_buffer(enc->base.context, &enc->dpb, enc->dpb_size, NULL)) { + if (!si_vid_resize_buffer(enc->base.context, &enc->dpb, enc->dpb_size)) { RADEON_ENC_ERR("Can't resize DPB buffer.\n"); goto error; } if (sscreen->info.vcn_ip_version >= VCN_5_0_0 && enc->metadata_size && - !si_vid_resize_buffer(enc->base.context, &enc->meta, enc->metadata_size, NULL)) { + !si_vid_resize_buffer(enc->base.context, &enc->meta, enc->metadata_size)) { RADEON_ENC_ERR("Can't resize meta buffer.\n"); goto error; } diff --git a/src/gallium/drivers/radeonsi/si_video.c b/src/gallium/drivers/radeonsi/si_video.c index 3d7306c31dc..24d2110fa67 100644 --- a/src/gallium/drivers/radeonsi/si_video.c +++ b/src/gallium/drivers/radeonsi/si_video.c @@ -27,8 +27,7 @@ unsigned si_vid_alloc_stream_handle() } bool si_vid_resize_buffer(struct pipe_context *context, - struct si_resource **buf, unsigned new_size, - struct rvid_buf_offset_info *buf_ofst_info) + struct si_resource **buf, unsigned new_size) { struct si_context *sctx = (struct si_context *)context; struct si_screen *sscreen = (struct si_screen *)context->screen; @@ -51,37 +50,18 @@ bool si_vid_resize_buffer(struct pipe_context *context, if (!dst) goto error; - if (buf_ofst_info) { + memcpy(dst, src, bytes); + if (new_size > bytes) { + new_size -= bytes; + dst += bytes; memset(dst, 0, new_size); - for(int i =0; i < buf_ofst_info->num_units; i++) { - memcpy(dst, src, buf_ofst_info->old_offset); - dst += buf_ofst_info->new_offset; - src += buf_ofst_info->old_offset; - } - } else { - memcpy(dst, src, bytes); - if (new_size > bytes) { - new_size -= bytes; - dst += bytes; - memset(dst, 0, new_size); - } } ws->buffer_unmap(ws, new_buf->buf); ws->buffer_unmap(ws, old_buf->buf); } else { si_barrier_before_simple_buffer_op(sctx, 0, &new_buf->b.b, &old_buf->b.b); - if (buf_ofst_info) { - uint64_t dst_offset = 0, src_offset = 0; - for (int i = 0; i < buf_ofst_info->num_units; i++) { - si_copy_buffer(sctx, &new_buf->b.b, &old_buf->b.b, - dst_offset, src_offset, buf_ofst_info->old_offset); - dst_offset += buf_ofst_info->new_offset; - src_offset += buf_ofst_info->old_offset; - } - } else { - bytes = MIN2(new_buf->b.b.width0, old_buf->b.b.width0); - si_copy_buffer(sctx, &new_buf->b.b, &old_buf->b.b, 0, 0, bytes); - } + bytes = MIN2(new_buf->b.b.width0, old_buf->b.b.width0); + si_copy_buffer(sctx, &new_buf->b.b, &old_buf->b.b, 0, 0, bytes); context->flush(context, NULL, 0); } diff --git a/src/gallium/drivers/radeonsi/si_video.h b/src/gallium/drivers/radeonsi/si_video.h index c5b1885107d..f92d340e3ca 100644 --- a/src/gallium/drivers/radeonsi/si_video.h +++ b/src/gallium/drivers/radeonsi/si_video.h @@ -15,20 +15,12 @@ #define UVD_FW_1_66_16 ((1 << 24) | (66 << 16) | (16 << 8)) -/* video buffer offset info representation */ -struct rvid_buf_offset_info { - unsigned num_units; - unsigned old_offset; - unsigned new_offset; -}; - /* generate a stream handle */ unsigned si_vid_alloc_stream_handle(void); /* reallocate a buffer, preserving its content */ bool si_vid_resize_buffer(struct pipe_context *context, - struct si_resource **buf, unsigned new_size, - struct rvid_buf_offset_info *buf_ofst_info); + struct si_resource **buf, unsigned new_size); struct pipe_video_buffer *si_video_buffer_create(struct pipe_context *pipe, const struct pipe_video_buffer *tmpl); diff --git a/src/gallium/drivers/radeonsi/si_video_dec.c b/src/gallium/drivers/radeonsi/si_video_dec.c index 6d5d1927dd3..052cfece618 100644 --- a/src/gallium/drivers/radeonsi/si_video_dec.c +++ b/src/gallium/drivers/radeonsi/si_video_dec.c @@ -61,7 +61,7 @@ static void si_dec_decode_bitstream(struct pipe_video_codec *decoder, struct pip } si_resource_reference(&vid->bs_buffers[vid->cur_buffer], NULL); vid->bs_buffers[vid->cur_buffer] = buf; - } else if (!si_vid_resize_buffer(vid->base.context, &vid->bs_buffers[vid->cur_buffer], total_bs_size, NULL)) { + } else if (!si_vid_resize_buffer(vid->base.context, &vid->bs_buffers[vid->cur_buffer], total_bs_size)) { ERROR("Can't resize bitstream buffer!"); return; }