1 /*
2 * Copyright (c) 2019, Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22 
23 #ifndef _MDF_FC_COMMON_H_
24 #define _MDF_FC_COMMON_H_
25 
26 #define MDF_FC_BLOCK_WIDTH                16
27 #define MDF_FC_BLOCK_HEIGHT               16
28 #define MDF_FC_SAMPLER_UNORM_WIDTH        8
29 #define MDF_FC_SAMPLER_UNORM_HEIGHT       4
30 #define MDF_FC_MAX_INPUT_LAYER_NUM        8
31 #define MDF_FC_MAX_OUTPUT_NUM             2
32 #define MDF_FC_INPUT_BTI_PER_LAYER        3
33 #define MDF_FC_OUTPUT_BTI_PER_LAYER       3
34 #define SURFACE_FORMAT_CHANNEL_SWAP       (1 << 11)
35 #define MDF_FC_UV_PLANE_BTI_OFFSET        1
36 #define MDF_FC_U_PLANE_BTI_OFFSET         1
37 #define MDF_FC_V_PLANE_BTI_OFFSET         2
38 #define MDF_FC_CSC_COEFF_WIDTH            24
39 #define MDF_FC_INPUT_BTI_CSC_COEFF_OFFSET 34
40 #define MDF_FC_GAMMA_LUT_BTI_OFFSET       32
41 #define MDF_FC_COLORE_LUT_BTI_OFFSET      32
42 #define MDF_FC_LUT_ENABLE_COLORE          0x01
43 #define MDF_FC_LUT_ENABLE_GAMMA           0x02
44 #define MDF_FC_NORMALIZE_FACTOR           65280.0f
45 #define MDF_FC_SAMPLER_BIAS               0.015625f
46 #define MDF_FC_IEF_BYPASS_SHFIT           27
47 #define MDF_FC_IEF_BYPASS_MASK            (1 << MDF_FC_IEF_BYPASS_SHFIT)
48 #define MDF_FC_COMBINED_KERNEL_MASK       0x0
49 #define MDF_FC_SINGLE_KERNEL_MASK         0x01
50 
51 #ifdef CMFC_ULT
52 #define MDF_FC_INPUT_BTI_START                      16
53 #define MDF_FC_3D_SAMPLER_SI_Y                      13
54 #define MDF_FC_3D_SAMPLER_SI_U                      13
55 #define MDF_FC_3D_SAMPLER_SI_V                      13
56 #define MDF_FC_COLORE_nSI_LINEAR                    13 // ColorE Sampler index left shifted by 8
57 #define MDF_FC_AVS_SI_Y                             1
58 #define MDF_FC_AVS_SI_U                             1
59 #define MDF_FC_AVS_SI_V                             1
60 #define MDF_FC_CSC_COEFF_HEIGHT                     1
61 #define MDF_FC_INPUT_BTI_START_INTERLACED_F2_OFFSET 35
62 #define MDF_FC_SECURITY_COPY_INPUT_BTI MDF_FC_INPUT_BTI_START
63 #define MDF_FC_SECURITY_COPY_OUTPUT_BTI MDF_FC_INPUT_BTI_START + MDF_FC_MAX_INPUT_LAYER_NUM * MDF_FC_INPUT_BTI_PER_LAYER
64 #else
65 #define MDF_FC_INPUT_BTI_START                      0
66 #define MDF_FC_3D_SAMPLER_SI_Y                      1
67 #define MDF_FC_3D_SAMPLER_SI_U                      2
68 #define MDF_FC_3D_SAMPLER_SI_V                      3
69 #define MDF_FC_COLORE_nSI_LINEAR                    0x000 // ColorE Sampler index left shifted by 8
70 #define MDF_FC_AVS_SI_Y                             1
71 #define MDF_FC_AVS_SI_U                             3
72 #define MDF_FC_AVS_SI_V                             3
73 #define MDF_FC_CSC_COEFF_HEIGHT                     8
74 #define MDF_FC_INPUT_BTI_START_INTERLACED_F2_OFFSET 48
75 #define MDF_FC_SECURITY_COPY_INPUT_BTI              0
76 #define MDF_FC_SECURITY_COPY_OUTPUT_BTI             1
77 #endif
78 
79 #define MDF_FC_OUTPUT_BTI_START     MDF_FC_INPUT_BTI_START + MDF_FC_MAX_INPUT_LAYER_NUM * MDF_FC_INPUT_BTI_PER_LAYER
80 #define MDF_FC_CSC_COEFF_BTI        MDF_FC_INPUT_BTI_START + MDF_FC_INPUT_BTI_CSC_COEFF_OFFSET
81 #define MDF_FC_INPUT_BTI_F2         MDF_FC_INPUT_BTI_START + MDF_FC_INPUT_BTI_START_INTERLACED_F2_OFFSET
82 #define MDF_FC_GAMMA_LUT_BTI        MDF_FC_INPUT_BTI_START + MDF_FC_GAMMA_LUT_BTI_OFFSET
83 #define MDF_FC_COLORE_LUT_BTI       MDF_FC_INPUT_BTI_START + MDF_FC_COLORE_LUT_BTI_OFFSET
84 
85 typedef enum _MDF_FC_FORMAT
86 {
87     FORMAT_R32G32B32A32_FLOAT                 = 0,
88     FORMAT_B32G32R32A32_FLOAT                 = 0 + SURFACE_FORMAT_CHANNEL_SWAP,
89     FORMAT_R32G32B32A32_UINT                  = 1,
90     FORMAT_B32G32R32A32_UINT                  = 1 + SURFACE_FORMAT_CHANNEL_SWAP,
91     FORMAT_R32G32B32A32_SINT                  = 2,
92     FORMAT_B32G32R32A32_SINT                  = 2 + SURFACE_FORMAT_CHANNEL_SWAP,
93     FORMAT_R32G32B32X32_FLOAT                 = 3,
94     FORMAT_B32G32R32X32_FLOAT                 = 3 + SURFACE_FORMAT_CHANNEL_SWAP,
95     FORMAT_R32G32B32X32_UINT                  = 4,
96     FORMAT_B32G32R32X32_UINT                  = 4 + SURFACE_FORMAT_CHANNEL_SWAP,
97     FORMAT_R32G32B32X32_SINT                  = 5,
98     FORMAT_B32G32R32X32_SINT                  = 5 + SURFACE_FORMAT_CHANNEL_SWAP,
99     FORMAT_R32G32B32_FLOAT                    = 6,
100     FORMAT_B32G32R32_FLOAT                    = 6 + SURFACE_FORMAT_CHANNEL_SWAP,
101     FORMAT_R32G32B32_UINT                     = 7,
102     FORMAT_B32G32R32_UINT                     = 7 + SURFACE_FORMAT_CHANNEL_SWAP,
103     FORMAT_R32G32B32_SINT                     = 8,
104     FORMAT_B32G32R32_SINT                     = 8 + SURFACE_FORMAT_CHANNEL_SWAP,
105     FORMAT_R32G32_FLOAT                       = 9,
106     FORMAT_R32G32_UINT                        = 10,
107     FORMAT_R32G32_SINT                        = 11,
108     FORMAT_L32A32_FLOAT                       = 12,
109     FORMAT_L32A32_UINT                        = 13,
110     FORMAT_L32A32_SINT                        = 14,
111     FORMAT_A32X32_FLOAT                       = 15,
112     FORMAT_A32X32_UINT                        = 16,
113     FORMAT_A32X32_SINT                        = 17,
114     FORMAT_L32X32_FLOAT                       = 18,
115     FORMAT_L32X32_UINT                        = 19,
116     FORMAT_L32X32_SINT                        = 20,
117     FORMAT_I32X32_FLOAT                       = 21,
118     FORMAT_I32X32_UINT                        = 22,
119     FORMAT_I32X32_SINT                        = 23,
120     FORMAT_R32_FLOAT                          = 24,
121     FORMAT_R32_UINT                           = 25,
122     FORMAT_R32_SINT                           = 26,
123     FORMAT_A32_FLOAT                          = 27,
124     FORMAT_A32_UINT                           = 28,
125     FORMAT_A32_SINT                           = 29,
126     FORMAT_L32_FLOAT                          = 30,
127     FORMAT_L32_UINT                           = 31,
128     FORMAT_L32_SINT                           = 32,
129     FORMAT_I32_FLOAT                          = 33,
130     FORMAT_I32_UINT                           = 34,
131     FORMAT_I32_SINT                           = 35,
132     FORMAT_R24_UNORM_X8_TYPELESS              = 36,
133     FORMAT_R24_SNORM_X8_TYPELESS              = 37,
134     FORMAT_I24X8_UNORM                        = 38,
135     FORMAT_I24X8_SNORM                        = 39,
136     FORMAT_L24X8_UNORM                        = 40,
137     FORMAT_L24X8_SNORM                        = 41,
138     FORMAT_A24X8_UNORM                        = 42,
139     FORMAT_A24X8_SNORM                        = 43,
140     FORMAT_R16G16B16A16_FLOAT                 = 44,
141     FORMAT_B16G16R16A16_FLOAT                 = 44 + SURFACE_FORMAT_CHANNEL_SWAP,
142     FORMAT_R16G16B16A16_UNORM                 = 45,
143     FORMAT_B16G16R16A16_UNORM                 = 45 + SURFACE_FORMAT_CHANNEL_SWAP,
144     FORMAT_R16G16B16A16_UINT                  = 46,
145     FORMAT_B16G16R16A16_UINT                  = 46 + SURFACE_FORMAT_CHANNEL_SWAP,
146     FORMAT_R16G16B16A16_SNORM                 = 47,
147     FORMAT_B16G16R16A16_SNORM                 = 47 + SURFACE_FORMAT_CHANNEL_SWAP,
148     FORMAT_R16G16B16A16_SINT                  = 48,
149     FORMAT_B16G16R16A16_SINT                  = 48 + SURFACE_FORMAT_CHANNEL_SWAP,
150     FORMAT_R16G16B16X16_FLOAT                 = 49,
151     FORMAT_B16G16R16X16_FLOAT                 = 49 + SURFACE_FORMAT_CHANNEL_SWAP,
152     FORMAT_R16G16B16X16_UNORM                 = 50,
153     FORMAT_B16G16R16X16_UNORM                 = 50 + SURFACE_FORMAT_CHANNEL_SWAP,
154     FORMAT_R16G16B16X16_UINT                  = 51,
155     FORMAT_B16G16R16X16_UINT                  = 51 + SURFACE_FORMAT_CHANNEL_SWAP,
156     FORMAT_R16G16B16X16_SNORM                 = 52,
157     FORMAT_B16G16R16X16_SNORM                 = 52 + SURFACE_FORMAT_CHANNEL_SWAP,
158     FORMAT_R16G16B16X16_SINT                  = 53,
159     FORMAT_B16G16R16X16_SINT                  = 53 + SURFACE_FORMAT_CHANNEL_SWAP,
160     FORMAT_R16G16B16_FLOAT                    = 54,
161     FORMAT_B16G16R16_FLOAT                    = 54 + SURFACE_FORMAT_CHANNEL_SWAP,
162     FORMAT_R16G16B16_UNORM                    = 55,
163     FORMAT_B16G16R16_UNORM                    = 55 + SURFACE_FORMAT_CHANNEL_SWAP,
164     FORMAT_R16G16B16_UINT                     = 56,
165     FORMAT_B16G16R16_UINT                     = 56 + SURFACE_FORMAT_CHANNEL_SWAP,
166     FORMAT_R16G16B16_SNORM                    = 57,
167     FORMAT_B16G16R16_SNORM                    = 57 + SURFACE_FORMAT_CHANNEL_SWAP,
168     FORMAT_R16G16B16_SINT                     = 58,
169     FORMAT_B16G16R16_SINT                     = 58 + SURFACE_FORMAT_CHANNEL_SWAP,
170     FORMAT_R16G16_FLOAT                       = 59,
171     FORMAT_R16G16_UNORM                       = 60,
172     FORMAT_R16G16_UINT                        = 61,
173     FORMAT_R16G16_SNORM                       = 62,
174     FORMAT_R16G16_SINT                        = 63,
175     FORMAT_L16A16_FLOAT                       = 64,
176     FORMAT_L16A16_UNORM                       = 65,
177     FORMAT_L16A16_UINT                        = 66,
178     FORMAT_L16A16_SNORM                       = 67,
179     FORMAT_L16A16_SINT                        = 68,
180     FORMAT_R16_FLOAT                          = 69,
181     FORMAT_R16_UNORM                          = 70,
182     FORMAT_R16_UINT                           = 71,
183     FORMAT_R16_SNORM                          = 72,
184     FORMAT_R16_SINT                           = 73,
185     FORMAT_A16_FLOAT                          = 74,
186     FORMAT_A16_UNORM                          = 75,
187     FORMAT_A16_UINT                           = 76,
188     FORMAT_A16_SNORM                          = 77,
189     FORMAT_A16_SINT                           = 78,
190     FORMAT_L16_FLOAT                          = 79,
191     FORMAT_L16_UNORM                          = 80,
192     FORMAT_L16_UINT                           = 81,
193     FORMAT_L16_SNORM                          = 82,
194     FORMAT_L16_SINT                           = 83,
195     FORMAT_I16_FLOAT                          = 84,
196     FORMAT_I16_UNORM                          = 85,
197     FORMAT_I16_UINT                           = 86,
198     FORMAT_I16_SNORM                          = 87,
199     FORMAT_I16_SINT                           = 88,
200     FORMAT_R10G10B10A2_UNORM                  = 89,
201     FORMAT_B10G10R10A2_UNORM                  = 89 + SURFACE_FORMAT_CHANNEL_SWAP,
202     FORMAT_R10G10B10A2_UNORM_SRGB             = 90,
203     FORMAT_B10G10R10A2_UNORM_SRGB             = 90 + SURFACE_FORMAT_CHANNEL_SWAP,
204     FORMAT_R10G10B10A2_UINT                   = 91,
205     FORMAT_B10G10R10A2_UINT                   = 91 + SURFACE_FORMAT_CHANNEL_SWAP,
206     FORMAT_R10G10B10_SNORM_A2_UNORM           = 92,
207     FORMAT_B10G10R10_SNORM_A2_UNORM           = 92 + SURFACE_FORMAT_CHANNEL_SWAP,
208     FORMAT_R10G10B10_XR_BIAS_A2_UNORM         = 93,
209     FORMAT_B10G10R10_XR_BIAS_A2_UNORM         = 93 + SURFACE_FORMAT_CHANNEL_SWAP,
210     FORMAT_R10G10B10X2_UNORM                  = 94,
211     FORMAT_B10G10R10X2_UNORM                  = 94 + SURFACE_FORMAT_CHANNEL_SWAP,
212     FORMAT_R10G10B10X2_UNORM_SRGB             = 95,
213     FORMAT_B10G10R10X2_UNORM_SRGB             = 95 + SURFACE_FORMAT_CHANNEL_SWAP,
214     FORMAT_R10G10B10X2_UINT                   = 96,
215     FORMAT_B10G10R10X2_UINT                   = 96 + SURFACE_FORMAT_CHANNEL_SWAP,
216     FORMAT_R10G10B10X2_SNORM                  = 97,
217     FORMAT_B10G10R10X2_SNORM                  = 97 + SURFACE_FORMAT_CHANNEL_SWAP,
218     FORMAT_R10G10B10_XR_BIAS_X2_TYPELESS      = 98,
219     FORMAT_B10G10R10_XR_BIAS_X2_TYPELESS      = 98 + SURFACE_FORMAT_CHANNEL_SWAP,
220     FORMAT_R11G11B10_FLOAT                    = 99,
221     FORMAT_R9G9B9E5_SHAREDEXP                 = 100,
222     FORMAT_R8G8B8A8_UNORM                     = 101,
223     FORMAT_B8G8R8A8_UNORM                     = 101 + SURFACE_FORMAT_CHANNEL_SWAP,
224     FORMAT_R8G8B8A8_UNORM_SRGB                = 102,
225     FORMAT_B8G8R8A8_UNORM_SRGB                = 102 + SURFACE_FORMAT_CHANNEL_SWAP,
226     FORMAT_R8G8B8A8_UINT                      = 103,
227     FORMAT_B8G8R8A8_UINT                      = 103 + SURFACE_FORMAT_CHANNEL_SWAP,
228     FORMAT_R8G8B8A8_SNORM                     = 104,
229     FORMAT_B8G8R8A8_SNORM                     = 104 + SURFACE_FORMAT_CHANNEL_SWAP,
230     FORMAT_R8G8B8A8_SINT                      = 105,
231     FORMAT_B8G8R8A8_SINT                      = 105 + SURFACE_FORMAT_CHANNEL_SWAP,
232     FORMAT_R8G8B8X8_UNORM                     = 106,
233     FORMAT_B8G8R8X8_UNORM                     = 106 + SURFACE_FORMAT_CHANNEL_SWAP,
234     FORMAT_R8G8B8X8_UNORM_SRGB                = 107,
235     FORMAT_B8G8R8X8_UNORM_SRGB                = 107 + SURFACE_FORMAT_CHANNEL_SWAP,
236     FORMAT_R8G8B8X8_UINT                      = 108,
237     FORMAT_B8G8R8X8_UINT                      = 108 + SURFACE_FORMAT_CHANNEL_SWAP,
238     FORMAT_R8G8B8X8_SNORM                     = 109,
239     FORMAT_B8G8R8X8_SNORM                     = 109 + SURFACE_FORMAT_CHANNEL_SWAP,
240     FORMAT_R8G8B8X8_SINT                      = 110,
241     FORMAT_B8G8R8X8_SINT                      = 110 + SURFACE_FORMAT_CHANNEL_SWAP,
242     FORMAT_R8G8B8_UNORM                       = 111,
243     FORMAT_B8G8R8_UNORM                       = 111 + SURFACE_FORMAT_CHANNEL_SWAP,
244     FORMAT_R8G8B8_UNORM_SRGB                  = 112,
245     FORMAT_B8G8R8_UNORM_SRGB                  = 112 + SURFACE_FORMAT_CHANNEL_SWAP,
246     FORMAT_R8G8B8_UINT                        = 113,
247     FORMAT_B8G8R8_UINT                        = 113 + SURFACE_FORMAT_CHANNEL_SWAP,
248     FORMAT_R8G8B8_SNORM                       = 114,
249     FORMAT_B8G8R8_SNORM                       = 114 + SURFACE_FORMAT_CHANNEL_SWAP,
250     FORMAT_R8G8B8_SINT                        = 115,
251     FORMAT_B8G8R8_SINT                        = 115 + SURFACE_FORMAT_CHANNEL_SWAP,
252     FORMAT_R8G8_B8G8_UNORM                    = 116,
253     FORMAT_B8G8_R8G8_UNORM                    = 116 + SURFACE_FORMAT_CHANNEL_SWAP,
254     FORMAT_R8G8_B8G8_UNORM_SRGB               = 117,
255     FORMAT_B8G8_R8G8_UNORM_SRGB               = 117 + SURFACE_FORMAT_CHANNEL_SWAP,
256     FORMAT_R8G8_B8G8_UINT                     = 118,
257     FORMAT_B8G8_R8G8_UINT                     = 118 + SURFACE_FORMAT_CHANNEL_SWAP,
258     FORMAT_R8G8_B8G8_SNORM                    = 119,
259     FORMAT_B8G8_R8G8_SNORM                    = 119 + SURFACE_FORMAT_CHANNEL_SWAP,
260     FORMAT_R8G8_B8G8_SINT                     = 120,
261     FORMAT_B8G8_R8G8_SINT                     = 120 + SURFACE_FORMAT_CHANNEL_SWAP,
262     FORMAT_G8R8_G8B8_UNORM                    = 121,
263     FORMAT_G8B8_G8R8_UNORM                    = 121 + SURFACE_FORMAT_CHANNEL_SWAP,
264     FORMAT_G8R8_G8B8_UNORM_SRGB               = 122,
265     FORMAT_G8B8_G8R8_UNORM_SRGB               = 122 + SURFACE_FORMAT_CHANNEL_SWAP,
266     FORMAT_G8R8_G8B8_UINT                     = 123,
267     FORMAT_G8B8_G8R8_UINT                     = 123 + SURFACE_FORMAT_CHANNEL_SWAP,
268     FORMAT_G8R8_G8B8_SNORM                    = 124,
269     FORMAT_G8B8_G8R8_SNORM                    = 124 + SURFACE_FORMAT_CHANNEL_SWAP,
270     FORMAT_G8R8_G8B8_SINT                     = 125,
271     FORMAT_G8B8_G8R8_SINT                     = 125 + SURFACE_FORMAT_CHANNEL_SWAP,
272     FORMAT_R8G8_UNORM                         = 126,
273     FORMAT_R8G8_UINT                          = 127,
274     FORMAT_R8G8_SNORM                         = 128,
275     FORMAT_R8G8_SINT                          = 129,
276     FORMAT_L8A8_UNORM                         = 130,
277     FORMAT_L8A8_UNORM_SRGB                    = 131,
278     FORMAT_L8A8_UINT                          = 132,
279     FORMAT_L8A8_SNORM                         = 133,
280     FORMAT_L8A8_SINT                          = 134,
281     FORMAT_R8_UNORM                           = 135,
282     FORMAT_R8_UINT                            = 136,
283     FORMAT_R8_SNORM                           = 137,
284     FORMAT_R8_SINT                            = 138,
285     FORMAT_A8_UNORM                           = 139,
286     FORMAT_A8_UINT                            = 140,
287     FORMAT_A8_SNORM                           = 141,
288     FORMAT_A8_SINT                            = 142,
289     FORMAT_L8_UNORM                           = 143,
290     FORMAT_L8_UNORM_SRGB                      = 144,
291     FORMAT_L8_UINT                            = 145,
292     FORMAT_L8_SNORM                           = 146,
293     FORMAT_L8_SINT                            = 147,
294     FORMAT_I8_UNORM                           = 148,
295     FORMAT_I8_UINT                            = 149,
296     FORMAT_I8_SNORM                           = 150,
297     FORMAT_I8_SINT                            = 151,
298     FORMAT_R5G6B5_UNORM                       = 152,
299     FORMAT_B5G6R5_UNORM                       = 152 + SURFACE_FORMAT_CHANNEL_SWAP,
300     FORMAT_R5G6B5_UNORM_SRGB                  = 153,
301     FORMAT_B5G6R5_UNORM_SRGB                  = 153 + SURFACE_FORMAT_CHANNEL_SWAP,
302     FORMAT_R5G5B5A1_UNORM                     = 154,
303     FORMAT_B5G5R5A1_UNORM                     = 154 + SURFACE_FORMAT_CHANNEL_SWAP,
304     FORMAT_R5G5B5A1_UNORM_SRGB                = 155,
305     FORMAT_B5G5R5A1_UNORM_SRGB                = 155 + SURFACE_FORMAT_CHANNEL_SWAP,
306     FORMAT_A1R5G5B5_UNORM                     = 156,
307     FORMAT_A1B5G5R5_UNORM                     = 156 + SURFACE_FORMAT_CHANNEL_SWAP,
308     FORMAT_A1R5G5B5_UNORM_SRGB                = 157,
309     FORMAT_A1B5G5R5_UNORM_SRGB                = 157 + SURFACE_FORMAT_CHANNEL_SWAP,
310     FORMAT_R4G4B4A4_UNORM                     = 158,
311     FORMAT_B4G4R4A4_UNORM                     = 158 + SURFACE_FORMAT_CHANNEL_SWAP,
312     FORMAT_R4G4B4A4_UNORM_SRGB                = 159,
313     FORMAT_B4G4R4A4_UNORM_SRGB                = 159 + SURFACE_FORMAT_CHANNEL_SWAP,
314     FORMAT_A4R4G4B4_UNORM                     = 160,
315     FORMAT_A4B4G4R4_UNORM                     = 160 + SURFACE_FORMAT_CHANNEL_SWAP,
316     FORMAT_A4R4G4B4_UNORM_SRGB                = 161,
317     FORMAT_A4B4G4R4_UNORM_SRGB                = 161 + SURFACE_FORMAT_CHANNEL_SWAP,
318 
319     FORMAT_AYUV                               = 200,
320     FORMAT_AYVU                               = 200 + SURFACE_FORMAT_CHANNEL_SWAP,
321     FORMAT_YUY2                               = 201,
322     FORMAT_YVYU                               = 201 + SURFACE_FORMAT_CHANNEL_SWAP,
323     FORMAT_YCRCB_NORMAL                       = 201,
324     FORMAT_YCRCB_SWAPUV                       = 201 + SURFACE_FORMAT_CHANNEL_SWAP,
325     FORMAT_VYUY                               = 202,
326     FORMAT_UYVY                               = 202 + SURFACE_FORMAT_CHANNEL_SWAP,
327     FORMAT_YCRCB_SWAPUYV                      = 202,
328     FORMAT_YCRCB_SWAPY                        = 202 + SURFACE_FORMAT_CHANNEL_SWAP,
329     FORMAT_Y410                               = 203,
330     FORMAT_Y416                               = 204,
331     FORMAT_Y210                               = 205,
332     FORMAT_Y216                               = 206,
333     FORMAT_HDMI                               = 207,
334     FORMAT_DP                                 = 208,
335 
336     FORMAT_420_OPAQUE                         = 219,
337     FORMAT_NV12                               = 220,
338     FORMAT_NV21                               = 220 + SURFACE_FORMAT_CHANNEL_SWAP,
339     FORMAT_PLANAR_420_8                       = 220,
340     FORMAT_NV11                               = 221,
341     FORMAT_P010                               = 222,
342     FORMAT_PLANAR_420_16                      = 223,
343     FORMAT_P016                               = 223,
344     FORMAT_P210                               = 224,
345     FORMAT_P216                               = 225,
346     FORMAT_P208                               = 226,
347 
348     FORMAT_I420                               = 240,
349     FORMAT_YV12                               = 240 + SURFACE_FORMAT_CHANNEL_SWAP,
350     FORMAT_IMC3                               = 241,
351     FORMAT_IMC1                               = 241 + SURFACE_FORMAT_CHANNEL_SWAP,
352     FORMAT_IMC4                               = 242,
353     FORMAT_IMC2                               = 242 + SURFACE_FORMAT_CHANNEL_SWAP,
354     FORMAT_RGBP                               = 243,
355     FORMAT_BGRP                               = 243 + SURFACE_FORMAT_CHANNEL_SWAP,
356     FORMAT_400P                               = 244,
357     FORMAT_NV12_2PLANES                       = 245,
358     FORMAT_YV12_3PLANES                       = 246,
359     FORMAT_Y210_2PLANES                       = 247,
360     FORMAT_P010_2PLANES                       = 248,
361     FORMAT_BASE_MASK                          = 255,
362     FORMAT_MASK                               = 255 + SURFACE_FORMAT_CHANNEL_SWAP,
363     FORMAT_UNKNOWN                            = 0x7FFFFFFF,
364 } MDF_FC_FORMAT;
365 
366 //!
367 //! \brief Color Spaces enum
368 //!
369 typedef enum _MDF_FC_PLANE_TYPE
370 {
371     SINGLE_PLANE,
372     TWO_PLANES_FIRST,
373     TWO_PLANES_SECOND,
374     THREE_PLANES_FIRST,
375     THREE_PLANES_SECOND,
376     THREE_PLANES_THIRD,
377     PLANE_TYPE_NUM
378 } MDF_FC_PLANE_TYPE;
379 
380 //!
381 //! \brief Color Spaces enum
382 //!
383 typedef enum _MDF_FC_COLOR_SPACE
384 {
385     CSpace_None     = -5        ,   //!< Unidentified
386     CSpace_Source   = -4        ,   //!< Current source Color Space
387 
388     // Groups of Color Spaces
389     CSpace_RGB      = -3        ,   //!< sRGB
390     CSpace_YUV      = -2        ,   //!< YUV BT601 or BT709 - non xvYCC
391     CSpace_Gray     = -1        ,   //!< Gray scale image with only Y component
392     CSpace_Any      =  0        ,   //!< Any
393 
394     // Specific Color Spaces
395     CSpace_sRGB                 ,   //!< RGB - sRGB       -   RGB[0,255]
396     CSpace_stRGB                ,   //!< RGB - stRGB      -   RGB[16,235]
397     CSpace_BT601                ,   //!< YUV BT.601 Y[16,235] UV[16,240]
398     CSpace_BT601_FullRange      ,   //!< YUV BT.601 Y[0,255]  UV[-128,+127]
399     CSpace_BT709                ,   //!< YUV BT.709 Y[16,235] UV[16,240]
400     CSpace_BT709_FullRange      ,   //!< YUV BT.709 Y[0,255]  UV[-128,+127]
401     CSpace_xvYCC601             ,   //!< xvYCC 601 Y[16,235]  UV[16,240]
402     CSpace_xvYCC709             ,   //!< xvYCC 709 Y[16,235]  UV[16,240]
403     CSpace_BT601Gray            ,   //!< BT.601 Y[16,235]
404     CSpace_BT601Gray_FullRange  ,   //!< BT.601 Y[0,255]
405     CSpace_BT2020               ,   //!< BT.2020 YUV Limited Range 10bit Y[64, 940] UV[64, 960]
406     CSpace_BT2020_FullRange     ,   //!< BT.2020 YUV Full Range 10bit [0, 1023]
407     CSpace_BT2020_RGB           ,   //!< BT.2020 RGB Full Range 10bit [0, 1023]
408     CSpace_BT2020_stRGB         ,   //!< BT.2020 RGB Studio Range 10bit [64, 940]
409     CSpace_Count                    //!< Keep this at the end
410 } MDF_FC_COLOR_SPACE;
411 
412 //!
413 //! \brief Chroma siting enum
414 //!
415 typedef enum _MDF_FC_CHROMA_SITING
416 {
417     CHROMA_SUBSAMPLING_TOP_CENTER = 0,
418     CHROMA_SUBSAMPLING_CENTER_CENTER = 0x1000000,
419     CHROMA_SUBSAMPLING_BOTTOM_CENTER = 0x2000000,
420     CHROMA_SUBSAMPLING_TOP_LEFT      = 0x3000000,
421     CHROMA_SUBSAMPLING_CENTER_LEFT   = 0x4000000,
422     CHROMA_SUBSAMPLING_BOTTOM_LEFT   = 0x5000000
423 } MDF_FC_CHROMA_SITING;
424 
425 
426 //!
427 //! \brief Vphal Rotation Mode enum
428 //!
429 typedef enum _MDF_FC_ROTATION
430 {
431     MDF_FC_ROTATION_IDENTITY = 0,       //!< Rotation 0 degrees
432     MDF_FC_ROTATION_90,                 //!< Rotation 90 degrees
433     MDF_FC_ROTATION_180,                //!< Rotation 180 degrees
434     MDF_FC_ROTATION_270,                //!< Rotation 270 degrees
435     MDF_FC_MIRROR_HORIZONTAL,           //!< Horizontal Mirror
436     MDF_FC_MIRROR_VERTICAL,             //!< Vertical Mirror
437     MDF_FC_ROTATE_90_MIRROR_VERTICAL,   //!< 90 + V Mirror
438     MDF_FC_ROTATE_90_MIRROR_HORIZONTAL  //!< 90 + H Mirror
439 } MDF_FC_ROTATION;
440 
441 #endif