drm/vc4: Add firmware-kms mode
[platform/kernel/linux-rpi.git] / drivers / gpu / drm / vc4 / vc_image_types.h
1
2 /*
3  * Copyright (c) 2012, Broadcom Europe Ltd
4  *
5  * Values taken from vc_image_types.h released by Broadcom at
6  * https://github.com/raspberrypi/userland/blob/master/interface/vctypes/vc_image_types.h
7  * and vc_image_structs.h at
8  * https://github.com/raspberrypi/userland/blob/master/interface/vctypes/vc_image_structs.h
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License version 2 as
12  * published by the Free Software Foundation.
13  */
14
15 enum {
16         VC_IMAGE_MIN = 0, //bounds for error checking
17
18         VC_IMAGE_RGB565 = 1,
19         VC_IMAGE_1BPP,
20         VC_IMAGE_YUV420,
21         VC_IMAGE_48BPP,
22         VC_IMAGE_RGB888,
23         VC_IMAGE_8BPP,
24         /* 4bpp palettised image */
25         VC_IMAGE_4BPP,
26         /* A separated format of 16 colour/light shorts followed by 16 z
27          * values
28          */
29         VC_IMAGE_3D32,
30         /* 16 colours followed by 16 z values */
31         VC_IMAGE_3D32B,
32         /* A separated format of 16 material/colour/light shorts followed by
33          * 16 z values
34          */
35         VC_IMAGE_3D32MAT,
36         /* 32 bit format containing 18 bits of 6.6.6 RGB, 9 bits per short */
37         VC_IMAGE_RGB2X9,
38         /* 32-bit format holding 18 bits of 6.6.6 RGB */
39         VC_IMAGE_RGB666,
40         /* 4bpp palettised image with embedded palette */
41         VC_IMAGE_PAL4_OBSOLETE,
42         /* 8bpp palettised image with embedded palette */
43         VC_IMAGE_PAL8_OBSOLETE,
44         /* RGB888 with an alpha byte after each pixel */
45         VC_IMAGE_RGBA32,
46         /* a line of Y (32-byte padded), a line of U (16-byte padded), and a
47          * line of V (16-byte padded)
48          */
49         VC_IMAGE_YUV422,
50         /* RGB565 with a transparent patch */
51         VC_IMAGE_RGBA565,
52         /* Compressed (4444) version of RGBA32 */
53         VC_IMAGE_RGBA16,
54         /* VCIII codec format */
55         VC_IMAGE_YUV_UV,
56         /* VCIII T-format RGBA8888 */
57         VC_IMAGE_TF_RGBA32,
58         /* VCIII T-format RGBx8888 */
59         VC_IMAGE_TF_RGBX32,
60         /* VCIII T-format float */
61         VC_IMAGE_TF_FLOAT,
62         /* VCIII T-format RGBA4444 */
63         VC_IMAGE_TF_RGBA16,
64         /* VCIII T-format RGB5551 */
65         VC_IMAGE_TF_RGBA5551,
66         /* VCIII T-format RGB565 */
67         VC_IMAGE_TF_RGB565,
68         /* VCIII T-format 8-bit luma and 8-bit alpha */
69         VC_IMAGE_TF_YA88,
70         /* VCIII T-format 8 bit generic sample */
71         VC_IMAGE_TF_BYTE,
72         /* VCIII T-format 8-bit palette */
73         VC_IMAGE_TF_PAL8,
74         /* VCIII T-format 4-bit palette */
75         VC_IMAGE_TF_PAL4,
76         /* VCIII T-format Ericsson Texture Compressed */
77         VC_IMAGE_TF_ETC1,
78         /* RGB888 with R & B swapped */
79         VC_IMAGE_BGR888,
80         /* RGB888 with R & B swapped, but with no pitch, i.e. no padding after
81          * each row of pixels
82          */
83         VC_IMAGE_BGR888_NP,
84         /* Bayer image, extra defines which variant is being used */
85         VC_IMAGE_BAYER,
86         /* General wrapper for codec images e.g. JPEG from camera */
87         VC_IMAGE_CODEC,
88         /* VCIII codec format */
89         VC_IMAGE_YUV_UV32,
90         /* VCIII T-format 8-bit luma */
91         VC_IMAGE_TF_Y8,
92         /* VCIII T-format 8-bit alpha */
93         VC_IMAGE_TF_A8,
94         /* VCIII T-format 16-bit generic sample */
95         VC_IMAGE_TF_SHORT,
96         /* VCIII T-format 1bpp black/white */
97         VC_IMAGE_TF_1BPP,
98         VC_IMAGE_OPENGL,
99         /* VCIII-B0 HVS YUV 4:4:4 interleaved samples */
100         VC_IMAGE_YUV444I,
101         /* Y, U, & V planes separately (VC_IMAGE_YUV422 has them interleaved on
102          * a per line basis)
103          */
104         VC_IMAGE_YUV422PLANAR,
105         /* 32bpp with 8bit alpha at MS byte, with R, G, B (LS byte) */
106         VC_IMAGE_ARGB8888,
107         /* 32bpp with 8bit unused at MS byte, with R, G, B (LS byte) */
108         VC_IMAGE_XRGB8888,
109
110         /* interleaved 8 bit samples of Y, U, Y, V (4 flavours) */
111         VC_IMAGE_YUV422YUYV,
112         VC_IMAGE_YUV422YVYU,
113         VC_IMAGE_YUV422UYVY,
114         VC_IMAGE_YUV422VYUY,
115
116         /* 32bpp like RGBA32 but with unused alpha */
117         VC_IMAGE_RGBX32,
118         /* 32bpp, corresponding to RGBA with unused alpha */
119         VC_IMAGE_RGBX8888,
120         /* 32bpp, corresponding to BGRA with unused alpha */
121         VC_IMAGE_BGRX8888,
122
123         /* Y as a plane, then UV byte interleaved in plane with same pitch,
124          * half height
125          */
126         VC_IMAGE_YUV420SP,
127
128         /* Y, U, & V planes separately 4:4:4 */
129         VC_IMAGE_YUV444PLANAR,
130
131         /* T-format 8-bit U - same as TF_Y8 buf from U plane */
132         VC_IMAGE_TF_U8,
133         /* T-format 8-bit U - same as TF_Y8 buf from V plane */
134         VC_IMAGE_TF_V8,
135
136         /* YUV4:2:0 planar, 16bit values */
137         VC_IMAGE_YUV420_16,
138         /* YUV4:2:0 codec format, 16bit values */
139         VC_IMAGE_YUV_UV_16,
140         /* YUV4:2:0 with U,V in side-by-side format */
141         VC_IMAGE_YUV420_S,
142         /* 10-bit YUV 420 column image format */
143         VC_IMAGE_YUV10COL,
144         /* 32-bpp, 10-bit R/G/B, 2-bit Alpha */
145         VC_IMAGE_RGBA1010102,
146
147         VC_IMAGE_MAX,     /* bounds for error checking */
148         VC_IMAGE_FORCE_ENUM_16BIT = 0xffff,
149 };
150
151 enum {
152         /* Unknown or unset - defaults to BT601 interstitial */
153         VC_IMAGE_YUVINFO_UNSPECIFIED    = 0,
154
155         /* colour-space conversions data [4 bits] */
156
157         /* ITU-R BT.601-5 [SDTV] (compatible with VideoCore-II) */
158         VC_IMAGE_YUVINFO_CSC_ITUR_BT601      = 1,
159         /* ITU-R BT.709-3 [HDTV] */
160         VC_IMAGE_YUVINFO_CSC_ITUR_BT709      = 2,
161         /* JPEG JFIF */
162         VC_IMAGE_YUVINFO_CSC_JPEG_JFIF       = 3,
163         /* Title 47 Code of Federal Regulations (2003) 73.682 (a) (20) */
164         VC_IMAGE_YUVINFO_CSC_FCC             = 4,
165         /* Society of Motion Picture and Television Engineers 240M (1999) */
166         VC_IMAGE_YUVINFO_CSC_SMPTE_240M      = 5,
167         /* ITU-R BT.470-2 System M */
168         VC_IMAGE_YUVINFO_CSC_ITUR_BT470_2_M  = 6,
169         /* ITU-R BT.470-2 System B,G */
170         VC_IMAGE_YUVINFO_CSC_ITUR_BT470_2_BG = 7,
171         /* JPEG JFIF, but with 16..255 luma */
172         VC_IMAGE_YUVINFO_CSC_JPEG_JFIF_Y16_255 = 8,
173         /* Rec 2020 */
174         VC_IMAGE_YUVINFO_CSC_REC_2020        = 9,
175 };