video: driver: Add support for AV1D IBC feature

Add support for AV1D Intra-Block Copy (IBC) feature. This requires a
dedicated internal buffer (HFI_BUFFER_IBC_AV1D), which was previously
part of LINE buffer. A new internal buffer type called
HFI_BUFFER_PARTIAL_DATA is introduced, and this buffer type holds
HFI_BUFFER_IBC_AV1D for AV1D. HFI_BUFFER_PARTIAL_DATA is mapped to
NON_SECURE_PIXEL context bank for non-secure and to SECURE_PIXEL
context bank for secure use case.

Change-Id: If7ae22495f9981f275d54acc342c25ccdfc0c7b9
Signed-off-by: Mihir Ganu <quic_mganu@quicinc.com>
Šī revīzija ir iekļauta:
Mihir Ganu
2022-03-16 15:37:40 -07:00
vecāks b2d8ec9191
revīzija 96358cee7d
12 mainīti faili ar 78 papildinājumiem un 28 dzēšanām

Parādīt failu

@@ -1054,8 +1054,7 @@ _yuv_bufcount_min, is_opb, num_vpp_pipes) \
num_vpp_pipes) \
do \
{ \
HFI_U32 vpssLBSize, ibcBufSize, opbwr1BufSize, \
opbwr8, opbwr10, ibc8, ibc10; \
HFI_U32 vpssLBSize, opbwr1BufSize, opbwr8, opbwr10; \
_size = HFI_ALIGN(SIZE_AV1D_LB_FE_TOP_DATA(frame_width, frame_height), \
VENUS_DMA_ALIGNMENT) + \
HFI_ALIGN(SIZE_AV1D_LB_FE_TOP_CTRL(frame_width, frame_height), \
@@ -1086,13 +1085,14 @@ _yuv_bufcount_min, is_opb, num_vpp_pipes) \
SIZE_VPSS_LB(vpssLBSize, frame_width, frame_height, num_vpp_pipes); \
_size = HFI_ALIGN((_size + vpssLBSize), VENUS_DMA_ALIGNMENT); \
} \
else \
{ \
SIZE_AV1D_IBC_NV12_UBWC(ibc8, frame_width, frame_height); \
SIZE_AV1D_IBC_TP10_UBWC(ibc10, frame_width, frame_height); \
ibcBufSize = MAX(ibc8, ibc10); \
_size = HFI_ALIGN((_size + ibcBufSize), VENUS_DMA_ALIGNMENT); \
} \
} while (0)
#define HFI_BUFFER_IBC_AV1D(_size, frame_width, frame_height) \
do { \
HFI_U32 ibc8, ibc10; \
SIZE_AV1D_IBC_NV12_UBWC(ibc8, frame_width, frame_height); \
SIZE_AV1D_IBC_TP10_UBWC(ibc10, frame_width, frame_height); \
_size = HFI_ALIGN(MAX(ibc8, ibc10), VENUS_DMA_ALIGNMENT); \
} while (0)
#define AV1_CABAC_HDR_RATIO_HD_TOT 2