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