14d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#ifndef __MEDIA_INFO_H__ 24d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define __MEDIA_INFO_H__ 34d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 44d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#ifndef MSM_MEDIA_ALIGN 54d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define MSM_MEDIA_ALIGN(__sz, __align) (((__sz) + (__align-1)) & (~(__align-1))) 64d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif 74d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 84d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#ifndef MSM_MEDIA_ROUNDUP 94d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define MSM_MEDIA_ROUNDUP(__sz, __r) (((__sz) + ((__r) - 1)) / (__r)) 104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif 114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum color_fmts { 134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Venus NV12: 144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * YUV 4:2:0 image with a plane of 8 bit Y samples followed 154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * by an interleaved U/V plane containing 8 bit 2x2 subsampled 164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * colour difference samples. 174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <-------- Y/UV_Stride --------> 194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <------- Width -------> 204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^ 214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | 224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height | 234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines 244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | 254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | 264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | 274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V | 284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V 324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . ^ 334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . | 344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . | 354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . UV_Scanlines 364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V 384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . --> Buffer size alignment 394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Stride : Width aligned to 128 414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Stride : Width aligned to 128 424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Scanlines: Height aligned to 32 434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Scanlines: Height/2 aligned to 16 444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Extradata: Arbitrary (software-imposed) padding 454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Total size = align((Y_Stride * Y_Scanlines 464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * + UV_Stride * UV_Scanlines + Extradata), 4096) 474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin COLOR_FMT_NV12, 494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Venus NV21: 514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * YUV 4:2:0 image with a plane of 8 bit Y samples followed 524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * by an interleaved V/U plane containing 8 bit 2x2 subsampled 534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * colour difference samples. 544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <-------- Y/UV_Stride --------> 564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <------- Width -------> 574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^ 584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | 594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height | 604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines 614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | 624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | 634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | 644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V | 654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V 694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V U V U V U V U V U V U . . . . ^ 704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V U V U V U V U V U V U . . . . | 714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V U V U V U V U V U V U . . . . | 724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V U V U V U V U V U V U . . . . UV_Scanlines 734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V 754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . --> Padding & Buffer size alignment 764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Stride : Width aligned to 128 784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Stride : Width aligned to 128 794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Scanlines: Height aligned to 32 804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Scanlines: Height/2 aligned to 16 814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Extradata: Arbitrary (software-imposed) padding 824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Total size = align((Y_Stride * Y_Scanlines 834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * + UV_Stride * UV_Scanlines + Extradata), 4096) 844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin COLOR_FMT_NV21, 864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Venus NV12_MVTB: 874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Two YUV 4:2:0 images/views one after the other 884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * in a top-bottom layout, same as NV12 894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * with a plane of 8 bit Y samples followed 904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * by an interleaved U/V plane containing 8 bit 2x2 subsampled 914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * colour difference samples. 924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <-------- Y/UV_Stride --------> 954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <------- Width -------> 964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^ ^ 974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | | 984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height | | 994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines | 1004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | | 1014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | | 1024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | | 1034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V | | 1044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | View_1 1054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | | 1064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | | 1074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V | 1084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . ^ | 1094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . | | 1104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . | | 1114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . UV_Scanlines | 1124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | | 1134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V V 1144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^ ^ 1154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | | 1164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height | | 1174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines | 1184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | | 1194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | | 1204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | | 1214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V | | 1224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | View_2 1234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | | 1244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | | 1254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V | 1264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . ^ | 1274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . | | 1284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . | | 1294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U V U V U V U V U V U V . . . . UV_Scanlines | 1304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | | 1314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V V 1324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . --> Buffer size alignment 1334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 1344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Stride : Width aligned to 128 1354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Stride : Width aligned to 128 1364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Scanlines: Height aligned to 32 1374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Scanlines: Height/2 aligned to 16 1384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * View_1 begin at: 0 (zero) 1394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * View_2 begin at: Y_Stride * Y_Scanlines + UV_Stride * UV_Scanlines 1404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Extradata: Arbitrary (software-imposed) padding 1414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Total size = align((2*(Y_Stride * Y_Scanlines) 1424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * + 2*(UV_Stride * UV_Scanlines) + Extradata), 4096) 1434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 1444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin COLOR_FMT_NV12_MVTB, 1454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Venus NV12 UBWC: 1464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Compressed Macro-tile format for NV12. 1474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Contains 4 planes in the following order - 1484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (A) Y_Meta_Plane 1494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (B) Y_UBWC_Plane 1504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (C) UV_Meta_Plane 1514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (D) UV_UBWC_Plane 1524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 1534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Meta_Plane consists of meta information to decode compressed 1544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * tile data in Y_UBWC_Plane. 1554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_UBWC_Plane consists of Y data in compressed macro-tile format. 1564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UBWC decoder block will use the Y_Meta_Plane data together with 1574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_UBWC_Plane data to produce loss-less uncompressed 8 bit Y samples. 1584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 1594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Meta_Plane consists of meta information to decode compressed 1604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * tile data in UV_UBWC_Plane. 1614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_UBWC_Plane consists of UV data in compressed macro-tile format. 1624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UBWC decoder block will use UV_Meta_Plane data together with 1634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_UBWC_Plane data to produce loss-less uncompressed 8 bit 2x2 1644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * subsampled color difference samples. 1654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 1664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Each tile in Y_UBWC_Plane/UV_UBWC_Plane is independently decodable 1674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * and randomly accessible. There is no dependency between tiles. 1684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 1694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <----- Y_Meta_Stride ----> 1704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <-------- Width ------> 1714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . ^ ^ 1724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | | 1734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . Height | 1744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | Meta_Y_Scanlines 1754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | | 1764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | | 1774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | | 1784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . V | 1794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . | 1804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . | 1814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k 1824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . V 1834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <--Compressed tile Y Stride---> 1844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <------- Width -------> 1854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . ^ ^ 1864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | | 1874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . Height | 1884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | Macro_tile_Y_Scanlines 1894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | | 1904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | | 1914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | | 1924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . V | 1934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 1944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 1954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k 1964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V 1974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <----- UV_Meta_Stride ----> 1984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . ^ 1994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | 2004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | 2014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . M_UV_Scanlines 2024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . | 2034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . V 2044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k 2054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <--Compressed tile UV Stride---> 2064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U* V* U* V* U* V* U* V* . . . . ^ 2074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U* V* U* V* U* V* U* V* . . . . | 2084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U* V* U* V* U* V* U* V* . . . . | 2094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U* V* U* V* U* V* U* V* . . . . UV_Scanlines 2104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 2114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V 2124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k 2134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 2144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Stride = align(Width, 128) 2154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Stride = align(Width, 128) 2164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Scanlines = align(Height, 32) 2174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Scanlines = align(Height/2, 16) 2184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_UBWC_Plane_size = align(Y_Stride * Y_Scanlines, 4096) 2194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_UBWC_Plane_size = align(UV_Stride * UV_Scanlines, 4096) 2204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Meta_Stride = align(roundup(Width, Y_TileWidth), 64) 2214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Meta_Scanlines = align(roundup(Height, Y_TileHeight), 16) 2224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Meta_Plane_size = align(Y_Meta_Stride * Y_Meta_Scanlines, 4096) 2234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Meta_Stride = align(roundup(Width, UV_TileWidth), 64) 2244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Meta_Scanlines = align(roundup(Height, UV_TileHeight), 16) 2254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Meta_Plane_size = align(UV_Meta_Stride * UV_Meta_Scanlines, 4096) 2264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Extradata = 8k 2274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 2284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Total size = align( Y_UBWC_Plane_size + UV_UBWC_Plane_size + 2294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Meta_Plane_size + UV_Meta_Plane_size + Extradata, 4096) 2304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 2314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin COLOR_FMT_NV12_UBWC, 2324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* Venus NV12 10-bit UBWC: 2334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Compressed Macro-tile format for NV12. 2344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Contains 4 planes in the following order - 2354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (A) Y_Meta_Plane 2364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (B) Y_UBWC_Plane 2374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (C) UV_Meta_Plane 2384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (D) UV_UBWC_Plane 2394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 2404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Meta_Plane consists of meta information to decode compressed 2414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * tile data in Y_UBWC_Plane. 2424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_UBWC_Plane consists of Y data in compressed macro-tile format. 2434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UBWC decoder block will use the Y_Meta_Plane data together with 2444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_UBWC_Plane data to produce loss-less uncompressed 10 bit Y samples. 2454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 2464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Meta_Plane consists of meta information to decode compressed 2474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * tile data in UV_UBWC_Plane. 2484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_UBWC_Plane consists of UV data in compressed macro-tile format. 2494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UBWC decoder block will use UV_Meta_Plane data together with 2504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_UBWC_Plane data to produce loss-less uncompressed 10 bit 2x2 2514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * subsampled color difference samples. 2524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 2534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Each tile in Y_UBWC_Plane/UV_UBWC_Plane is independently decodable 2544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * and randomly accessible. There is no dependency between tiles. 2554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 2564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <----- Y_Meta_Stride -----> 2574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <-------- Width ------> 2584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . ^ ^ 2594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | | 2604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . Height | 2614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | Meta_Y_Scanlines 2624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | | 2634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | | 2644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | | 2654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . V | 2664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . | 2674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . | 2684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k 2694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . V 2704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <--Compressed tile Y Stride---> 2714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <------- Width -------> 2724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . ^ ^ 2734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | | 2744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . Height | 2754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | Macro_tile_Y_Scanlines 2764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | | 2774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | | 2784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | | 2794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y* Y* Y* Y* Y* Y* Y* Y* . . . . V | 2804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 2814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 2824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k 2834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V 2844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <----- UV_Meta_Stride ----> 2854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . ^ 2864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | 2874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . | 2884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * M M M M M M M M M M M M . . M_UV_Scanlines 2894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . | 2904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . V 2914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k 2924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * <--Compressed tile UV Stride---> 2934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U* V* U* V* U* V* U* V* . . . . ^ 2944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U* V* U* V* U* V* U* V* . . . . | 2954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U* V* U* V* U* V* U* V* . . . . | 2964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * U* V* U* V* U* V* U* V* . . . . UV_Scanlines 2974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . | 2984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . V 2994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k 3004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 3014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * 3024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Stride = align(Width * 4/3, 128) 3034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Stride = align(Width * 4/3, 128) 3044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Scanlines = align(Height, 32) 3054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Scanlines = align(Height/2, 16) 3064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_UBWC_Plane_Size = align(Y_Stride * Y_Scanlines, 4096) 3074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_UBWC_Plane_Size = align(UV_Stride * UV_Scanlines, 4096) 3084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Meta_Stride = align(roundup(Width, Y_TileWidth), 64) 3094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Meta_Scanlines = align(roundup(Height, Y_TileHeight), 16) 3104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Y_Meta_Plane_size = align(Y_Meta_Stride * Y_Meta_Scanlines, 4096) 3114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Meta_Stride = align(roundup(Width, UV_TileWidth), 64) 3124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Meta_Scanlines = align(roundup(Height, UV_TileHeight), 16) 3134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * UV_Meta_Plane_size = align(UV_Meta_Stride * UV_Meta_Scanlines, 4096) 3144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Extradata = 8k 3154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 3164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin COLOR_FMT_NV12_BPP10_UBWC, 3174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin}; 3184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_EXTRADATA_SIZE(int width, int height) 3204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 3214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (void)height; 3224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin (void)width; 3234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin /* 3254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * In the future, calculate the size based on the w/h but just 3264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * hardcode it for now since 8K satisfies all current usecases. 3274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */ 3284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return 8 * 1024; 3294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 3304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_Y_STRIDE(int color_fmt, int width) 3324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 3334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int alignment, stride = 0; 3344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!width) 3354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 3364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 3384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV21: 3394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12: 3404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_MVTB: 3414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_UBWC: 3424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin alignment = 128; 3434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin stride = MSM_MEDIA_ALIGN(width, alignment); 3444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 3454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_BPP10_UBWC: 3464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin alignment = 128; 3474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin stride = MSM_MEDIA_ALIGN(width * 4/3, alignment); 3484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 3494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 3504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 3514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 3524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 3534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return stride; 3544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 3554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_UV_STRIDE(int color_fmt, int width) 3574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 3584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int alignment, stride = 0; 3594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!width) 3604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 3614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 3634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV21: 3644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12: 3654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_MVTB: 3664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_UBWC: 3674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin alignment = 128; 3684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin stride = MSM_MEDIA_ALIGN(width, alignment); 3694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 3704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_BPP10_UBWC: 3714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin alignment = 128; 3724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin stride = MSM_MEDIA_ALIGN(width * 4/3, alignment); 3734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 3744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 3754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 3764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 3774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 3784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return stride; 3794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 3804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_Y_SCANLINES(int color_fmt, int height) 3824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 3834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int alignment, sclines = 0; 3844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!height) 3854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 3864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 3874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 3884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV21: 3894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12: 3904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_MVTB: 3914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_UBWC: 3924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_BPP10_UBWC: 3934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin alignment = 32; 3944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin sclines = MSM_MEDIA_ALIGN(height, alignment); 3954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 3964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 3974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 3984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 3994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 4004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return sclines; 4014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 4024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_UV_SCANLINES(int color_fmt, int height) 4044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 4054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int alignment, sclines = 0; 4064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!height) 4074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 4084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 4104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV21: 4114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12: 4124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_MVTB: 4134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_UBWC: 4144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_BPP10_UBWC: 4154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin alignment = 16; 4164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin sclines = MSM_MEDIA_ALIGN(((height + 1) >> 1), alignment); 4174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 4184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 4194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 4204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 4214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 4224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return sclines; 4234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 4244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_Y_META_STRIDE(int color_fmt, int width) 4264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 4274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int y_tile_width = 0, y_meta_stride = 0; 4284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!width) 4304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 4314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 4334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_UBWC: 4344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_tile_width = 32; 4354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 4364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_BPP10_UBWC: 4374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_tile_width = 48; 4384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 4394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 4404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 4414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 4424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_meta_stride = MSM_MEDIA_ROUNDUP(width, y_tile_width); 4444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_meta_stride = MSM_MEDIA_ALIGN(y_meta_stride, 64); 4454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 4474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return y_meta_stride; 4484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 4494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_Y_META_SCANLINES(int color_fmt, int height) 4514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 4524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int y_tile_height = 0, y_meta_scanlines = 0; 4534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!height) 4554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 4564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 4584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_UBWC: 4594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_tile_height = 8; 4604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 4614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_BPP10_UBWC: 4624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_tile_height = 4; 4634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 4644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 4654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 4664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 4674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_meta_scanlines = MSM_MEDIA_ROUNDUP(height, y_tile_height); 4694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_meta_scanlines = MSM_MEDIA_ALIGN(y_meta_scanlines, 16); 4704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 4724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return y_meta_scanlines; 4734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 4744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_UV_META_STRIDE(int color_fmt, int width) 4764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 4774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int uv_tile_width = 0, uv_meta_stride = 0; 4784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!width) 4804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 4814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 4834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_UBWC: 4844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_tile_width = 16; 4854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 4864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_BPP10_UBWC: 4874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_tile_width = 24; 4884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 4894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 4904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 4914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 4924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_meta_stride = MSM_MEDIA_ROUNDUP(width, uv_tile_width); 4944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_meta_stride = MSM_MEDIA_ALIGN(uv_meta_stride, 64); 4954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 4964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 4974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return uv_meta_stride; 4984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 4994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_UV_META_SCANLINES(int color_fmt, int height) 5014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 5024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int uv_tile_height = 0, uv_meta_scanlines = 0; 5034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!height) 5054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 5064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 5084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_UBWC: 5094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_tile_height = 8; 5104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 5114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_BPP10_UBWC: 5124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_tile_height = 4; 5134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 5144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 5154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 5164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 5174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_meta_scanlines = MSM_MEDIA_ROUNDUP(height, uv_tile_height); 5194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_meta_scanlines = MSM_MEDIA_ALIGN(uv_meta_scanlines, 16); 5204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 5224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return uv_meta_scanlines; 5234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 5244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_BUFFER_SIZE( 5264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int color_fmt, int width, int height) 5274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 5284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin const unsigned int extra_size = VENUS_EXTRADATA_SIZE(width, height); 5294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int uv_alignment = 0, size = 0; 5304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int y_plane, uv_plane, y_stride, 5314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_stride, y_sclines, uv_sclines; 5324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int y_ubwc_plane = 0, uv_ubwc_plane = 0; 5334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int y_meta_stride = 0, y_meta_scanlines = 0; 5344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int uv_meta_stride = 0, uv_meta_scanlines = 0; 5354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int y_meta_plane = 0, uv_meta_plane = 0; 5364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!width || !height) 5384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 5394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_stride = VENUS_Y_STRIDE(color_fmt, width); 5414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_stride = VENUS_UV_STRIDE(color_fmt, width); 5424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_sclines = VENUS_Y_SCANLINES(color_fmt, height); 5434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_sclines = VENUS_UV_SCANLINES(color_fmt, height); 5444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 5454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV21: 5464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12: 5474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_alignment = 4096; 5484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_plane = y_stride * y_sclines; 5494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_plane = uv_stride * uv_sclines + uv_alignment; 5504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin size = y_plane + uv_plane + extra_size; 5514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin size = MSM_MEDIA_ALIGN(size, 4096); 5524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 5534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_MVTB: 5544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_alignment = 4096; 5554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_plane = y_stride * y_sclines; 5564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_plane = uv_stride * uv_sclines + uv_alignment; 5574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin size = y_plane + uv_plane; 5584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin size = 2 * size + extra_size; 5594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin size = MSM_MEDIA_ALIGN(size, 4096); 5604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 5614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_UBWC: 5624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_BPP10_UBWC: 5634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_ubwc_plane = MSM_MEDIA_ALIGN(y_stride * y_sclines, 4096); 5644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_ubwc_plane = MSM_MEDIA_ALIGN(uv_stride * uv_sclines, 4096); 5654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_meta_stride = VENUS_Y_META_STRIDE(color_fmt, width); 5664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_meta_scanlines = VENUS_Y_META_SCANLINES(color_fmt, height); 5674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_meta_plane = MSM_MEDIA_ALIGN( 5684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_meta_stride * y_meta_scanlines, 4096); 5694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_meta_stride = VENUS_UV_META_STRIDE(color_fmt, width); 5704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_meta_scanlines = VENUS_UV_META_SCANLINES(color_fmt, height); 5714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_meta_plane = MSM_MEDIA_ALIGN(uv_meta_stride * 5724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_meta_scanlines, 4096); 5734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin size = y_ubwc_plane + uv_ubwc_plane + y_meta_plane + 5754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_meta_plane + extra_size; 5764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin size = MSM_MEDIA_ALIGN(size, 4096); 5774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 5784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 5794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 5804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 5814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 5824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return size; 5834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 5844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstatic inline unsigned int VENUS_VIEW2_OFFSET( 5864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin int color_fmt, int width, int height) 5874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin{ 5884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int offset = 0; 5894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin unsigned int y_plane, uv_plane, y_stride, 5904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_stride, y_sclines, uv_sclines; 5914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin if (!width || !height) 5924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin goto invalid_input; 5934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 5944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_stride = VENUS_Y_STRIDE(color_fmt, width); 5954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_stride = VENUS_UV_STRIDE(color_fmt, width); 5964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_sclines = VENUS_Y_SCANLINES(color_fmt, height); 5974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_sclines = VENUS_UV_SCANLINES(color_fmt, height); 5984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin switch (color_fmt) { 5994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin case COLOR_FMT_NV12_MVTB: 6004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin y_plane = y_stride * y_sclines; 6014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin uv_plane = uv_stride * uv_sclines; 6024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin offset = y_plane + uv_plane; 6034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 6044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin default: 6054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin break; 6064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin } 6074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjininvalid_input: 6084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin return offset; 6094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} 6104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin 6114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif 612