Message ID | 20211103033708.14469-1-yunfei.dong@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] media: mtk-vcodec: Align width and height to 64 bytes | expand |
Le mercredi 03 novembre 2021 à 11:37 +0800, Yunfei Dong a écrit : > Width and height need to 64 bytes aligned when setting the format. > Need to make sure all is 64 bytes align when use width and height to > calculate buffer size. > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> > Change-Id: I39886b1a6b433c92565ddbf297eb193456eec1d2 Perhaps avoid this tag later ? Another perhaps, there is a tag to indicate which patch introduce that bug, if you add this tag, the patch will be automatically backported into relevant stable kernel. The format is: > Fixes: <short-hash> ("<short commit description") Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > --- > drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h | 1 + > drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c | 4 ++-- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h > index e30806c1faea..66cd6d2242c3 100644 > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h > @@ -11,6 +11,7 @@ > #include <media/videobuf2-core.h> > #include <media/v4l2-mem2mem.h> > > +#define VCODEC_DEC_ALIGNED_64 64 > #define VCODEC_CAPABILITY_4K_DISABLED 0x10 > #define VCODEC_DEC_4K_CODED_WIDTH 4096U > #define VCODEC_DEC_4K_CODED_HEIGHT 2304U > diff --git a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c > index d402fc4bda69..e1a3011772a9 100644 > --- a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c > +++ b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c > @@ -562,8 +562,8 @@ static void get_pic_info(struct vdec_h264_slice_inst *inst, > { > struct mtk_vcodec_ctx *ctx = inst->ctx; > > - ctx->picinfo.buf_w = (ctx->picinfo.pic_w + 15) & 0xFFFFFFF0; > - ctx->picinfo.buf_h = (ctx->picinfo.pic_h + 31) & 0xFFFFFFE0; > + ctx->picinfo.buf_w = ALIGN(ctx->picinfo.pic_w, VCODEC_DEC_ALIGNED_64); > + ctx->picinfo.buf_h = ALIGN(ctx->picinfo.pic_h, VCODEC_DEC_ALIGNED_64); > ctx->picinfo.fb_sz[0] = ctx->picinfo.buf_w * ctx->picinfo.buf_h; > ctx->picinfo.fb_sz[1] = ctx->picinfo.fb_sz[0] >> 1; > inst->vsi_ctx.dec.cap_num_planes =
Thank you Yunfei for the update. Looks good to me. As mentioned earlier, I tested to verify that this fix resolved the corruption issue on Kukui. Tested-by: Steve Cho <stevecho@chromium.org> Thanks, Steve On Wed, Nov 3, 2021 at 8:23 AM Nicolas Dufresne <nicolas@ndufresne.ca> wrote: > Le mercredi 03 novembre 2021 à 11:37 +0800, Yunfei Dong a écrit : > > Width and height need to 64 bytes aligned when setting the format. > > Need to make sure all is 64 bytes align when use width and height to > > calculate buffer size. > > > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> > > Change-Id: I39886b1a6b433c92565ddbf297eb193456eec1d2 > > Perhaps avoid this tag later ? Another perhaps, there is a tag to indicate > which > patch introduce that bug, if you add this tag, the patch will be > automatically > backported into relevant stable kernel. The format is: > > > Fixes: <short-hash> ("<short commit description") > > Acked-by: Nicolas Dufresne <nicolas.dufresne@collabora.com> > > > --- > > drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h | 1 + > > drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c | 4 ++-- > > 2 files changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h > b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h > > index e30806c1faea..66cd6d2242c3 100644 > > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h > > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h > > @@ -11,6 +11,7 @@ > > #include <media/videobuf2-core.h> > > #include <media/v4l2-mem2mem.h> > > > > +#define VCODEC_DEC_ALIGNED_64 64 > > #define VCODEC_CAPABILITY_4K_DISABLED 0x10 > > #define VCODEC_DEC_4K_CODED_WIDTH 4096U > > #define VCODEC_DEC_4K_CODED_HEIGHT 2304U > > diff --git a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c > b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c > > index d402fc4bda69..e1a3011772a9 100644 > > --- a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c > > +++ b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c > > @@ -562,8 +562,8 @@ static void get_pic_info(struct vdec_h264_slice_inst > *inst, > > { > > struct mtk_vcodec_ctx *ctx = inst->ctx; > > > > - ctx->picinfo.buf_w = (ctx->picinfo.pic_w + 15) & 0xFFFFFFF0; > > - ctx->picinfo.buf_h = (ctx->picinfo.pic_h + 31) & 0xFFFFFFE0; > > + ctx->picinfo.buf_w = ALIGN(ctx->picinfo.pic_w, > VCODEC_DEC_ALIGNED_64); > > + ctx->picinfo.buf_h = ALIGN(ctx->picinfo.pic_h, > VCODEC_DEC_ALIGNED_64); > > ctx->picinfo.fb_sz[0] = ctx->picinfo.buf_w * ctx->picinfo.buf_h; > > ctx->picinfo.fb_sz[1] = ctx->picinfo.fb_sz[0] >> 1; > > inst->vsi_ctx.dec.cap_num_planes = > >
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h index e30806c1faea..66cd6d2242c3 100644 --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h @@ -11,6 +11,7 @@ #include <media/videobuf2-core.h> #include <media/v4l2-mem2mem.h> +#define VCODEC_DEC_ALIGNED_64 64 #define VCODEC_CAPABILITY_4K_DISABLED 0x10 #define VCODEC_DEC_4K_CODED_WIDTH 4096U #define VCODEC_DEC_4K_CODED_HEIGHT 2304U diff --git a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c index d402fc4bda69..e1a3011772a9 100644 --- a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c +++ b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c @@ -562,8 +562,8 @@ static void get_pic_info(struct vdec_h264_slice_inst *inst, { struct mtk_vcodec_ctx *ctx = inst->ctx; - ctx->picinfo.buf_w = (ctx->picinfo.pic_w + 15) & 0xFFFFFFF0; - ctx->picinfo.buf_h = (ctx->picinfo.pic_h + 31) & 0xFFFFFFE0; + ctx->picinfo.buf_w = ALIGN(ctx->picinfo.pic_w, VCODEC_DEC_ALIGNED_64); + ctx->picinfo.buf_h = ALIGN(ctx->picinfo.pic_h, VCODEC_DEC_ALIGNED_64); ctx->picinfo.fb_sz[0] = ctx->picinfo.buf_w * ctx->picinfo.buf_h; ctx->picinfo.fb_sz[1] = ctx->picinfo.fb_sz[0] >> 1; inst->vsi_ctx.dec.cap_num_planes =
Width and height need to 64 bytes aligned when setting the format. Need to make sure all is 64 bytes align when use width and height to calculate buffer size. Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> Change-Id: I39886b1a6b433c92565ddbf297eb193456eec1d2 --- drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h | 1 + drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-)