125fdd593SJeykumar Sankaran #ifndef __MEDIA_INFO_H__
225fdd593SJeykumar Sankaran #define __MEDIA_INFO_H__
325fdd593SJeykumar Sankaran
425fdd593SJeykumar Sankaran #ifndef MSM_MEDIA_ALIGN
525fdd593SJeykumar Sankaran #define MSM_MEDIA_ALIGN(__sz, __align) (((__align) & ((__align) - 1)) ?\
625fdd593SJeykumar Sankaran ((((__sz) + (__align) - 1) / (__align)) * (__align)) :\
725fdd593SJeykumar Sankaran (((__sz) + (__align) - 1) & (~((__align) - 1))))
825fdd593SJeykumar Sankaran #endif
925fdd593SJeykumar Sankaran
1025fdd593SJeykumar Sankaran #ifndef MSM_MEDIA_ROUNDUP
1125fdd593SJeykumar Sankaran #define MSM_MEDIA_ROUNDUP(__sz, __r) (((__sz) + ((__r) - 1)) / (__r))
1225fdd593SJeykumar Sankaran #endif
1325fdd593SJeykumar Sankaran
1425fdd593SJeykumar Sankaran #ifndef MSM_MEDIA_MAX
1525fdd593SJeykumar Sankaran #define MSM_MEDIA_MAX(__a, __b) ((__a) > (__b)?(__a):(__b))
1625fdd593SJeykumar Sankaran #endif
1725fdd593SJeykumar Sankaran
1825fdd593SJeykumar Sankaran enum color_fmts {
1925fdd593SJeykumar Sankaran /* Venus NV12:
2025fdd593SJeykumar Sankaran * YUV 4:2:0 image with a plane of 8 bit Y samples followed
2125fdd593SJeykumar Sankaran * by an interleaved U/V plane containing 8 bit 2x2 subsampled
2225fdd593SJeykumar Sankaran * colour difference samples.
2325fdd593SJeykumar Sankaran *
2425fdd593SJeykumar Sankaran * <-------- Y/UV_Stride -------->
2525fdd593SJeykumar Sankaran * <------- Width ------->
2625fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^
2725fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
2825fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height |
2925fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines
3025fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
3125fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
3225fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
3325fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V |
3425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
3525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
3625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
3725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
3825fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . ^
3925fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . |
4025fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . |
4125fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . UV_Scanlines
4225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
4325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
4425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . --> Buffer size alignment
4525fdd593SJeykumar Sankaran *
4625fdd593SJeykumar Sankaran * Y_Stride : Width aligned to 128
4725fdd593SJeykumar Sankaran * UV_Stride : Width aligned to 128
4825fdd593SJeykumar Sankaran * Y_Scanlines: Height aligned to 32
4925fdd593SJeykumar Sankaran * UV_Scanlines: Height/2 aligned to 16
5025fdd593SJeykumar Sankaran * Extradata: Arbitrary (software-imposed) padding
5125fdd593SJeykumar Sankaran * Total size = align((Y_Stride * Y_Scanlines
5225fdd593SJeykumar Sankaran * + UV_Stride * UV_Scanlines
5325fdd593SJeykumar Sankaran * + max(Extradata, Y_Stride * 8), 4096)
5425fdd593SJeykumar Sankaran */
5525fdd593SJeykumar Sankaran COLOR_FMT_NV12,
5625fdd593SJeykumar Sankaran
5725fdd593SJeykumar Sankaran /* Venus NV21:
5825fdd593SJeykumar Sankaran * YUV 4:2:0 image with a plane of 8 bit Y samples followed
5925fdd593SJeykumar Sankaran * by an interleaved V/U plane containing 8 bit 2x2 subsampled
6025fdd593SJeykumar Sankaran * colour difference samples.
6125fdd593SJeykumar Sankaran *
6225fdd593SJeykumar Sankaran * <-------- Y/UV_Stride -------->
6325fdd593SJeykumar Sankaran * <------- Width ------->
6425fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^
6525fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
6625fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height |
6725fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines
6825fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
6925fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
7025fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
7125fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V |
7225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
7325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
7425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
7525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
7625fdd593SJeykumar Sankaran * V U V U V U V U V U V U . . . . ^
7725fdd593SJeykumar Sankaran * V U V U V U V U V U V U . . . . |
7825fdd593SJeykumar Sankaran * V U V U V U V U V U V U . . . . |
7925fdd593SJeykumar Sankaran * V U V U V U V U V U V U . . . . UV_Scanlines
8025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
8125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
8225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . --> Padding & Buffer size alignment
8325fdd593SJeykumar Sankaran *
8425fdd593SJeykumar Sankaran * Y_Stride : Width aligned to 128
8525fdd593SJeykumar Sankaran * UV_Stride : Width aligned to 128
8625fdd593SJeykumar Sankaran * Y_Scanlines: Height aligned to 32
8725fdd593SJeykumar Sankaran * UV_Scanlines: Height/2 aligned to 16
8825fdd593SJeykumar Sankaran * Extradata: Arbitrary (software-imposed) padding
8925fdd593SJeykumar Sankaran * Total size = align((Y_Stride * Y_Scanlines
9025fdd593SJeykumar Sankaran * + UV_Stride * UV_Scanlines
9125fdd593SJeykumar Sankaran * + max(Extradata, Y_Stride * 8), 4096)
9225fdd593SJeykumar Sankaran */
9325fdd593SJeykumar Sankaran COLOR_FMT_NV21,
9425fdd593SJeykumar Sankaran /* Venus NV12_MVTB:
9525fdd593SJeykumar Sankaran * Two YUV 4:2:0 images/views one after the other
9625fdd593SJeykumar Sankaran * in a top-bottom layout, same as NV12
9725fdd593SJeykumar Sankaran * with a plane of 8 bit Y samples followed
9825fdd593SJeykumar Sankaran * by an interleaved U/V plane containing 8 bit 2x2 subsampled
9925fdd593SJeykumar Sankaran * colour difference samples.
10025fdd593SJeykumar Sankaran *
10125fdd593SJeykumar Sankaran *
10225fdd593SJeykumar Sankaran * <-------- Y/UV_Stride -------->
10325fdd593SJeykumar Sankaran * <------- Width ------->
10425fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^ ^
10525fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | |
10625fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height | |
10725fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines |
10825fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | |
10925fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | |
11025fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | |
11125fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V | |
11225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . | View_1
11325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . | |
11425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . | |
11525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V |
11625fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . ^ |
11725fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . | |
11825fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . | |
11925fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . UV_Scanlines |
12025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . | |
12125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V V
12225fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^ ^
12325fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | |
12425fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height | |
12525fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines |
12625fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | |
12725fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | |
12825fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | |
12925fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V | |
13025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . | View_2
13125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . | |
13225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . | |
13325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V |
13425fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . ^ |
13525fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . | |
13625fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . | |
13725fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . UV_Scanlines |
13825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . | |
13925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V V
14025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . --> Buffer size alignment
14125fdd593SJeykumar Sankaran *
14225fdd593SJeykumar Sankaran * Y_Stride : Width aligned to 128
14325fdd593SJeykumar Sankaran * UV_Stride : Width aligned to 128
14425fdd593SJeykumar Sankaran * Y_Scanlines: Height aligned to 32
14525fdd593SJeykumar Sankaran * UV_Scanlines: Height/2 aligned to 16
14625fdd593SJeykumar Sankaran * View_1 begin at: 0 (zero)
14725fdd593SJeykumar Sankaran * View_2 begin at: Y_Stride * Y_Scanlines + UV_Stride * UV_Scanlines
14825fdd593SJeykumar Sankaran * Extradata: Arbitrary (software-imposed) padding
14925fdd593SJeykumar Sankaran * Total size = align((2*(Y_Stride * Y_Scanlines)
15025fdd593SJeykumar Sankaran * + 2*(UV_Stride * UV_Scanlines) + Extradata), 4096)
15125fdd593SJeykumar Sankaran */
15225fdd593SJeykumar Sankaran COLOR_FMT_NV12_MVTB,
15325fdd593SJeykumar Sankaran /*
15425fdd593SJeykumar Sankaran * The buffer can be of 2 types:
15525fdd593SJeykumar Sankaran * (1) Venus NV12 UBWC Progressive
15625fdd593SJeykumar Sankaran * (2) Venus NV12 UBWC Interlaced
15725fdd593SJeykumar Sankaran *
15825fdd593SJeykumar Sankaran * (1) Venus NV12 UBWC Progressive Buffer Format:
15925fdd593SJeykumar Sankaran * Compressed Macro-tile format for NV12.
16025fdd593SJeykumar Sankaran * Contains 4 planes in the following order -
16125fdd593SJeykumar Sankaran * (A) Y_Meta_Plane
16225fdd593SJeykumar Sankaran * (B) Y_UBWC_Plane
16325fdd593SJeykumar Sankaran * (C) UV_Meta_Plane
16425fdd593SJeykumar Sankaran * (D) UV_UBWC_Plane
16525fdd593SJeykumar Sankaran *
16625fdd593SJeykumar Sankaran * Y_Meta_Plane consists of meta information to decode compressed
16725fdd593SJeykumar Sankaran * tile data in Y_UBWC_Plane.
16825fdd593SJeykumar Sankaran * Y_UBWC_Plane consists of Y data in compressed macro-tile format.
16925fdd593SJeykumar Sankaran * UBWC decoder block will use the Y_Meta_Plane data together with
17025fdd593SJeykumar Sankaran * Y_UBWC_Plane data to produce loss-less uncompressed 8 bit Y samples.
17125fdd593SJeykumar Sankaran *
17225fdd593SJeykumar Sankaran * UV_Meta_Plane consists of meta information to decode compressed
17325fdd593SJeykumar Sankaran * tile data in UV_UBWC_Plane.
17425fdd593SJeykumar Sankaran * UV_UBWC_Plane consists of UV data in compressed macro-tile format.
17525fdd593SJeykumar Sankaran * UBWC decoder block will use UV_Meta_Plane data together with
17625fdd593SJeykumar Sankaran * UV_UBWC_Plane data to produce loss-less uncompressed 8 bit 2x2
17725fdd593SJeykumar Sankaran * subsampled color difference samples.
17825fdd593SJeykumar Sankaran *
17925fdd593SJeykumar Sankaran * Each tile in Y_UBWC_Plane/UV_UBWC_Plane is independently decodable
18025fdd593SJeykumar Sankaran * and randomly accessible. There is no dependency between tiles.
18125fdd593SJeykumar Sankaran *
18225fdd593SJeykumar Sankaran * <----- Y_Meta_Stride ---->
18325fdd593SJeykumar Sankaran * <-------- Width ------>
18425fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^ ^
18525fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
18625fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . Height |
18725fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | Meta_Y_Scanlines
18825fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
18925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
19025fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
19125fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . V |
19225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
19325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
19425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
19525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
19625fdd593SJeykumar Sankaran * <--Compressed tile Y Stride--->
19725fdd593SJeykumar Sankaran * <------- Width ------->
19825fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . ^ ^
19925fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
20025fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . Height |
20125fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | Macro_tile_Y_Scanlines
20225fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
20325fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
20425fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
20525fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . V |
20625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
20725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
20825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
20925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
21025fdd593SJeykumar Sankaran * <----- UV_Meta_Stride ---->
21125fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^
21225fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
21325fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
21425fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . M_UV_Scanlines
21525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
21625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
21725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
21825fdd593SJeykumar Sankaran * <--Compressed tile UV Stride--->
21925fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . ^
22025fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
22125fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
22225fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . UV_Scanlines
22325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
22425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
22525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
22625fdd593SJeykumar Sankaran *
22725fdd593SJeykumar Sankaran * Y_Stride = align(Width, 128)
22825fdd593SJeykumar Sankaran * UV_Stride = align(Width, 128)
22925fdd593SJeykumar Sankaran * Y_Scanlines = align(Height, 32)
23025fdd593SJeykumar Sankaran * UV_Scanlines = align(Height/2, 16)
23125fdd593SJeykumar Sankaran * Y_UBWC_Plane_size = align(Y_Stride * Y_Scanlines, 4096)
23225fdd593SJeykumar Sankaran * UV_UBWC_Plane_size = align(UV_Stride * UV_Scanlines, 4096)
23325fdd593SJeykumar Sankaran * Y_Meta_Stride = align(roundup(Width, Y_TileWidth), 64)
23425fdd593SJeykumar Sankaran * Y_Meta_Scanlines = align(roundup(Height, Y_TileHeight), 16)
23525fdd593SJeykumar Sankaran * Y_Meta_Plane_size = align(Y_Meta_Stride * Y_Meta_Scanlines, 4096)
23625fdd593SJeykumar Sankaran * UV_Meta_Stride = align(roundup(Width, UV_TileWidth), 64)
23725fdd593SJeykumar Sankaran * UV_Meta_Scanlines = align(roundup(Height, UV_TileHeight), 16)
23825fdd593SJeykumar Sankaran * UV_Meta_Plane_size = align(UV_Meta_Stride * UV_Meta_Scanlines, 4096)
23925fdd593SJeykumar Sankaran * Extradata = 8k
24025fdd593SJeykumar Sankaran *
24125fdd593SJeykumar Sankaran * Total size = align( Y_UBWC_Plane_size + UV_UBWC_Plane_size +
24225fdd593SJeykumar Sankaran * Y_Meta_Plane_size + UV_Meta_Plane_size
24325fdd593SJeykumar Sankaran * + max(Extradata, Y_Stride * 48), 4096)
24425fdd593SJeykumar Sankaran *
24525fdd593SJeykumar Sankaran *
24625fdd593SJeykumar Sankaran * (2) Venus NV12 UBWC Interlaced Buffer Format:
24725fdd593SJeykumar Sankaran * Compressed Macro-tile format for NV12 interlaced.
24825fdd593SJeykumar Sankaran * Contains 8 planes in the following order -
24925fdd593SJeykumar Sankaran * (A) Y_Meta_Top_Field_Plane
25025fdd593SJeykumar Sankaran * (B) Y_UBWC_Top_Field_Plane
25125fdd593SJeykumar Sankaran * (C) UV_Meta_Top_Field_Plane
25225fdd593SJeykumar Sankaran * (D) UV_UBWC_Top_Field_Plane
25325fdd593SJeykumar Sankaran * (E) Y_Meta_Bottom_Field_Plane
25425fdd593SJeykumar Sankaran * (F) Y_UBWC_Bottom_Field_Plane
25525fdd593SJeykumar Sankaran * (G) UV_Meta_Bottom_Field_Plane
25625fdd593SJeykumar Sankaran * (H) UV_UBWC_Bottom_Field_Plane
25725fdd593SJeykumar Sankaran * Y_Meta_Top_Field_Plane consists of meta information to decode
25825fdd593SJeykumar Sankaran * compressed tile data for Y_UBWC_Top_Field_Plane.
25925fdd593SJeykumar Sankaran * Y_UBWC_Top_Field_Plane consists of Y data in compressed macro-tile
26025fdd593SJeykumar Sankaran * format for top field of an interlaced frame.
26125fdd593SJeykumar Sankaran * UBWC decoder block will use the Y_Meta_Top_Field_Plane data together
26225fdd593SJeykumar Sankaran * with Y_UBWC_Top_Field_Plane data to produce loss-less uncompressed
26325fdd593SJeykumar Sankaran * 8 bit Y samples for top field of an interlaced frame.
26425fdd593SJeykumar Sankaran *
26525fdd593SJeykumar Sankaran * UV_Meta_Top_Field_Plane consists of meta information to decode
26625fdd593SJeykumar Sankaran * compressed tile data in UV_UBWC_Top_Field_Plane.
26725fdd593SJeykumar Sankaran * UV_UBWC_Top_Field_Plane consists of UV data in compressed macro-tile
26825fdd593SJeykumar Sankaran * format for top field of an interlaced frame.
26925fdd593SJeykumar Sankaran * UBWC decoder block will use UV_Meta_Top_Field_Plane data together
27025fdd593SJeykumar Sankaran * with UV_UBWC_Top_Field_Plane data to produce loss-less uncompressed
27125fdd593SJeykumar Sankaran * 8 bit subsampled color difference samples for top field of an
27225fdd593SJeykumar Sankaran * interlaced frame.
27325fdd593SJeykumar Sankaran *
27425fdd593SJeykumar Sankaran * Each tile in Y_UBWC_Top_Field_Plane/UV_UBWC_Top_Field_Plane is
27525fdd593SJeykumar Sankaran * independently decodable and randomly accessible. There is no
27625fdd593SJeykumar Sankaran * dependency between tiles.
27725fdd593SJeykumar Sankaran *
27825fdd593SJeykumar Sankaran * Y_Meta_Bottom_Field_Plane consists of meta information to decode
27925fdd593SJeykumar Sankaran * compressed tile data for Y_UBWC_Bottom_Field_Plane.
28025fdd593SJeykumar Sankaran * Y_UBWC_Bottom_Field_Plane consists of Y data in compressed macro-tile
28125fdd593SJeykumar Sankaran * format for bottom field of an interlaced frame.
28225fdd593SJeykumar Sankaran * UBWC decoder block will use the Y_Meta_Bottom_Field_Plane data
28325fdd593SJeykumar Sankaran * together with Y_UBWC_Bottom_Field_Plane data to produce loss-less
28425fdd593SJeykumar Sankaran * uncompressed 8 bit Y samples for bottom field of an interlaced frame.
28525fdd593SJeykumar Sankaran *
28625fdd593SJeykumar Sankaran * UV_Meta_Bottom_Field_Plane consists of meta information to decode
28725fdd593SJeykumar Sankaran * compressed tile data in UV_UBWC_Bottom_Field_Plane.
28825fdd593SJeykumar Sankaran * UV_UBWC_Bottom_Field_Plane consists of UV data in compressed
28925fdd593SJeykumar Sankaran * macro-tile format for bottom field of an interlaced frame.
29025fdd593SJeykumar Sankaran * UBWC decoder block will use UV_Meta_Bottom_Field_Plane data together
29125fdd593SJeykumar Sankaran * with UV_UBWC_Bottom_Field_Plane data to produce loss-less
29225fdd593SJeykumar Sankaran * uncompressed 8 bit subsampled color difference samples for bottom
29325fdd593SJeykumar Sankaran * field of an interlaced frame.
29425fdd593SJeykumar Sankaran *
29525fdd593SJeykumar Sankaran * Each tile in Y_UBWC_Bottom_Field_Plane/UV_UBWC_Bottom_Field_Plane is
29625fdd593SJeykumar Sankaran * independently decodable and randomly accessible. There is no
29725fdd593SJeykumar Sankaran * dependency between tiles.
29825fdd593SJeykumar Sankaran *
29925fdd593SJeykumar Sankaran * <-----Y_TF_Meta_Stride---->
30025fdd593SJeykumar Sankaran * <-------- Width ------>
30125fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^ ^
30225fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
30325fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . Half_height |
30425fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | Meta_Y_TF_Scanlines
30525fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
30625fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
30725fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
30825fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . V |
30925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
31025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
31125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
31225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
31325fdd593SJeykumar Sankaran * <-Compressed tile Y_TF Stride->
31425fdd593SJeykumar Sankaran * <------- Width ------->
31525fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . ^ ^
31625fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
31725fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . Half_height |
31825fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | Macro_tile_Y_TF_Scanlines
31925fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
32025fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
32125fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
32225fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . V |
32325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
32425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
32525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
32625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
32725fdd593SJeykumar Sankaran * <----UV_TF_Meta_Stride---->
32825fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^
32925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
33025fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
33125fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . M_UV_TF_Scanlines
33225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
33325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
33425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
33525fdd593SJeykumar Sankaran * <-Compressed tile UV_TF Stride->
33625fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . ^
33725fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
33825fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
33925fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . UV_TF_Scanlines
34025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
34125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
34225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
34325fdd593SJeykumar Sankaran * <-----Y_BF_Meta_Stride---->
34425fdd593SJeykumar Sankaran * <-------- Width ------>
34525fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^ ^
34625fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
34725fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . Half_height |
34825fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | Meta_Y_BF_Scanlines
34925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
35025fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
35125fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
35225fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . V |
35325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
35425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
35525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
35625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
35725fdd593SJeykumar Sankaran * <-Compressed tile Y_BF Stride->
35825fdd593SJeykumar Sankaran * <------- Width ------->
35925fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . ^ ^
36025fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
36125fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . Half_height |
36225fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | Macro_tile_Y_BF_Scanlines
36325fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
36425fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
36525fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
36625fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . V |
36725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
36825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
36925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
37025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
37125fdd593SJeykumar Sankaran * <----UV_BF_Meta_Stride---->
37225fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^
37325fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
37425fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
37525fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . M_UV_BF_Scanlines
37625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
37725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
37825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
37925fdd593SJeykumar Sankaran * <-Compressed tile UV_BF Stride->
38025fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . ^
38125fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
38225fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
38325fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . UV_BF_Scanlines
38425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
38525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
38625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
38725fdd593SJeykumar Sankaran *
38825fdd593SJeykumar Sankaran * Half_height = (Height+1)>>1
38925fdd593SJeykumar Sankaran * Y_TF_Stride = align(Width, 128)
39025fdd593SJeykumar Sankaran * UV_TF_Stride = align(Width, 128)
39125fdd593SJeykumar Sankaran * Y_TF_Scanlines = align(Half_height, 32)
39225fdd593SJeykumar Sankaran * UV_TF_Scanlines = align((Half_height+1)/2, 32)
39325fdd593SJeykumar Sankaran * Y_UBWC_TF_Plane_size = align(Y_TF_Stride * Y_TF_Scanlines, 4096)
39425fdd593SJeykumar Sankaran * UV_UBWC_TF_Plane_size = align(UV_TF_Stride * UV_TF_Scanlines, 4096)
39525fdd593SJeykumar Sankaran * Y_TF_Meta_Stride = align(roundup(Width, Y_TileWidth), 64)
39625fdd593SJeykumar Sankaran * Y_TF_Meta_Scanlines = align(roundup(Half_height, Y_TileHeight), 16)
39725fdd593SJeykumar Sankaran * Y_TF_Meta_Plane_size =
39825fdd593SJeykumar Sankaran * align(Y_TF_Meta_Stride * Y_TF_Meta_Scanlines, 4096)
39925fdd593SJeykumar Sankaran * UV_TF_Meta_Stride = align(roundup(Width, UV_TileWidth), 64)
40025fdd593SJeykumar Sankaran * UV_TF_Meta_Scanlines = align(roundup(Half_height, UV_TileHeight), 16)
40125fdd593SJeykumar Sankaran * UV_TF_Meta_Plane_size =
40225fdd593SJeykumar Sankaran * align(UV_TF_Meta_Stride * UV_TF_Meta_Scanlines, 4096)
40325fdd593SJeykumar Sankaran * Y_BF_Stride = align(Width, 128)
40425fdd593SJeykumar Sankaran * UV_BF_Stride = align(Width, 128)
40525fdd593SJeykumar Sankaran * Y_BF_Scanlines = align(Half_height, 32)
40625fdd593SJeykumar Sankaran * UV_BF_Scanlines = align((Half_height+1)/2, 32)
40725fdd593SJeykumar Sankaran * Y_UBWC_BF_Plane_size = align(Y_BF_Stride * Y_BF_Scanlines, 4096)
40825fdd593SJeykumar Sankaran * UV_UBWC_BF_Plane_size = align(UV_BF_Stride * UV_BF_Scanlines, 4096)
40925fdd593SJeykumar Sankaran * Y_BF_Meta_Stride = align(roundup(Width, Y_TileWidth), 64)
41025fdd593SJeykumar Sankaran * Y_BF_Meta_Scanlines = align(roundup(Half_height, Y_TileHeight), 16)
41125fdd593SJeykumar Sankaran * Y_BF_Meta_Plane_size =
41225fdd593SJeykumar Sankaran * align(Y_BF_Meta_Stride * Y_BF_Meta_Scanlines, 4096)
41325fdd593SJeykumar Sankaran * UV_BF_Meta_Stride = align(roundup(Width, UV_TileWidth), 64)
41425fdd593SJeykumar Sankaran * UV_BF_Meta_Scanlines = align(roundup(Half_height, UV_TileHeight), 16)
41525fdd593SJeykumar Sankaran * UV_BF_Meta_Plane_size =
41625fdd593SJeykumar Sankaran * align(UV_BF_Meta_Stride * UV_BF_Meta_Scanlines, 4096)
41725fdd593SJeykumar Sankaran * Extradata = 8k
41825fdd593SJeykumar Sankaran *
41925fdd593SJeykumar Sankaran * Total size = align( Y_UBWC_TF_Plane_size + UV_UBWC_TF_Plane_size +
42025fdd593SJeykumar Sankaran * Y_TF_Meta_Plane_size + UV_TF_Meta_Plane_size +
42125fdd593SJeykumar Sankaran * Y_UBWC_BF_Plane_size + UV_UBWC_BF_Plane_size +
42225fdd593SJeykumar Sankaran * Y_BF_Meta_Plane_size + UV_BF_Meta_Plane_size +
42325fdd593SJeykumar Sankaran * + max(Extradata, Y_TF_Stride * 48), 4096)
42425fdd593SJeykumar Sankaran */
42525fdd593SJeykumar Sankaran COLOR_FMT_NV12_UBWC,
42625fdd593SJeykumar Sankaran /* Venus NV12 10-bit UBWC:
42725fdd593SJeykumar Sankaran * Compressed Macro-tile format for NV12.
42825fdd593SJeykumar Sankaran * Contains 4 planes in the following order -
42925fdd593SJeykumar Sankaran * (A) Y_Meta_Plane
43025fdd593SJeykumar Sankaran * (B) Y_UBWC_Plane
43125fdd593SJeykumar Sankaran * (C) UV_Meta_Plane
43225fdd593SJeykumar Sankaran * (D) UV_UBWC_Plane
43325fdd593SJeykumar Sankaran *
43425fdd593SJeykumar Sankaran * Y_Meta_Plane consists of meta information to decode compressed
43525fdd593SJeykumar Sankaran * tile data in Y_UBWC_Plane.
43625fdd593SJeykumar Sankaran * Y_UBWC_Plane consists of Y data in compressed macro-tile format.
43725fdd593SJeykumar Sankaran * UBWC decoder block will use the Y_Meta_Plane data together with
43825fdd593SJeykumar Sankaran * Y_UBWC_Plane data to produce loss-less uncompressed 10 bit Y samples.
43925fdd593SJeykumar Sankaran *
44025fdd593SJeykumar Sankaran * UV_Meta_Plane consists of meta information to decode compressed
44125fdd593SJeykumar Sankaran * tile data in UV_UBWC_Plane.
44225fdd593SJeykumar Sankaran * UV_UBWC_Plane consists of UV data in compressed macro-tile format.
44325fdd593SJeykumar Sankaran * UBWC decoder block will use UV_Meta_Plane data together with
44425fdd593SJeykumar Sankaran * UV_UBWC_Plane data to produce loss-less uncompressed 10 bit 2x2
44525fdd593SJeykumar Sankaran * subsampled color difference samples.
44625fdd593SJeykumar Sankaran *
44725fdd593SJeykumar Sankaran * Each tile in Y_UBWC_Plane/UV_UBWC_Plane is independently decodable
44825fdd593SJeykumar Sankaran * and randomly accessible. There is no dependency between tiles.
44925fdd593SJeykumar Sankaran *
45025fdd593SJeykumar Sankaran * <----- Y_Meta_Stride ----->
45125fdd593SJeykumar Sankaran * <-------- Width ------>
45225fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^ ^
45325fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
45425fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . Height |
45525fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | Meta_Y_Scanlines
45625fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
45725fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
45825fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
45925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . V |
46025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
46125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
46225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
46325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
46425fdd593SJeykumar Sankaran * <--Compressed tile Y Stride--->
46525fdd593SJeykumar Sankaran * <------- Width ------->
46625fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . ^ ^
46725fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
46825fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . Height |
46925fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | Macro_tile_Y_Scanlines
47025fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
47125fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
47225fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
47325fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . V |
47425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
47525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
47625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
47725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
47825fdd593SJeykumar Sankaran * <----- UV_Meta_Stride ---->
47925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^
48025fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
48125fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
48225fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . M_UV_Scanlines
48325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
48425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
48525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
48625fdd593SJeykumar Sankaran * <--Compressed tile UV Stride--->
48725fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . ^
48825fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
48925fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
49025fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . UV_Scanlines
49125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
49225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
49325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
49425fdd593SJeykumar Sankaran *
49525fdd593SJeykumar Sankaran *
49625fdd593SJeykumar Sankaran * Y_Stride = align(Width * 4/3, 128)
49725fdd593SJeykumar Sankaran * UV_Stride = align(Width * 4/3, 128)
49825fdd593SJeykumar Sankaran * Y_Scanlines = align(Height, 32)
49925fdd593SJeykumar Sankaran * UV_Scanlines = align(Height/2, 16)
50025fdd593SJeykumar Sankaran * Y_UBWC_Plane_Size = align(Y_Stride * Y_Scanlines, 4096)
50125fdd593SJeykumar Sankaran * UV_UBWC_Plane_Size = align(UV_Stride * UV_Scanlines, 4096)
50225fdd593SJeykumar Sankaran * Y_Meta_Stride = align(roundup(Width, Y_TileWidth), 64)
50325fdd593SJeykumar Sankaran * Y_Meta_Scanlines = align(roundup(Height, Y_TileHeight), 16)
50425fdd593SJeykumar Sankaran * Y_Meta_Plane_size = align(Y_Meta_Stride * Y_Meta_Scanlines, 4096)
50525fdd593SJeykumar Sankaran * UV_Meta_Stride = align(roundup(Width, UV_TileWidth), 64)
50625fdd593SJeykumar Sankaran * UV_Meta_Scanlines = align(roundup(Height, UV_TileHeight), 16)
50725fdd593SJeykumar Sankaran * UV_Meta_Plane_size = align(UV_Meta_Stride * UV_Meta_Scanlines, 4096)
50825fdd593SJeykumar Sankaran * Extradata = 8k
50925fdd593SJeykumar Sankaran *
51025fdd593SJeykumar Sankaran * Total size = align(Y_UBWC_Plane_size + UV_UBWC_Plane_size +
51125fdd593SJeykumar Sankaran * Y_Meta_Plane_size + UV_Meta_Plane_size
51225fdd593SJeykumar Sankaran * + max(Extradata, Y_Stride * 48), 4096)
51325fdd593SJeykumar Sankaran */
51425fdd593SJeykumar Sankaran COLOR_FMT_NV12_BPP10_UBWC,
51525fdd593SJeykumar Sankaran /* Venus RGBA8888 format:
51625fdd593SJeykumar Sankaran * Contains 1 plane in the following order -
51725fdd593SJeykumar Sankaran * (A) RGBA plane
51825fdd593SJeykumar Sankaran *
51925fdd593SJeykumar Sankaran * <-------- RGB_Stride -------->
52025fdd593SJeykumar Sankaran * <------- Width ------->
52125fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . ^ ^
52225fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
52325fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . Height |
52425fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | RGB_Scanlines
52525fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
52625fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
52725fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
52825fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . V |
52925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
53025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
53125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
53225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
53325fdd593SJeykumar Sankaran *
53425fdd593SJeykumar Sankaran * RGB_Stride = align(Width * 4, 128)
53525fdd593SJeykumar Sankaran * RGB_Scanlines = align(Height, 32)
53625fdd593SJeykumar Sankaran * RGB_Plane_size = align(RGB_Stride * RGB_Scanlines, 4096)
53725fdd593SJeykumar Sankaran * Extradata = 8k
53825fdd593SJeykumar Sankaran *
53925fdd593SJeykumar Sankaran * Total size = align(RGB_Plane_size + Extradata, 4096)
54025fdd593SJeykumar Sankaran */
54125fdd593SJeykumar Sankaran COLOR_FMT_RGBA8888,
54225fdd593SJeykumar Sankaran /* Venus RGBA8888 UBWC format:
54325fdd593SJeykumar Sankaran * Contains 2 planes in the following order -
54425fdd593SJeykumar Sankaran * (A) Meta plane
54525fdd593SJeykumar Sankaran * (B) RGBA plane
54625fdd593SJeykumar Sankaran *
54725fdd593SJeykumar Sankaran * <--- RGB_Meta_Stride ---->
54825fdd593SJeykumar Sankaran * <-------- Width ------>
54925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^ ^
55025fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
55125fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . Height |
55225fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | Meta_RGB_Scanlines
55325fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
55425fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
55525fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
55625fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . V |
55725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
55825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
55925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
56025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
56125fdd593SJeykumar Sankaran * <-------- RGB_Stride -------->
56225fdd593SJeykumar Sankaran * <------- Width ------->
56325fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . ^ ^
56425fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
56525fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . Height |
56625fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | RGB_Scanlines
56725fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
56825fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
56925fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
57025fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . V |
57125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
57225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
57325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
57425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
57525fdd593SJeykumar Sankaran *
57625fdd593SJeykumar Sankaran * RGB_Stride = align(Width * 4, 128)
57725fdd593SJeykumar Sankaran * RGB_Scanlines = align(Height, 32)
57825fdd593SJeykumar Sankaran * RGB_Plane_size = align(RGB_Stride * RGB_Scanlines, 4096)
57925fdd593SJeykumar Sankaran * RGB_Meta_Stride = align(roundup(Width, RGB_TileWidth), 64)
58025fdd593SJeykumar Sankaran * RGB_Meta_Scanline = align(roundup(Height, RGB_TileHeight), 16)
58125fdd593SJeykumar Sankaran * RGB_Meta_Plane_size = align(RGB_Meta_Stride *
58225fdd593SJeykumar Sankaran * RGB_Meta_Scanlines, 4096)
58325fdd593SJeykumar Sankaran * Extradata = 8k
58425fdd593SJeykumar Sankaran *
58525fdd593SJeykumar Sankaran * Total size = align(RGB_Meta_Plane_size + RGB_Plane_size +
58625fdd593SJeykumar Sankaran * Extradata, 4096)
58725fdd593SJeykumar Sankaran */
58825fdd593SJeykumar Sankaran COLOR_FMT_RGBA8888_UBWC,
58925fdd593SJeykumar Sankaran /* Venus RGBA1010102 UBWC format:
59025fdd593SJeykumar Sankaran * Contains 2 planes in the following order -
59125fdd593SJeykumar Sankaran * (A) Meta plane
59225fdd593SJeykumar Sankaran * (B) RGBA plane
59325fdd593SJeykumar Sankaran *
59425fdd593SJeykumar Sankaran * <--- RGB_Meta_Stride ---->
59525fdd593SJeykumar Sankaran * <-------- Width ------>
59625fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^ ^
59725fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
59825fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . Height |
59925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | Meta_RGB_Scanlines
60025fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
60125fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
60225fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
60325fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . V |
60425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
60525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
60625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
60725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
60825fdd593SJeykumar Sankaran * <-------- RGB_Stride -------->
60925fdd593SJeykumar Sankaran * <------- Width ------->
61025fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . ^ ^
61125fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
61225fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . Height |
61325fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | RGB_Scanlines
61425fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
61525fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
61625fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
61725fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . V |
61825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
61925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
62025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
62125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
62225fdd593SJeykumar Sankaran *
62325fdd593SJeykumar Sankaran * RGB_Stride = align(Width * 4, 256)
62425fdd593SJeykumar Sankaran * RGB_Scanlines = align(Height, 16)
62525fdd593SJeykumar Sankaran * RGB_Plane_size = align(RGB_Stride * RGB_Scanlines, 4096)
62625fdd593SJeykumar Sankaran * RGB_Meta_Stride = align(roundup(Width, RGB_TileWidth), 64)
62725fdd593SJeykumar Sankaran * RGB_Meta_Scanline = align(roundup(Height, RGB_TileHeight), 16)
62825fdd593SJeykumar Sankaran * RGB_Meta_Plane_size = align(RGB_Meta_Stride *
62925fdd593SJeykumar Sankaran * RGB_Meta_Scanlines, 4096)
63025fdd593SJeykumar Sankaran * Extradata = 8k
63125fdd593SJeykumar Sankaran *
63225fdd593SJeykumar Sankaran * Total size = align(RGB_Meta_Plane_size + RGB_Plane_size +
63325fdd593SJeykumar Sankaran * Extradata, 4096)
63425fdd593SJeykumar Sankaran */
63525fdd593SJeykumar Sankaran COLOR_FMT_RGBA1010102_UBWC,
63625fdd593SJeykumar Sankaran /* Venus RGB565 UBWC format:
63725fdd593SJeykumar Sankaran * Contains 2 planes in the following order -
63825fdd593SJeykumar Sankaran * (A) Meta plane
63925fdd593SJeykumar Sankaran * (B) RGB plane
64025fdd593SJeykumar Sankaran *
64125fdd593SJeykumar Sankaran * <--- RGB_Meta_Stride ---->
64225fdd593SJeykumar Sankaran * <-------- Width ------>
64325fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^ ^
64425fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
64525fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . Height |
64625fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | Meta_RGB_Scanlines
64725fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
64825fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
64925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
65025fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . V |
65125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
65225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
65325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
65425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
65525fdd593SJeykumar Sankaran * <-------- RGB_Stride -------->
65625fdd593SJeykumar Sankaran * <------- Width ------->
65725fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . ^ ^
65825fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
65925fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . Height |
66025fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | RGB_Scanlines
66125fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
66225fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
66325fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . | |
66425fdd593SJeykumar Sankaran * R R R R R R R R R R R R . . . . V |
66525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
66625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
66725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
66825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
66925fdd593SJeykumar Sankaran *
67025fdd593SJeykumar Sankaran * RGB_Stride = align(Width * 2, 128)
67125fdd593SJeykumar Sankaran * RGB_Scanlines = align(Height, 16)
67225fdd593SJeykumar Sankaran * RGB_Plane_size = align(RGB_Stride * RGB_Scanlines, 4096)
67325fdd593SJeykumar Sankaran * RGB_Meta_Stride = align(roundup(Width, RGB_TileWidth), 64)
67425fdd593SJeykumar Sankaran * RGB_Meta_Scanline = align(roundup(Height, RGB_TileHeight), 16)
67525fdd593SJeykumar Sankaran * RGB_Meta_Plane_size = align(RGB_Meta_Stride *
67625fdd593SJeykumar Sankaran * RGB_Meta_Scanlines, 4096)
67725fdd593SJeykumar Sankaran * Extradata = 8k
67825fdd593SJeykumar Sankaran *
67925fdd593SJeykumar Sankaran * Total size = align(RGB_Meta_Plane_size + RGB_Plane_size +
68025fdd593SJeykumar Sankaran * Extradata, 4096)
68125fdd593SJeykumar Sankaran */
68225fdd593SJeykumar Sankaran COLOR_FMT_RGB565_UBWC,
68325fdd593SJeykumar Sankaran /* P010 UBWC:
68425fdd593SJeykumar Sankaran * Compressed Macro-tile format for NV12.
68525fdd593SJeykumar Sankaran * Contains 4 planes in the following order -
68625fdd593SJeykumar Sankaran * (A) Y_Meta_Plane
68725fdd593SJeykumar Sankaran * (B) Y_UBWC_Plane
68825fdd593SJeykumar Sankaran * (C) UV_Meta_Plane
68925fdd593SJeykumar Sankaran * (D) UV_UBWC_Plane
69025fdd593SJeykumar Sankaran *
69125fdd593SJeykumar Sankaran * Y_Meta_Plane consists of meta information to decode compressed
69225fdd593SJeykumar Sankaran * tile data in Y_UBWC_Plane.
69325fdd593SJeykumar Sankaran * Y_UBWC_Plane consists of Y data in compressed macro-tile format.
69425fdd593SJeykumar Sankaran * UBWC decoder block will use the Y_Meta_Plane data together with
69525fdd593SJeykumar Sankaran * Y_UBWC_Plane data to produce loss-less uncompressed 10 bit Y samples.
69625fdd593SJeykumar Sankaran *
69725fdd593SJeykumar Sankaran * UV_Meta_Plane consists of meta information to decode compressed
69825fdd593SJeykumar Sankaran * tile data in UV_UBWC_Plane.
69925fdd593SJeykumar Sankaran * UV_UBWC_Plane consists of UV data in compressed macro-tile format.
70025fdd593SJeykumar Sankaran * UBWC decoder block will use UV_Meta_Plane data together with
70125fdd593SJeykumar Sankaran * UV_UBWC_Plane data to produce loss-less uncompressed 10 bit 2x2
70225fdd593SJeykumar Sankaran * subsampled color difference samples.
70325fdd593SJeykumar Sankaran *
70425fdd593SJeykumar Sankaran * Each tile in Y_UBWC_Plane/UV_UBWC_Plane is independently decodable
70525fdd593SJeykumar Sankaran * and randomly accessible. There is no dependency between tiles.
70625fdd593SJeykumar Sankaran *
70725fdd593SJeykumar Sankaran * <----- Y_Meta_Stride ----->
70825fdd593SJeykumar Sankaran * <-------- Width ------>
70925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^ ^
71025fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
71125fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . Height |
71225fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | Meta_Y_Scanlines
71325fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
71425fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
71525fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . | |
71625fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . V |
71725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
71825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
71925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
72025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
72125fdd593SJeykumar Sankaran * <--Compressed tile Y Stride--->
72225fdd593SJeykumar Sankaran * <------- Width ------->
72325fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . ^ ^
72425fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
72525fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . Height |
72625fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | Macro_tile_Y_Scanlines
72725fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
72825fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
72925fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . | |
73025fdd593SJeykumar Sankaran * Y* Y* Y* Y* Y* Y* Y* Y* . . . . V |
73125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
73225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
73325fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
73425fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
73525fdd593SJeykumar Sankaran * <----- UV_Meta_Stride ---->
73625fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . ^
73725fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
73825fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . |
73925fdd593SJeykumar Sankaran * M M M M M M M M M M M M . . M_UV_Scanlines
74025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . |
74125fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . V
74225fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
74325fdd593SJeykumar Sankaran * <--Compressed tile UV Stride--->
74425fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . ^
74525fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
74625fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . |
74725fdd593SJeykumar Sankaran * U* V* U* V* U* V* U* V* . . . . UV_Scanlines
74825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
74925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
75025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . -------> Buffer size aligned to 4k
75125fdd593SJeykumar Sankaran *
75225fdd593SJeykumar Sankaran *
75325fdd593SJeykumar Sankaran * Y_Stride = align(Width * 2, 256)
75425fdd593SJeykumar Sankaran * UV_Stride = align(Width * 2, 256)
75525fdd593SJeykumar Sankaran * Y_Scanlines = align(Height, 16)
75625fdd593SJeykumar Sankaran * UV_Scanlines = align(Height/2, 16)
75725fdd593SJeykumar Sankaran * Y_UBWC_Plane_Size = align(Y_Stride * Y_Scanlines, 4096)
75825fdd593SJeykumar Sankaran * UV_UBWC_Plane_Size = align(UV_Stride * UV_Scanlines, 4096)
75925fdd593SJeykumar Sankaran * Y_Meta_Stride = align(roundup(Width, Y_TileWidth), 64)
76025fdd593SJeykumar Sankaran * Y_Meta_Scanlines = align(roundup(Height, Y_TileHeight), 16)
76125fdd593SJeykumar Sankaran * Y_Meta_Plane_size = align(Y_Meta_Stride * Y_Meta_Scanlines, 4096)
76225fdd593SJeykumar Sankaran * UV_Meta_Stride = align(roundup(Width, UV_TileWidth), 64)
76325fdd593SJeykumar Sankaran * UV_Meta_Scanlines = align(roundup(Height, UV_TileHeight), 16)
76425fdd593SJeykumar Sankaran * UV_Meta_Plane_size = align(UV_Meta_Stride * UV_Meta_Scanlines, 4096)
76525fdd593SJeykumar Sankaran * Extradata = 8k
76625fdd593SJeykumar Sankaran *
76725fdd593SJeykumar Sankaran * Total size = align(Y_UBWC_Plane_size + UV_UBWC_Plane_size +
76825fdd593SJeykumar Sankaran * Y_Meta_Plane_size + UV_Meta_Plane_size
76925fdd593SJeykumar Sankaran * + max(Extradata, Y_Stride * 48), 4096)
77025fdd593SJeykumar Sankaran */
77125fdd593SJeykumar Sankaran COLOR_FMT_P010_UBWC,
77225fdd593SJeykumar Sankaran /* Venus P010:
77325fdd593SJeykumar Sankaran * YUV 4:2:0 image with a plane of 10 bit Y samples followed
77425fdd593SJeykumar Sankaran * by an interleaved U/V plane containing 10 bit 2x2 subsampled
77525fdd593SJeykumar Sankaran * colour difference samples.
77625fdd593SJeykumar Sankaran *
77725fdd593SJeykumar Sankaran * <-------- Y/UV_Stride -------->
77825fdd593SJeykumar Sankaran * <------- Width ------->
77925fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^
78025fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
78125fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height |
78225fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines
78325fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
78425fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
78525fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | |
78625fdd593SJeykumar Sankaran * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V |
78725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
78825fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
78925fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
79025fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
79125fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . ^
79225fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . |
79325fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . |
79425fdd593SJeykumar Sankaran * U V U V U V U V U V U V . . . . UV_Scanlines
79525fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . |
79625fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . V
79725fdd593SJeykumar Sankaran * . . . . . . . . . . . . . . . . --> Buffer size alignment
79825fdd593SJeykumar Sankaran *
79925fdd593SJeykumar Sankaran * Y_Stride : Width * 2 aligned to 128
80025fdd593SJeykumar Sankaran * UV_Stride : Width * 2 aligned to 128
80125fdd593SJeykumar Sankaran * Y_Scanlines: Height aligned to 32
80225fdd593SJeykumar Sankaran * UV_Scanlines: Height/2 aligned to 16
80325fdd593SJeykumar Sankaran * Extradata: Arbitrary (software-imposed) padding
80425fdd593SJeykumar Sankaran * Total size = align((Y_Stride * Y_Scanlines
80525fdd593SJeykumar Sankaran * + UV_Stride * UV_Scanlines
80625fdd593SJeykumar Sankaran * + max(Extradata, Y_Stride * 8), 4096)
80725fdd593SJeykumar Sankaran */
80825fdd593SJeykumar Sankaran COLOR_FMT_P010,
80925fdd593SJeykumar Sankaran };
81025fdd593SJeykumar Sankaran
81125fdd593SJeykumar Sankaran #define COLOR_FMT_RGBA1010102_UBWC COLOR_FMT_RGBA1010102_UBWC
81225fdd593SJeykumar Sankaran #define COLOR_FMT_RGB565_UBWC COLOR_FMT_RGB565_UBWC
81325fdd593SJeykumar Sankaran #define COLOR_FMT_P010_UBWC COLOR_FMT_P010_UBWC
81425fdd593SJeykumar Sankaran #define COLOR_FMT_P010 COLOR_FMT_P010
81525fdd593SJeykumar Sankaran
81625fdd593SJeykumar Sankaran /*
81725fdd593SJeykumar Sankaran * Function arguments:
81825fdd593SJeykumar Sankaran * @color_fmt
81925fdd593SJeykumar Sankaran * @width
82025fdd593SJeykumar Sankaran * Progressive: width
82125fdd593SJeykumar Sankaran * Interlaced: width
82225fdd593SJeykumar Sankaran */
VENUS_Y_STRIDE(int color_fmt,int width)82358fba464SSean Paul static unsigned int VENUS_Y_STRIDE(int color_fmt, int width)
82425fdd593SJeykumar Sankaran {
825*7adc4a34SJordan Crouse unsigned int stride = 0;
82625fdd593SJeykumar Sankaran
82725fdd593SJeykumar Sankaran if (!width)
828*7adc4a34SJordan Crouse return 0;
82925fdd593SJeykumar Sankaran
83025fdd593SJeykumar Sankaran switch (color_fmt) {
83125fdd593SJeykumar Sankaran case COLOR_FMT_NV21:
83225fdd593SJeykumar Sankaran case COLOR_FMT_NV12:
83325fdd593SJeykumar Sankaran case COLOR_FMT_NV12_MVTB:
83425fdd593SJeykumar Sankaran case COLOR_FMT_NV12_UBWC:
835*7adc4a34SJordan Crouse stride = MSM_MEDIA_ALIGN(width, 128);
83625fdd593SJeykumar Sankaran break;
83725fdd593SJeykumar Sankaran case COLOR_FMT_NV12_BPP10_UBWC:
83825fdd593SJeykumar Sankaran stride = MSM_MEDIA_ALIGN(width, 192);
839*7adc4a34SJordan Crouse stride = MSM_MEDIA_ALIGN(stride * 4 / 3, 256);
84025fdd593SJeykumar Sankaran break;
84125fdd593SJeykumar Sankaran case COLOR_FMT_P010_UBWC:
842*7adc4a34SJordan Crouse stride = MSM_MEDIA_ALIGN(width * 2, 256);
84325fdd593SJeykumar Sankaran break;
84425fdd593SJeykumar Sankaran case COLOR_FMT_P010:
845*7adc4a34SJordan Crouse stride = MSM_MEDIA_ALIGN(width * 2, 128);
84625fdd593SJeykumar Sankaran break;
84725fdd593SJeykumar Sankaran }
848*7adc4a34SJordan Crouse
84925fdd593SJeykumar Sankaran return stride;
85025fdd593SJeykumar Sankaran }
85125fdd593SJeykumar Sankaran
85225fdd593SJeykumar Sankaran /*
85325fdd593SJeykumar Sankaran * Function arguments:
85425fdd593SJeykumar Sankaran * @color_fmt
85525fdd593SJeykumar Sankaran * @width
85625fdd593SJeykumar Sankaran * Progressive: width
85725fdd593SJeykumar Sankaran * Interlaced: width
85825fdd593SJeykumar Sankaran */
VENUS_UV_STRIDE(int color_fmt,int width)85958fba464SSean Paul static unsigned int VENUS_UV_STRIDE(int color_fmt, int width)
86025fdd593SJeykumar Sankaran {
861*7adc4a34SJordan Crouse unsigned int stride = 0;
86225fdd593SJeykumar Sankaran
86325fdd593SJeykumar Sankaran if (!width)
864*7adc4a34SJordan Crouse return 0;
86525fdd593SJeykumar Sankaran
86625fdd593SJeykumar Sankaran switch (color_fmt) {
86725fdd593SJeykumar Sankaran case COLOR_FMT_NV21:
86825fdd593SJeykumar Sankaran case COLOR_FMT_NV12:
86925fdd593SJeykumar Sankaran case COLOR_FMT_NV12_MVTB:
87025fdd593SJeykumar Sankaran case COLOR_FMT_NV12_UBWC:
871*7adc4a34SJordan Crouse stride = MSM_MEDIA_ALIGN(width, 128);
87225fdd593SJeykumar Sankaran break;
87325fdd593SJeykumar Sankaran case COLOR_FMT_NV12_BPP10_UBWC:
87425fdd593SJeykumar Sankaran stride = MSM_MEDIA_ALIGN(width, 192);
875*7adc4a34SJordan Crouse stride = MSM_MEDIA_ALIGN(stride * 4 / 3, 256);
87625fdd593SJeykumar Sankaran break;
87725fdd593SJeykumar Sankaran case COLOR_FMT_P010_UBWC:
878*7adc4a34SJordan Crouse stride = MSM_MEDIA_ALIGN(width * 2, 256);
87925fdd593SJeykumar Sankaran break;
88025fdd593SJeykumar Sankaran case COLOR_FMT_P010:
881*7adc4a34SJordan Crouse stride = MSM_MEDIA_ALIGN(width * 2, 128);
88225fdd593SJeykumar Sankaran break;
88325fdd593SJeykumar Sankaran }
884*7adc4a34SJordan Crouse
88525fdd593SJeykumar Sankaran return stride;
88625fdd593SJeykumar Sankaran }
88725fdd593SJeykumar Sankaran
88825fdd593SJeykumar Sankaran /*
88925fdd593SJeykumar Sankaran * Function arguments:
89025fdd593SJeykumar Sankaran * @color_fmt
89125fdd593SJeykumar Sankaran * @height
89225fdd593SJeykumar Sankaran * Progressive: height
89325fdd593SJeykumar Sankaran * Interlaced: (height+1)>>1
89425fdd593SJeykumar Sankaran */
VENUS_Y_SCANLINES(int color_fmt,int height)89558fba464SSean Paul static unsigned int VENUS_Y_SCANLINES(int color_fmt, int height)
89625fdd593SJeykumar Sankaran {
897*7adc4a34SJordan Crouse unsigned int sclines = 0;
89825fdd593SJeykumar Sankaran
89925fdd593SJeykumar Sankaran if (!height)
900*7adc4a34SJordan Crouse return 0;
90125fdd593SJeykumar Sankaran
90225fdd593SJeykumar Sankaran switch (color_fmt) {
90325fdd593SJeykumar Sankaran case COLOR_FMT_NV21:
90425fdd593SJeykumar Sankaran case COLOR_FMT_NV12:
90525fdd593SJeykumar Sankaran case COLOR_FMT_NV12_MVTB:
90625fdd593SJeykumar Sankaran case COLOR_FMT_NV12_UBWC:
90725fdd593SJeykumar Sankaran case COLOR_FMT_P010:
908*7adc4a34SJordan Crouse sclines = MSM_MEDIA_ALIGN(height, 32);
90925fdd593SJeykumar Sankaran break;
91025fdd593SJeykumar Sankaran case COLOR_FMT_NV12_BPP10_UBWC:
91125fdd593SJeykumar Sankaran case COLOR_FMT_P010_UBWC:
912*7adc4a34SJordan Crouse sclines = MSM_MEDIA_ALIGN(height, 16);
91325fdd593SJeykumar Sankaran break;
91425fdd593SJeykumar Sankaran }
915*7adc4a34SJordan Crouse
91625fdd593SJeykumar Sankaran return sclines;
91725fdd593SJeykumar Sankaran }
91825fdd593SJeykumar Sankaran
91925fdd593SJeykumar Sankaran /*
92025fdd593SJeykumar Sankaran * Function arguments:
92125fdd593SJeykumar Sankaran * @color_fmt
92225fdd593SJeykumar Sankaran * @height
92325fdd593SJeykumar Sankaran * Progressive: height
92425fdd593SJeykumar Sankaran * Interlaced: (height+1)>>1
92525fdd593SJeykumar Sankaran */
VENUS_UV_SCANLINES(int color_fmt,int height)92658fba464SSean Paul static unsigned int VENUS_UV_SCANLINES(int color_fmt, int height)
92725fdd593SJeykumar Sankaran {
928*7adc4a34SJordan Crouse unsigned int sclines = 0;
92925fdd593SJeykumar Sankaran
93025fdd593SJeykumar Sankaran if (!height)
931*7adc4a34SJordan Crouse return 0;
93225fdd593SJeykumar Sankaran
93325fdd593SJeykumar Sankaran switch (color_fmt) {
93425fdd593SJeykumar Sankaran case COLOR_FMT_NV21:
93525fdd593SJeykumar Sankaran case COLOR_FMT_NV12:
93625fdd593SJeykumar Sankaran case COLOR_FMT_NV12_MVTB:
93725fdd593SJeykumar Sankaran case COLOR_FMT_NV12_BPP10_UBWC:
93825fdd593SJeykumar Sankaran case COLOR_FMT_P010_UBWC:
93925fdd593SJeykumar Sankaran case COLOR_FMT_P010:
940*7adc4a34SJordan Crouse sclines = MSM_MEDIA_ALIGN((height + 1) >> 1, 16);
94125fdd593SJeykumar Sankaran break;
94225fdd593SJeykumar Sankaran case COLOR_FMT_NV12_UBWC:
943*7adc4a34SJordan Crouse sclines = MSM_MEDIA_ALIGN((height + 1) >> 1, 32);
94425fdd593SJeykumar Sankaran break;
94525fdd593SJeykumar Sankaran }
94625fdd593SJeykumar Sankaran
94725fdd593SJeykumar Sankaran return sclines;
94825fdd593SJeykumar Sankaran }
94925fdd593SJeykumar Sankaran
95025fdd593SJeykumar Sankaran /*
95125fdd593SJeykumar Sankaran * Function arguments:
95225fdd593SJeykumar Sankaran * @color_fmt
95325fdd593SJeykumar Sankaran * @width
95425fdd593SJeykumar Sankaran * Progressive: width
95525fdd593SJeykumar Sankaran * Interlaced: width
95625fdd593SJeykumar Sankaran */
VENUS_Y_META_STRIDE(int color_fmt,int width)95758fba464SSean Paul static unsigned int VENUS_Y_META_STRIDE(int color_fmt, int width)
95825fdd593SJeykumar Sankaran {
959*7adc4a34SJordan Crouse int y_tile_width = 0, y_meta_stride;
96025fdd593SJeykumar Sankaran
96125fdd593SJeykumar Sankaran if (!width)
962*7adc4a34SJordan Crouse return 0;
96325fdd593SJeykumar Sankaran
96425fdd593SJeykumar Sankaran switch (color_fmt) {
96525fdd593SJeykumar Sankaran case COLOR_FMT_NV12_UBWC:
96625fdd593SJeykumar Sankaran case COLOR_FMT_P010_UBWC:
96725fdd593SJeykumar Sankaran y_tile_width = 32;
96825fdd593SJeykumar Sankaran break;
96925fdd593SJeykumar Sankaran case COLOR_FMT_NV12_BPP10_UBWC:
97025fdd593SJeykumar Sankaran y_tile_width = 48;
97125fdd593SJeykumar Sankaran break;
97225fdd593SJeykumar Sankaran default:
973*7adc4a34SJordan Crouse return 0;
97425fdd593SJeykumar Sankaran }
97525fdd593SJeykumar Sankaran
97625fdd593SJeykumar Sankaran y_meta_stride = MSM_MEDIA_ROUNDUP(width, y_tile_width);
977*7adc4a34SJordan Crouse return MSM_MEDIA_ALIGN(y_meta_stride, 64);
97825fdd593SJeykumar Sankaran }
97925fdd593SJeykumar Sankaran
98025fdd593SJeykumar Sankaran /*
98125fdd593SJeykumar Sankaran * Function arguments:
98225fdd593SJeykumar Sankaran * @color_fmt
98325fdd593SJeykumar Sankaran * @height
98425fdd593SJeykumar Sankaran * Progressive: height
98525fdd593SJeykumar Sankaran * Interlaced: (height+1)>>1
98625fdd593SJeykumar Sankaran */
VENUS_Y_META_SCANLINES(int color_fmt,int height)98758fba464SSean Paul static unsigned int VENUS_Y_META_SCANLINES(int color_fmt, int height)
98825fdd593SJeykumar Sankaran {
989*7adc4a34SJordan Crouse int y_tile_height = 0, y_meta_scanlines;
99025fdd593SJeykumar Sankaran
99125fdd593SJeykumar Sankaran if (!height)
992*7adc4a34SJordan Crouse return 0;
99325fdd593SJeykumar Sankaran
99425fdd593SJeykumar Sankaran switch (color_fmt) {
99525fdd593SJeykumar Sankaran case COLOR_FMT_NV12_UBWC:
99625fdd593SJeykumar Sankaran y_tile_height = 8;
99725fdd593SJeykumar Sankaran break;
99825fdd593SJeykumar Sankaran case COLOR_FMT_NV12_BPP10_UBWC:
99925fdd593SJeykumar Sankaran case COLOR_FMT_P010_UBWC:
100025fdd593SJeykumar Sankaran y_tile_height = 4;
100125fdd593SJeykumar Sankaran break;
100225fdd593SJeykumar Sankaran default:
1003*7adc4a34SJordan Crouse return 0;
100425fdd593SJeykumar Sankaran }
100525fdd593SJeykumar Sankaran
100625fdd593SJeykumar Sankaran y_meta_scanlines = MSM_MEDIA_ROUNDUP(height, y_tile_height);
1007*7adc4a34SJordan Crouse return MSM_MEDIA_ALIGN(y_meta_scanlines, 16);
100825fdd593SJeykumar Sankaran }
100925fdd593SJeykumar Sankaran
101025fdd593SJeykumar Sankaran /*
101125fdd593SJeykumar Sankaran * Function arguments:
101225fdd593SJeykumar Sankaran * @color_fmt
101325fdd593SJeykumar Sankaran * @width
101425fdd593SJeykumar Sankaran * Progressive: width
101525fdd593SJeykumar Sankaran * Interlaced: width
101625fdd593SJeykumar Sankaran */
VENUS_UV_META_STRIDE(int color_fmt,int width)101758fba464SSean Paul static unsigned int VENUS_UV_META_STRIDE(int color_fmt, int width)
101825fdd593SJeykumar Sankaran {
1019*7adc4a34SJordan Crouse int uv_tile_width = 0, uv_meta_stride;
102025fdd593SJeykumar Sankaran
102125fdd593SJeykumar Sankaran if (!width)
1022*7adc4a34SJordan Crouse return 0;
102325fdd593SJeykumar Sankaran
102425fdd593SJeykumar Sankaran switch (color_fmt) {
102525fdd593SJeykumar Sankaran case COLOR_FMT_NV12_UBWC:
102625fdd593SJeykumar Sankaran case COLOR_FMT_P010_UBWC:
102725fdd593SJeykumar Sankaran uv_tile_width = 16;
102825fdd593SJeykumar Sankaran break;
102925fdd593SJeykumar Sankaran case COLOR_FMT_NV12_BPP10_UBWC:
103025fdd593SJeykumar Sankaran uv_tile_width = 24;
103125fdd593SJeykumar Sankaran break;
103225fdd593SJeykumar Sankaran default:
1033*7adc4a34SJordan Crouse return 0;
103425fdd593SJeykumar Sankaran }
103525fdd593SJeykumar Sankaran
103625fdd593SJeykumar Sankaran uv_meta_stride = MSM_MEDIA_ROUNDUP((width+1)>>1, uv_tile_width);
1037*7adc4a34SJordan Crouse return MSM_MEDIA_ALIGN(uv_meta_stride, 64);
103825fdd593SJeykumar Sankaran }
103925fdd593SJeykumar Sankaran
104025fdd593SJeykumar Sankaran /*
104125fdd593SJeykumar Sankaran * Function arguments:
104225fdd593SJeykumar Sankaran * @color_fmt
104325fdd593SJeykumar Sankaran * @height
104425fdd593SJeykumar Sankaran * Progressive: height
104525fdd593SJeykumar Sankaran * Interlaced: (height+1)>>1
104625fdd593SJeykumar Sankaran */
VENUS_UV_META_SCANLINES(int color_fmt,int height)104758fba464SSean Paul static unsigned int VENUS_UV_META_SCANLINES(int color_fmt, int height)
104825fdd593SJeykumar Sankaran {
1049*7adc4a34SJordan Crouse int uv_tile_height = 0, uv_meta_scanlines;
105025fdd593SJeykumar Sankaran
105125fdd593SJeykumar Sankaran if (!height)
1052*7adc4a34SJordan Crouse return 0;
105325fdd593SJeykumar Sankaran
105425fdd593SJeykumar Sankaran switch (color_fmt) {
105525fdd593SJeykumar Sankaran case COLOR_FMT_NV12_UBWC:
105625fdd593SJeykumar Sankaran uv_tile_height = 8;
105725fdd593SJeykumar Sankaran break;
105825fdd593SJeykumar Sankaran case COLOR_FMT_NV12_BPP10_UBWC:
105925fdd593SJeykumar Sankaran case COLOR_FMT_P010_UBWC:
106025fdd593SJeykumar Sankaran uv_tile_height = 4;
106125fdd593SJeykumar Sankaran break;
106225fdd593SJeykumar Sankaran default:
1063*7adc4a34SJordan Crouse return 0;
106425fdd593SJeykumar Sankaran }
106525fdd593SJeykumar Sankaran
106625fdd593SJeykumar Sankaran uv_meta_scanlines = MSM_MEDIA_ROUNDUP((height+1)>>1, uv_tile_height);
1067*7adc4a34SJordan Crouse return MSM_MEDIA_ALIGN(uv_meta_scanlines, 16);
106825fdd593SJeykumar Sankaran }
106925fdd593SJeykumar Sankaran
VENUS_RGB_STRIDE(int color_fmt,int width)107058fba464SSean Paul static unsigned int VENUS_RGB_STRIDE(int color_fmt, int width)
107125fdd593SJeykumar Sankaran {
1072*7adc4a34SJordan Crouse unsigned int alignment = 0, bpp = 4;
107325fdd593SJeykumar Sankaran
107425fdd593SJeykumar Sankaran if (!width)
1075*7adc4a34SJordan Crouse return 0;
107625fdd593SJeykumar Sankaran
107725fdd593SJeykumar Sankaran switch (color_fmt) {
107825fdd593SJeykumar Sankaran case COLOR_FMT_RGBA8888:
107925fdd593SJeykumar Sankaran alignment = 128;
108025fdd593SJeykumar Sankaran break;
108125fdd593SJeykumar Sankaran case COLOR_FMT_RGB565_UBWC:
108225fdd593SJeykumar Sankaran alignment = 256;
108325fdd593SJeykumar Sankaran bpp = 2;
108425fdd593SJeykumar Sankaran break;
108525fdd593SJeykumar Sankaran case COLOR_FMT_RGBA8888_UBWC:
108625fdd593SJeykumar Sankaran case COLOR_FMT_RGBA1010102_UBWC:
108725fdd593SJeykumar Sankaran alignment = 256;
108825fdd593SJeykumar Sankaran break;
108925fdd593SJeykumar Sankaran default:
1090*7adc4a34SJordan Crouse return 0;
109125fdd593SJeykumar Sankaran }
109225fdd593SJeykumar Sankaran
1093*7adc4a34SJordan Crouse return MSM_MEDIA_ALIGN(width * bpp, alignment);
109425fdd593SJeykumar Sankaran }
109525fdd593SJeykumar Sankaran
VENUS_RGB_SCANLINES(int color_fmt,int height)109658fba464SSean Paul static unsigned int VENUS_RGB_SCANLINES(int color_fmt, int height)
109725fdd593SJeykumar Sankaran {
1098*7adc4a34SJordan Crouse unsigned int alignment = 0;
109925fdd593SJeykumar Sankaran
110025fdd593SJeykumar Sankaran if (!height)
1101*7adc4a34SJordan Crouse return 0;
110225fdd593SJeykumar Sankaran
110325fdd593SJeykumar Sankaran switch (color_fmt) {
110425fdd593SJeykumar Sankaran case COLOR_FMT_RGBA8888:
110525fdd593SJeykumar Sankaran alignment = 32;
110625fdd593SJeykumar Sankaran break;
110725fdd593SJeykumar Sankaran case COLOR_FMT_RGBA8888_UBWC:
110825fdd593SJeykumar Sankaran case COLOR_FMT_RGBA1010102_UBWC:
110925fdd593SJeykumar Sankaran case COLOR_FMT_RGB565_UBWC:
111025fdd593SJeykumar Sankaran alignment = 16;
111125fdd593SJeykumar Sankaran break;
111225fdd593SJeykumar Sankaran default:
1113*7adc4a34SJordan Crouse return 0;
111425fdd593SJeykumar Sankaran }
111525fdd593SJeykumar Sankaran
1116*7adc4a34SJordan Crouse return MSM_MEDIA_ALIGN(height, alignment);
111725fdd593SJeykumar Sankaran }
111825fdd593SJeykumar Sankaran
VENUS_RGB_META_STRIDE(int color_fmt,int width)111958fba464SSean Paul static unsigned int VENUS_RGB_META_STRIDE(int color_fmt, int width)
112025fdd593SJeykumar Sankaran {
1121*7adc4a34SJordan Crouse int rgb_meta_stride;
112225fdd593SJeykumar Sankaran
112325fdd593SJeykumar Sankaran if (!width)
1124*7adc4a34SJordan Crouse return 0;
112525fdd593SJeykumar Sankaran
112625fdd593SJeykumar Sankaran switch (color_fmt) {
112725fdd593SJeykumar Sankaran case COLOR_FMT_RGBA8888_UBWC:
112825fdd593SJeykumar Sankaran case COLOR_FMT_RGBA1010102_UBWC:
112925fdd593SJeykumar Sankaran case COLOR_FMT_RGB565_UBWC:
1130*7adc4a34SJordan Crouse rgb_meta_stride = MSM_MEDIA_ROUNDUP(width, 16);
1131*7adc4a34SJordan Crouse return MSM_MEDIA_ALIGN(rgb_meta_stride, 64);
113225fdd593SJeykumar Sankaran }
113325fdd593SJeykumar Sankaran
1134*7adc4a34SJordan Crouse return 0;
113525fdd593SJeykumar Sankaran }
113625fdd593SJeykumar Sankaran
VENUS_RGB_META_SCANLINES(int color_fmt,int height)113758fba464SSean Paul static unsigned int VENUS_RGB_META_SCANLINES(int color_fmt, int height)
113825fdd593SJeykumar Sankaran {
1139*7adc4a34SJordan Crouse int rgb_meta_scanlines;
114025fdd593SJeykumar Sankaran
114125fdd593SJeykumar Sankaran if (!height)
1142*7adc4a34SJordan Crouse return 0;
114325fdd593SJeykumar Sankaran
114425fdd593SJeykumar Sankaran switch (color_fmt) {
114525fdd593SJeykumar Sankaran case COLOR_FMT_RGBA8888_UBWC:
114625fdd593SJeykumar Sankaran case COLOR_FMT_RGBA1010102_UBWC:
114725fdd593SJeykumar Sankaran case COLOR_FMT_RGB565_UBWC:
1148*7adc4a34SJordan Crouse rgb_meta_scanlines = MSM_MEDIA_ROUNDUP(height, 4);
1149*7adc4a34SJordan Crouse return MSM_MEDIA_ALIGN(rgb_meta_scanlines, 16);
115025fdd593SJeykumar Sankaran }
115125fdd593SJeykumar Sankaran
1152*7adc4a34SJordan Crouse return 0;
115325fdd593SJeykumar Sankaran }
115425fdd593SJeykumar Sankaran
115525fdd593SJeykumar Sankaran #endif
1156