mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-07 01:52:46 +08:00
fix[av1d]: Fix av1d ref stride error
Signed-off-by: Chandler Chen <chandler.chen@rock-chips.com> Change-Id: I6511c88a445f211c8171bfd108856e87310f8a44
This commit is contained in:

committed by
Herman Chen

parent
be2dfdbd0a
commit
31e9d148b6
@@ -2232,22 +2232,20 @@ MPP_RET vdpu383_av1d_gen_regs(void *hal, HalTaskInfo *task)
|
|||||||
regs->av1d_paras.reg68_hor_virstride = MPP_ALIGN(hor_virstride, 64) / 64;
|
regs->av1d_paras.reg68_hor_virstride = MPP_ALIGN(hor_virstride, 64) / 64;
|
||||||
fbd_offset = regs->av1d_paras.reg68_hor_virstride * MPP_ALIGN(ver_virstride, 8) * 4;
|
fbd_offset = regs->av1d_paras.reg68_hor_virstride * MPP_ALIGN(ver_virstride, 8) * 4;
|
||||||
regs->av1d_addrs.reg193_fbc_payload_offset = fbd_offset;
|
regs->av1d_addrs.reg193_fbc_payload_offset = fbd_offset;
|
||||||
regs->av1d_paras.reg80_error_ref_hor_virstride = regs->av1d_paras.reg68_hor_virstride;
|
|
||||||
} else if (MPP_FRAME_FMT_IS_TILE(mpp_frame_get_fmt(mframe))) {
|
} else if (MPP_FRAME_FMT_IS_TILE(mpp_frame_get_fmt(mframe))) {
|
||||||
regs->ctrl_regs.reg9.tile_e = 1;
|
regs->ctrl_regs.reg9.tile_e = 1;
|
||||||
regs->av1d_paras.reg68_hor_virstride = hor_virstride * 6 / 16;
|
regs->av1d_paras.reg68_hor_virstride = MPP_ALIGN(hor_virstride * 6, 16) >> 4;
|
||||||
regs->av1d_paras.reg70_y_virstride = (y_virstride + uv_virstride) / 16;
|
regs->av1d_paras.reg70_y_virstride = (y_virstride + uv_virstride) >> 4;
|
||||||
regs->av1d_paras.reg80_error_ref_hor_virstride = hor_virstride >> 4;
|
|
||||||
} else {
|
} else {
|
||||||
regs->ctrl_regs.reg9.fbc_e = 0;
|
regs->ctrl_regs.reg9.fbc_e = 0;
|
||||||
regs->av1d_paras.reg68_hor_virstride = hor_virstride >> 4;
|
regs->av1d_paras.reg68_hor_virstride = hor_virstride >> 4;
|
||||||
regs->av1d_paras.reg69_raster_uv_hor_virstride = hor_virstride >> 4;
|
regs->av1d_paras.reg69_raster_uv_hor_virstride = hor_virstride >> 4;
|
||||||
regs->av1d_paras.reg70_y_virstride = y_virstride >> 4;
|
regs->av1d_paras.reg70_y_virstride = y_virstride >> 4;
|
||||||
regs->av1d_paras.reg80_error_ref_hor_virstride = hor_virstride >> 4;
|
|
||||||
}
|
}
|
||||||
/* error */
|
/* error */
|
||||||
regs->av1d_paras.reg81_error_ref_raster_uv_hor_virstride = hor_virstride >> 4;
|
regs->av1d_paras.reg80_error_ref_hor_virstride = regs->av1d_paras.reg68_hor_virstride;
|
||||||
regs->av1d_paras.reg82_error_ref_virstride = y_virstride >> 4;
|
regs->av1d_paras.reg81_error_ref_raster_uv_hor_virstride = regs->av1d_paras.reg69_raster_uv_hor_virstride;
|
||||||
|
regs->av1d_paras.reg82_error_ref_virstride = regs->av1d_paras.reg70_y_virstride;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < ALLOWED_REFS_PER_FRAME_EX; ++i) {
|
for (i = 0; i < ALLOWED_REFS_PER_FRAME_EX; ++i) {
|
||||||
@@ -2256,11 +2254,14 @@ MPP_RET vdpu383_av1d_gen_regs(void *hal, HalTaskInfo *task)
|
|||||||
mpp_buf_slot_get_prop(p_hal->slots, dxva->frame_refs[mapped_idx].Index, SLOT_FRAME_PTR, &mframe);
|
mpp_buf_slot_get_prop(p_hal->slots, dxva->frame_refs[mapped_idx].Index, SLOT_FRAME_PTR, &mframe);
|
||||||
if (mframe) {
|
if (mframe) {
|
||||||
hor_virstride = mpp_frame_get_hor_stride(mframe);
|
hor_virstride = mpp_frame_get_hor_stride(mframe);
|
||||||
if (MPP_FRAME_FMT_IS_FBC(mpp_frame_get_fmt(mframe))) {
|
|
||||||
hor_virstride = MPP_ALIGN(hor_virstride, 64) / 4;
|
|
||||||
}
|
|
||||||
ver_virstride = mpp_frame_get_ver_stride(mframe);
|
ver_virstride = mpp_frame_get_ver_stride(mframe);
|
||||||
y_virstride = hor_virstride * ver_virstride;
|
y_virstride = hor_virstride * ver_virstride;
|
||||||
|
if (MPP_FRAME_FMT_IS_FBC(mpp_frame_get_fmt(mframe))) {
|
||||||
|
hor_virstride = MPP_ALIGN(hor_virstride, 64) / 4;
|
||||||
|
} else if (MPP_FRAME_FMT_IS_TILE(mpp_frame_get_fmt(mframe))) {
|
||||||
|
hor_virstride = MPP_ALIGN(hor_virstride * 6, 16);
|
||||||
|
y_virstride += y_virstride / 2;
|
||||||
|
}
|
||||||
SET_REF_HOR_VIRSTRIDE(regs->av1d_paras, mapped_idx, hor_virstride >> 4);
|
SET_REF_HOR_VIRSTRIDE(regs->av1d_paras, mapped_idx, hor_virstride >> 4);
|
||||||
SET_REF_RASTER_UV_HOR_VIRSTRIDE(regs->av1d_paras, mapped_idx, hor_virstride >> 4);
|
SET_REF_RASTER_UV_HOR_VIRSTRIDE(regs->av1d_paras, mapped_idx, hor_virstride >> 4);
|
||||||
SET_REF_VIRSTRIDE(regs->av1d_paras, mapped_idx, y_virstride >> 4);
|
SET_REF_VIRSTRIDE(regs->av1d_paras, mapped_idx, y_virstride >> 4);
|
||||||
|
Reference in New Issue
Block a user