15d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifndef __MEDIA_INFO_H__
25d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define __MEDIA_INFO_H__
35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifndef MSM_MEDIA_ALIGN
55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_MEDIA_ALIGN(__sz, __align) (((__sz) + (__align-1)) & (~(__align-1)))
65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif
75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifndef MSM_MEDIA_ROUNDUP
95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_MEDIA_ROUNDUP(__sz, __r) (((__sz) + ((__r) - 1)) / (__r))
105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif
115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifndef MSM_MEDIA_MAX
135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_MEDIA_MAX(__a, __b) ((__a) > (__b)?(__a):(__b))
145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif
155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum color_fmts {
175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Venus NV12:
185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * YUV 4:2:0 image with a plane of 8 bit Y samples followed
195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * by an interleaved U/V plane containing 8 bit 2x2 subsampled
205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * colour difference samples.
215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <-------- Y/UV_Stride -------->
235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <------- Width ------->
245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  ^           ^
255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |
265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  Height      |
275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |          Y_Scanlines
285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |
295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |
305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |
315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  V           |
325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              V
365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  ^
375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  |
385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  |
395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  UV_Scanlines
405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  |
415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  V
425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  --> Buffer size alignment
435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Stride : Width aligned to 128
455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Stride : Width aligned to 128
465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Scanlines: Height aligned to 32
475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Scanlines: Height/2 aligned to 16
485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Extradata: Arbitrary (software-imposed) padding
495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Total size = align((Y_Stride * Y_Scanlines
505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *          + UV_Stride * UV_Scanlines
515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *          + max(Extradata, Y_Stride * 8), 4096)
525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	COLOR_FMT_NV12,
545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Venus NV21:
565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * YUV 4:2:0 image with a plane of 8 bit Y samples followed
575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * by an interleaved V/U plane containing 8 bit 2x2 subsampled
585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * colour difference samples.
595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <-------- Y/UV_Stride -------->
615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <------- Width ------->
625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  ^           ^
635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |
645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  Height      |
655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |          Y_Scanlines
665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |
675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |
685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |
695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  V           |
705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              V
745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * V U V U V U V U V U V U . . . .  ^
755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * V U V U V U V U V U V U . . . .  |
765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * V U V U V U V U V U V U . . . .  |
775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * V U V U V U V U V U V U . . . .  UV_Scanlines
785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  |
795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  V
805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  --> Padding & Buffer size alignment
815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Stride : Width aligned to 128
835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Stride : Width aligned to 128
845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Scanlines: Height aligned to 32
855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Scanlines: Height/2 aligned to 16
865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Extradata: Arbitrary (software-imposed) padding
875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Total size = align((Y_Stride * Y_Scanlines
885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *          + UV_Stride * UV_Scanlines
895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *          + max(Extradata, Y_Stride * 8), 4096)
905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	COLOR_FMT_NV21,
925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Venus NV12_MVTB:
935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Two YUV 4:2:0 images/views one after the other
945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * in a top-bottom layout, same as NV12
955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * with a plane of 8 bit Y samples followed
965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * by an interleaved U/V plane containing 8 bit 2x2 subsampled
975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * colour difference samples.
985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <-------- Y/UV_Stride -------->
1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <------- Width ------->
1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  ^           ^               ^
1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |               |
1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  Height      |               |
1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |          Y_Scanlines      |
1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |               |
1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |               |
1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |               |
1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  V           |               |
1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |             View_1
1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |               |
1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |               |
1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              V               |
1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  ^                           |
1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  |                           |
1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  |                           |
1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  UV_Scanlines                |
1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  |                           |
1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  V                           V
1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  ^           ^               ^
1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |               |
1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  Height      |               |
1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |          Y_Scanlines      |
1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |               |
1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |               |
1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  |           |               |
1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y Y Y Y Y Y Y Y Y Y Y Y . . . .  V           |               |
1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |             View_2
1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |               |
1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |               |
1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              V               |
1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  ^                           |
1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  |                           |
1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  |                           |
1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U V U V U V U V U V U V . . . .  UV_Scanlines                |
1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  |                           |
1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  V                           V
1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  --> Buffer size alignment
1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Stride : Width aligned to 128
1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Stride : Width aligned to 128
1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Scanlines: Height aligned to 32
1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Scanlines: Height/2 aligned to 16
1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * View_1 begin at: 0 (zero)
1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * View_2 begin at: Y_Stride * Y_Scanlines + UV_Stride * UV_Scanlines
1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Extradata: Arbitrary (software-imposed) padding
1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Total size = align((2*(Y_Stride * Y_Scanlines)
1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *          + 2*(UV_Stride * UV_Scanlines) + Extradata), 4096)
1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	COLOR_FMT_NV12_MVTB,
1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Venus NV12 UBWC:
1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Compressed Macro-tile format for NV12.
1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Contains 4 planes in the following order -
1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (A) Y_Meta_Plane
1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (B) Y_UBWC_Plane
1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (C) UV_Meta_Plane
1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (D) UV_UBWC_Plane
1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Meta_Plane consists of meta information to decode compressed
1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * tile data in Y_UBWC_Plane.
1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_UBWC_Plane consists of Y data in compressed macro-tile format.
1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UBWC decoder block will use the Y_Meta_Plane data together with
1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_UBWC_Plane data to produce loss-less uncompressed 8 bit Y samples.
1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Meta_Plane consists of meta information to decode compressed
1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * tile data in UV_UBWC_Plane.
1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_UBWC_Plane consists of UV data in compressed macro-tile format.
1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UBWC decoder block will use UV_Meta_Plane data together with
1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_UBWC_Plane data to produce loss-less uncompressed 8 bit 2x2
1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * subsampled color difference samples.
1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Each tile in Y_UBWC_Plane/UV_UBWC_Plane is independently decodable
1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * and randomly accessible. There is no dependency between tiles.
1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
1755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <----- Y_Meta_Stride ---->
1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <-------- Width ------>
1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      ^           ^
1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      Height      |
1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |         Meta_Y_Scanlines
1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      V           |
1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .                  |
1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .                  |
1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .      -------> Buffer size aligned to 4k
1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .                  V
1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <--Compressed tile Y Stride--->
1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <------- Width ------->
1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  ^           ^
1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |           |
1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  Height      |
1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |        Macro_tile_Y_Scanlines
1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |           |
1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |           |
1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |           |
1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  V           |
1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  -------> Buffer size aligned to 4k
2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              V
2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <----- UV_Meta_Stride ---->
2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      ^
2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |
2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |
2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      M_UV_Scanlines
2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .      |
2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .      V
2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .      -------> Buffer size aligned to 4k
2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <--Compressed tile UV Stride--->
2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U* V* U* V* U* V* U* V* . . . .  ^
2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U* V* U* V* U* V* U* V* . . . .  |
2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U* V* U* V* U* V* U* V* . . . .  |
2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U* V* U* V* U* V* U* V* . . . .  UV_Scanlines
2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  |
2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  V
2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  -------> Buffer size aligned to 4k
2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Stride = align(Width, 128)
2215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Stride = align(Width, 128)
2225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Scanlines = align(Height, 32)
2235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Scanlines = align(Height/2, 16)
2245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_UBWC_Plane_size = align(Y_Stride * Y_Scanlines, 4096)
2255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_UBWC_Plane_size = align(UV_Stride * UV_Scanlines, 4096)
2265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Meta_Stride = align(roundup(Width, Y_TileWidth), 64)
2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Meta_Scanlines = align(roundup(Height, Y_TileHeight), 16)
2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Meta_Plane_size = align(Y_Meta_Stride * Y_Meta_Scanlines, 4096)
2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Meta_Stride = align(roundup(Width, UV_TileWidth), 64)
2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Meta_Scanlines = align(roundup(Height, UV_TileHeight), 16)
2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Meta_Plane_size = align(UV_Meta_Stride * UV_Meta_Scanlines, 4096)
2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Extradata = 8k
2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Total size = align( Y_UBWC_Plane_size + UV_UBWC_Plane_size +
2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *           Y_Meta_Plane_size + UV_Meta_Plane_size
2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *           + max(Extradata, Y_Stride * 48), 4096)
2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	COLOR_FMT_NV12_UBWC,
2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Venus NV12 10-bit UBWC:
2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Compressed Macro-tile format for NV12.
2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Contains 4 planes in the following order -
2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (A) Y_Meta_Plane
2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (B) Y_UBWC_Plane
2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (C) UV_Meta_Plane
2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (D) UV_UBWC_Plane
2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Meta_Plane consists of meta information to decode compressed
2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * tile data in Y_UBWC_Plane.
2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_UBWC_Plane consists of Y data in compressed macro-tile format.
2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UBWC decoder block will use the Y_Meta_Plane data together with
2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_UBWC_Plane data to produce loss-less uncompressed 10 bit Y samples.
2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
2535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Meta_Plane consists of meta information to decode compressed
2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * tile data in UV_UBWC_Plane.
2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_UBWC_Plane consists of UV data in compressed macro-tile format.
2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UBWC decoder block will use UV_Meta_Plane data together with
2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_UBWC_Plane data to produce loss-less uncompressed 10 bit 2x2
2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * subsampled color difference samples.
2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Each tile in Y_UBWC_Plane/UV_UBWC_Plane is independently decodable
2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * and randomly accessible. There is no dependency between tiles.
2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <----- Y_Meta_Stride ----->
2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <-------- Width ------>
2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      ^           ^
2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      Height      |
2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |         Meta_Y_Scanlines
2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      V           |
2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .                  |
2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .                  |
2755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .      -------> Buffer size aligned to 4k
2765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .                  V
2775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <--Compressed tile Y Stride--->
2785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <------- Width ------->
2795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  ^           ^
2805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |           |
2815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  Height      |
2825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |        Macro_tile_Y_Scanlines
2835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |           |
2845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |           |
2855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  |           |
2865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y* Y* Y* Y* Y* Y* Y* Y* . . . .  V           |
2875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
2885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
2895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  -------> Buffer size aligned to 4k
2905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              V
2915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <----- UV_Meta_Stride ---->
2925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      ^
2935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |
2945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |
2955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      M_UV_Scanlines
2965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .      |
2975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .      V
2985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .      -------> Buffer size aligned to 4k
2995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <--Compressed tile UV Stride--->
3005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U* V* U* V* U* V* U* V* . . . .  ^
3015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U* V* U* V* U* V* U* V* . . . .  |
3025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U* V* U* V* U* V* U* V* . . . .  |
3035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * U* V* U* V* U* V* U* V* . . . .  UV_Scanlines
3045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  |
3055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  V
3065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .  -------> Buffer size aligned to 4k
3075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
3085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
3095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Stride = align(Width * 4/3, 128)
3105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Stride = align(Width * 4/3, 128)
3115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Scanlines = align(Height, 32)
3125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Scanlines = align(Height/2, 16)
3135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_UBWC_Plane_Size = align(Y_Stride * Y_Scanlines, 4096)
3145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_UBWC_Plane_Size = align(UV_Stride * UV_Scanlines, 4096)
3155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Meta_Stride = align(roundup(Width, Y_TileWidth), 64)
3165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Meta_Scanlines = align(roundup(Height, Y_TileHeight), 16)
3175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y_Meta_Plane_size = align(Y_Meta_Stride * Y_Meta_Scanlines, 4096)
3185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Meta_Stride = align(roundup(Width, UV_TileWidth), 64)
3195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Meta_Scanlines = align(roundup(Height, UV_TileHeight), 16)
3205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * UV_Meta_Plane_size = align(UV_Meta_Stride * UV_Meta_Scanlines, 4096)
3215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Extradata = 8k
3225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
3235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Total size = align(Y_UBWC_Plane_size + UV_UBWC_Plane_size +
3245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *           Y_Meta_Plane_size + UV_Meta_Plane_size
3255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *           + max(Extradata, Y_Stride * 48), 4096)
3265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
3275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	COLOR_FMT_NV12_BPP10_UBWC,
3285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Venus RGBA8888 format:
3295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Contains 1 plane in the following order -
3305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (A) RGBA plane
3315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
3325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <-------- RGB_Stride -------->
3335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <------- Width ------->
3345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  ^           ^
3355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |           |
3365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  Height      |
3375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |       RGB_Scanlines
3385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |           |
3395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |           |
3405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |           |
3415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  V           |
3425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
3435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
3445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
3455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              V
3465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
3475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * RGB_Stride = align(Width * 4, 128)
3485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * RGB_Scanlines = align(Height, 32)
3495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * RGB_Plane_size = align(RGB_Stride * RGB_Scanlines, 4096)
3505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Extradata = 8k
3515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
3525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Total size = align(RGB_Plane_size + Extradata, 4096)
3535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
3545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	COLOR_FMT_RGBA8888,
3555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Venus RGBA8888 UBWC format:
3565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Contains 2 planes in the following order -
3575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (A) Meta plane
3585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * (B) RGBA plane
3595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
3605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <--- RGB_Meta_Stride ---->
3615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <-------- Width ------>
3625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      ^           ^
3635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
3645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      Height      |
3655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |       Meta_RGB_Scanlines
3665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
3675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
3685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      |           |
3695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * M M M M M M M M M M M M . .      V           |
3705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .                  |
3715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .                  |
3725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .      -------> Buffer size aligned to 4k
3735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . .                  V
3745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <-------- RGB_Stride -------->
3755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * <------- Width ------->
3765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  ^           ^
3775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |           |
3785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  Height      |
3795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |       RGB_Scanlines
3805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |           |
3815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |           |
3825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  |           |
3835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * R R R R R R R R R R R R . . . .  V           |
3845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
3855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              |
3865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .    -------> Buffer size aligned to 4k
3875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * . . . . . . . . . . . . . . . .              V
3885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
3895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * RGB_Stride = align(Width * 4, 128)
3905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * RGB_Scanlines = align(Height, 32)
3915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * RGB_Plane_size = align(RGB_Stride * RGB_Scanlines, 4096)
3925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * RGB_Meta_Stride = align(roundup(Width, RGB_TileWidth), 64)
3935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * RGB_Meta_Scanline = align(roundup(Height, RGB_TileHeight), 16)
3945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * RGB_Meta_Plane_size = align(RGB_Meta_Stride *
3955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *		RGB_Meta_Scanlines, 4096)
3965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Extradata = 8k
3975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *
3985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Total size = align(RGB_Meta_Plane_size + RGB_Plane_size +
3995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *		Extradata, 4096)
4005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
4015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	COLOR_FMT_RGBA8888_UBWC,
4025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
404d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_EXTRADATA_SIZE(int width, int height)
4055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
4065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	(void)height;
4075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	(void)width;
4085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*
4105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * In the future, calculate the size based on the w/h but just
4115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * hardcode it for now since 16K satisfies all current usecases.
4125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
4135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return 16 * 1024;
4145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
4155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
416d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_Y_STRIDE(int color_fmt, int width)
4175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
4185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int alignment, stride = 0;
4195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!width)
4205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
4215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
4235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV21:
4245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12:
4255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_MVTB:
4265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_UBWC:
4275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 128;
4285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		stride = MSM_MEDIA_ALIGN(width, alignment);
4295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
4305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_BPP10_UBWC:
4315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 256;
4325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		stride = MSM_MEDIA_ALIGN(width, 192);
4335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		stride = MSM_MEDIA_ALIGN(stride * 4/3, alignment);
4345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
4355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
4365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
4375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
4385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
4395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return stride;
4405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
4415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
442d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_UV_STRIDE(int color_fmt, int width)
4435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
4445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int alignment, stride = 0;
4455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!width)
4465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
4475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
4495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV21:
4505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12:
4515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_MVTB:
4525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_UBWC:
4535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 128;
4545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		stride = MSM_MEDIA_ALIGN(width, alignment);
4555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
4565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_BPP10_UBWC:
4575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 256;
4585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		stride = MSM_MEDIA_ALIGN(width, 192);
4595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		stride = MSM_MEDIA_ALIGN(stride * 4/3, alignment);
4605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
4615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
4625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
4635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
4645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
4655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return stride;
4665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
4675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
468d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_Y_SCANLINES(int color_fmt, int height)
4695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
4705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int alignment, sclines = 0;
4715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!height)
4725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
4735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
4755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV21:
4765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12:
4775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_MVTB:
4785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_UBWC:
4795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 32;
4805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
4815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_BPP10_UBWC:
4825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 16;
4835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
4845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
4855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		return 0;
4865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
4875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	sclines = MSM_MEDIA_ALIGN(height, alignment);
4885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
4895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return sclines;
4905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
4915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
492d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_UV_SCANLINES(int color_fmt, int height)
4935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
4945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int alignment, sclines = 0;
4955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!height)
4965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
4975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
4995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV21:
5005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12:
5015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_MVTB:
5025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_BPP10_UBWC:
5035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 16;
5045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
5055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_UBWC:
5065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 32;
5075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
5085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
5095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
5105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
5115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	sclines = MSM_MEDIA_ALIGN(height / 2, alignment);
5135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
5155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return sclines;
5165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
5175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
518d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_Y_META_STRIDE(int color_fmt, int width)
5195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
5205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int y_tile_width = 0, y_meta_stride = 0;
5215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!width)
5235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
5245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
5265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_UBWC:
5275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_tile_width = 32;
5285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
5295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_BPP10_UBWC:
5305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_tile_width = 48;
5315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
5325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
5335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
5345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
5355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	y_meta_stride = MSM_MEDIA_ROUNDUP(width, y_tile_width);
5375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	y_meta_stride = MSM_MEDIA_ALIGN(y_meta_stride, 64);
5385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
5405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return y_meta_stride;
5415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
5425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
543d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_Y_META_SCANLINES(int color_fmt, int height)
5445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
5455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int y_tile_height = 0, y_meta_scanlines = 0;
5465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!height)
5485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
5495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
5515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_UBWC:
5525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_tile_height = 8;
5535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
5545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_BPP10_UBWC:
5555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_tile_height = 4;
5565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
5575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
5585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
5595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
5605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	y_meta_scanlines = MSM_MEDIA_ROUNDUP(height, y_tile_height);
5625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	y_meta_scanlines = MSM_MEDIA_ALIGN(y_meta_scanlines, 16);
5635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
5655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return y_meta_scanlines;
5665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
5675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
568d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_UV_META_STRIDE(int color_fmt, int width)
5695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
5705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int uv_tile_width = 0, uv_meta_stride = 0;
5715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!width)
5735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
5745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
5765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_UBWC:
5775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_tile_width = 16;
5785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
5795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_BPP10_UBWC:
5805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_tile_width = 24;
5815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
5825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
5835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
5845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
5855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uv_meta_stride = MSM_MEDIA_ROUNDUP(width / 2, uv_tile_width);
5875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uv_meta_stride = MSM_MEDIA_ALIGN(uv_meta_stride, 64);
5885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
5905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return uv_meta_stride;
5915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
5925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
593d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_UV_META_SCANLINES(int color_fmt, int height)
5945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
5955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int uv_tile_height = 0, uv_meta_scanlines = 0;
5965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!height)
5985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
5995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
6015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_UBWC:
6025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_tile_height = 8;
6035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
6045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_BPP10_UBWC:
6055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_tile_height = 4;
6065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
6075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
6085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
6095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
6105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uv_meta_scanlines = MSM_MEDIA_ROUNDUP(height / 2, uv_tile_height);
6125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uv_meta_scanlines = MSM_MEDIA_ALIGN(uv_meta_scanlines, 16);
6135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
6155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return uv_meta_scanlines;
6165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
6175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
618d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_RGB_STRIDE(int color_fmt, int width)
6195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
6205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int alignment = 0, stride = 0;
6215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!width)
6225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
6235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
6255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_RGBA8888:
6265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 128;
6275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
6285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_RGBA8888_UBWC:
6295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 256;
6305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
6315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
6325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
6335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
6345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	stride = MSM_MEDIA_ALIGN(width * 4, alignment);
6365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
6385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return stride;
6395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
6405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
641d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_RGB_SCANLINES(int color_fmt, int height)
6425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
6435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int alignment = 0, scanlines = 0;
6445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!height)
6465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
6475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
6495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_RGBA8888:
6505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 32;
6515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
6525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_RGBA8888_UBWC:
6535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		alignment = 16;
6545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
6555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
6565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
6575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
6585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	scanlines = MSM_MEDIA_ALIGN(height, alignment);
6605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
6625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return scanlines;
6635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
6645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
665d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_RGB_META_STRIDE(int color_fmt, int width)
6665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
6675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int rgb_tile_width = 0, rgb_meta_stride = 0;
6685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!width)
6705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
6715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
6735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_RGBA8888_UBWC:
6745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		rgb_tile_width = 16;
6755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
6765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
6775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
6785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
6795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	rgb_meta_stride = MSM_MEDIA_ROUNDUP(width, rgb_tile_width);
6815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	rgb_meta_stride = MSM_MEDIA_ALIGN(rgb_meta_stride, 64);
6825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
6845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return rgb_meta_stride;
6855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
6865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
687d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_RGB_META_SCANLINES(int color_fmt, int height)
6885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
6895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int rgb_tile_height = 0, rgb_meta_scanlines = 0;
6905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!height)
6925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
6935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
6955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_RGBA8888_UBWC:
6965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		rgb_tile_height = 4;
6975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
6985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
6995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
7005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
7015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	rgb_meta_scanlines = MSM_MEDIA_ROUNDUP(height, rgb_tile_height);
7035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	rgb_meta_scanlines = MSM_MEDIA_ALIGN(rgb_meta_scanlines, 16);
7045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
7065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return rgb_meta_scanlines;
7075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
7085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
709d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_BUFFER_SIZE(
7105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int color_fmt, int width, int height)
7115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
7125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	const unsigned int extra_size = VENUS_EXTRADATA_SIZE(width, height);
7135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int uv_alignment = 0, size = 0;
7145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int y_plane, uv_plane, y_stride,
7155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_stride, y_sclines, uv_sclines;
7165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int y_ubwc_plane = 0, uv_ubwc_plane = 0;
7175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int y_meta_stride = 0, y_meta_scanlines = 0;
7185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int uv_meta_stride = 0, uv_meta_scanlines = 0;
7195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int y_meta_plane = 0, uv_meta_plane = 0;
7205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int rgb_stride = 0, rgb_scanlines = 0;
7215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int rgb_plane = 0, rgb_ubwc_plane = 0, rgb_meta_plane = 0;
7225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int rgb_meta_stride = 0, rgb_meta_scanlines = 0;
7235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!width || !height)
7255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
7265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	y_stride = VENUS_Y_STRIDE(color_fmt, width);
7285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uv_stride = VENUS_UV_STRIDE(color_fmt, width);
7295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	y_sclines = VENUS_Y_SCANLINES(color_fmt, height);
7305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uv_sclines = VENUS_UV_SCANLINES(color_fmt, height);
7315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	rgb_stride = VENUS_RGB_STRIDE(color_fmt, width);
7325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	rgb_scanlines = VENUS_RGB_SCANLINES(color_fmt, height);
7335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
7355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV21:
7365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12:
7375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_alignment = 4096;
7385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_plane = y_stride * y_sclines;
7395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_plane = uv_stride * uv_sclines + uv_alignment;
7405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = y_plane + uv_plane +
7415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				MSM_MEDIA_MAX(extra_size, 8 * y_stride);
7425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = MSM_MEDIA_ALIGN(size, 4096);
7435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
7445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_MVTB:
7455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_alignment = 4096;
7465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_plane = y_stride * y_sclines;
7475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_plane = uv_stride * uv_sclines + uv_alignment;
7485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = y_plane + uv_plane;
7495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = 2 * size + extra_size;
7505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = MSM_MEDIA_ALIGN(size, 4096);
7515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
7525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_UBWC:
7535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_BPP10_UBWC:
7545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_ubwc_plane = MSM_MEDIA_ALIGN(y_stride * y_sclines, 4096);
7555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_ubwc_plane = MSM_MEDIA_ALIGN(uv_stride * uv_sclines, 4096);
7565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_meta_stride = VENUS_Y_META_STRIDE(color_fmt, width);
7575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_meta_scanlines = VENUS_Y_META_SCANLINES(color_fmt, height);
7585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_meta_plane = MSM_MEDIA_ALIGN(
7595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				y_meta_stride * y_meta_scanlines, 4096);
7605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_meta_stride = VENUS_UV_META_STRIDE(color_fmt, width);
7615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_meta_scanlines = VENUS_UV_META_SCANLINES(color_fmt, height);
7625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_meta_plane = MSM_MEDIA_ALIGN(uv_meta_stride *
7635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					uv_meta_scanlines, 4096);
7645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = y_ubwc_plane + uv_ubwc_plane + y_meta_plane +
7665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			uv_meta_plane +
7675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			MSM_MEDIA_MAX(extra_size + 8192, 48 * y_stride);
7685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = MSM_MEDIA_ALIGN(size, 4096);
7695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
7705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_RGBA8888:
7715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		rgb_plane = MSM_MEDIA_ALIGN(rgb_stride  * rgb_scanlines, 4096);
7725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = rgb_plane;
7735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size =  MSM_MEDIA_ALIGN(size, 4096);
7745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
7755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_RGBA8888_UBWC:
7765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		rgb_ubwc_plane = MSM_MEDIA_ALIGN(rgb_stride * rgb_scanlines,
7775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin							4096);
7785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		rgb_meta_stride = VENUS_RGB_META_STRIDE(color_fmt, width);
7795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		rgb_meta_scanlines = VENUS_RGB_META_SCANLINES(color_fmt,
7805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					height);
7815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		rgb_meta_plane = MSM_MEDIA_ALIGN(rgb_meta_stride *
7825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					rgb_meta_scanlines, 4096);
7835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = rgb_ubwc_plane + rgb_meta_plane;
7845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		size = MSM_MEDIA_ALIGN(size, 4096);
7855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
7865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
7875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
7885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
7895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
7905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return size;
7915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
7925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
793d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinstatic inline unsigned int VENUS_VIEW2_OFFSET(
7945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int color_fmt, int width, int height)
7955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin{
7965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int offset = 0;
7975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int y_plane, uv_plane, y_stride,
7985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_stride, y_sclines, uv_sclines;
7995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	if (!width || !height)
8005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		goto invalid_input;
8015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	y_stride = VENUS_Y_STRIDE(color_fmt, width);
8035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uv_stride = VENUS_UV_STRIDE(color_fmt, width);
8045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	y_sclines = VENUS_Y_SCANLINES(color_fmt, height);
8055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uv_sclines = VENUS_UV_SCANLINES(color_fmt, height);
8065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	switch (color_fmt) {
8075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	case COLOR_FMT_NV12_MVTB:
8085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		y_plane = y_stride * y_sclines;
8095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		uv_plane = uv_stride * uv_sclines;
8105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		offset = y_plane + uv_plane;
8115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
8125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	default:
8135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		break;
8145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	}
8155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjininvalid_input:
8165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	return offset;
8175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}
8185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif
820