mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-21 17:29:05 +07:00
media: meson: vdec: add helpers for lossless framebuffer compression buffers
Add helpers to support the lossless framebuffer compression format that will be used in HEVC & VP9 decoders when decoding 10bit content for downsampling to 8bit NV12 and later proper compressed buffer support. Signed-off-by: Maxime Jourdan <mjourdan@baylibre.com> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Tested-by: Kevin Hilman <khilman@baylibre.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
7624c9cd5b
commit
09b455d1da
@ -50,6 +50,33 @@ void amvdec_write_parser(struct amvdec_core *core, u32 reg, u32 val)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(amvdec_write_parser);
|
||||
|
||||
/* 4 KiB per 64x32 block */
|
||||
u32 amvdec_am21c_body_size(u32 width, u32 height)
|
||||
{
|
||||
u32 width_64 = ALIGN(width, 64) / 64;
|
||||
u32 height_32 = ALIGN(height, 32) / 32;
|
||||
|
||||
return SZ_4K * width_64 * height_32;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(amvdec_am21c_body_size);
|
||||
|
||||
/* 32 bytes per 128x64 block */
|
||||
u32 amvdec_am21c_head_size(u32 width, u32 height)
|
||||
{
|
||||
u32 width_128 = ALIGN(width, 128) / 128;
|
||||
u32 height_64 = ALIGN(height, 64) / 64;
|
||||
|
||||
return 32 * width_128 * height_64;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(amvdec_am21c_head_size);
|
||||
|
||||
u32 amvdec_am21c_size(u32 width, u32 height)
|
||||
{
|
||||
return ALIGN(amvdec_am21c_body_size(width, height) +
|
||||
amvdec_am21c_head_size(width, height), SZ_64K);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(amvdec_am21c_size);
|
||||
|
||||
static int canvas_alloc(struct amvdec_session *sess, u8 *canvas_id)
|
||||
{
|
||||
int ret;
|
||||
|
@ -27,6 +27,10 @@ void amvdec_clear_dos_bits(struct amvdec_core *core, u32 reg, u32 val);
|
||||
u32 amvdec_read_parser(struct amvdec_core *core, u32 reg);
|
||||
void amvdec_write_parser(struct amvdec_core *core, u32 reg, u32 val);
|
||||
|
||||
u32 amvdec_am21c_body_size(u32 width, u32 height);
|
||||
u32 amvdec_am21c_head_size(u32 width, u32 height);
|
||||
u32 amvdec_am21c_size(u32 width, u32 height);
|
||||
|
||||
/**
|
||||
* amvdec_dst_buf_done_idx() - Signal that a buffer is done decoding
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user