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