xref: /aosp_15_r20/external/intel-media-driver/cmrtlib/agnostic/share/cm_rt_g9.h (revision ba62d9d3abf0e404f2022b4cd7a85e107f48596f)
1 /*
2 * Copyright (c) 2017, 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 //! \file      cm_rt_g9.h
24 //! \brief     Contains Definitions for CM on Gen 9
25 //!
26 
27 #ifndef __CM_RT_G9_H__
28 #define __CM_RT_G9_H__
29 
30 #define SKL_L3_PLANE_DEFAULT    CM_L3_PLANE_DEFAULT
31 #define SKL_L3_PLANE_1          CM_L3_PLANE_1
32 #define SKL_L3_PLANE_2          CM_L3_PLANE_2
33 #define SKL_L3_PLANE_3          CM_L3_PLANE_3
34 #define SKL_L3_PLANE_4          CM_L3_PLANE_4
35 #define SKL_L3_PLANE_5          CM_L3_PLANE_5
36 #define SKL_L3_PLANE_6          CM_L3_PLANE_6
37 #define SKL_L3_PLANE_7          CM_L3_PLANE_7
38 #define SKL_L3_CONFIG_COUNT     8
39 
40 #define SKL_SLM_PLANE_DEFAULT = SKL_L3_PLANE_5
41 
42 static const L3ConfigRegisterValues SKL_L3_PLANE[SKL_L3_CONFIG_COUNT] =
43 {                                                                                 // SLM    URB   Rest   DC    RO    I/S    C     T     Sum
44     {0x00000000, 0x00000000, 0x00000000, 0x60000060},                             //{0,     48,    48,    0,    0,    0,    0,    0,    96},
45     {0x00000000, 0x00000000, 0x00000000,0x00808060},                              //{0,     48,    0,    16,   32,    0,    0,    0,    96},
46     {0x00000000, 0x00000000, 0x00000000,0x00818040},                              //{0,     32,    0,    16,   48,    0,    0,    0,    96},
47     {0x00000000, 0x00000000, 0x00000000,0x00030040},                              //{0,     32,    0,     0,   64,    0,    0,    0,    96},
48     {0x00000000, 0x00000000, 0x00000000,0x80000040},                              //{0,     32,    64,    0,    0,    0,    0,    0,    96},
49     {0x00000000, 0x00000000, 0x00000000,0x60000121},                              //{32,    16,    48,    0,    0,    0,    0,    0,    96},
50     {0x00000000, 0x00000000, 0x00000000,0x00410121},                              //{32,    16,    0,    16,   32,    0,    0,    0,    96},
51     {0x00000000, 0x00000000, 0x00000000,0x00808121}                               //{32,    16,    0,    32,   16,    0,    0,    0,    96}
52 };
53 
54 typedef struct _VEBOX_SURFACE_CONTROL_BITS_G9
55 {
56     // DWORD 0
57     union {
58         struct {
59             DWORD       Reserved0 : BITFIELD_BIT(0);
60             DWORD       IndexToMemoryObjectControlStateMocsTables : BITFIELD_RANGE(1, 6);
61             DWORD       MemoryCompressionEnable : BITFIELD_BIT(7);
62             DWORD       MemoryCompressionMode : BITFIELD_BIT(8);
63             DWORD       TiledResourceMode : BITFIELD_RANGE(9, 10);
64             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 31);
65         };
66         DWORD Value;
67     } DW0;
68 } VEBOX_SURFACE_CONTROL_BITS_G9, *PVEBOX_SURFACE_CONTROL_BITS_G9;
69 
70 
71 // Defined in vol2c "Vebox"
72 typedef struct _VEBOX_DNDI_STATE_G9
73 {
74     // Temporal DN
75     // DWORD 0
76     union {
77         struct {
78             DWORD       DenoiseMovingPixelThreshold : BITFIELD_RANGE(0, 4);
79             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(5, 7);
80             DWORD       DenoiseHistoryIncrease : BITFIELD_RANGE(8, 11);
81             DWORD       DenoiseMaximumHistory : BITFIELD_RANGE(12, 19);
82             DWORD       DenoiseStadThreshold : BITFIELD_RANGE(20, 31);
83         };
84         DWORD       Value;
85     } DW0;
86 
87     // DWORD 1
88     union {
89         struct {
90             DWORD       LowTemporalDifferenceThreshold : BITFIELD_RANGE(0, 9);
91             DWORD       TemporalDifferenceThreshold : BITFIELD_RANGE(10, 19);
92             DWORD       DenoiseAsdThreshold : BITFIELD_RANGE(20, 31);
93         };
94         DWORD       Value;
95     } DW1;
96 
97     // DWORD 2
98     union {
99         struct {
100             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 9);
101             DWORD       InitialDenoiseHistory : BITFIELD_RANGE(10, 15);
102             DWORD       DenoiseThresholdForSumOfComplexityMeasure : BITFIELD_RANGE(16, 27);
103             DWORD       ProgressiveDn : BITFIELD_BIT(28);
104             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31);
105         };
106         DWORD       Value;
107     } DW2;
108 
109     // Global Noise estimate and hot pixel detection
110     // DWORD 3
111     union {
112         struct {
113             DWORD       BlockNoiseEstimateNoiseThreshold : BITFIELD_RANGE(0, 11);
114             DWORD       BlockNoiseEstimateEdgeThreshold : BITFIELD_RANGE(12, 19);
115             DWORD       HotPixelThreshold : BITFIELD_RANGE(20, 27);
116             DWORD       HotPixelCount : BITFIELD_RANGE(28, 31);
117         };
118         DWORD       Value;
119     } DW3;
120 
121     // Chroma DN
122     // DWORD 4
123     union {
124         struct {
125             DWORD       ChromaLowTemporalDifferenceThreshold : BITFIELD_RANGE(0, 5);
126             DWORD       ChromaTemporalDifferenceThreshold : BITFIELD_RANGE(6, 11);
127             DWORD       ChromaDenoiseEnable : BITFIELD_BIT(12);
128             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15);
129             DWORD       ChromaDenoiseStadThreshold : BITFIELD_RANGE(16, 23);
130             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(24, 31);
131         };
132         DWORD       Value;
133     } DW4;
134 
135     // 5x5 Spatial Denoise
136     // DWORD 5
137     union {
138         struct {
139             DWORD       DnWr0 : BITFIELD_RANGE(0, 4);
140             DWORD       DnWr1 : BITFIELD_RANGE(5, 9);
141             DWORD       DnWr2 : BITFIELD_RANGE(10, 14);
142             DWORD       DnWr3 : BITFIELD_RANGE(15, 19);
143             DWORD       DnWr4 : BITFIELD_RANGE(20, 24);
144             DWORD       DnWr5 : BITFIELD_RANGE(25, 29);
145             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31);
146         };
147         DWORD       Value;
148     } DW5;
149 
150     // DWORD 6
151     union {
152         struct {
153             DWORD       DnThmin : BITFIELD_RANGE(0, 12);
154             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15);
155             DWORD       DnThmax : BITFIELD_RANGE(16, 28);
156             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31);
157         };
158         DWORD       Value;
159     } DW6;
160 
161     // DWORD 7
162     union {
163         struct {
164             DWORD       DnDynThmin : BITFIELD_RANGE(0, 12);
165             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15);
166             DWORD       DnPrt5 : BITFIELD_RANGE(16, 28);
167             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31);
168         };
169         DWORD       Value;
170     } DW7;
171 
172     // DWORD 8
173     union {
174         struct {
175             DWORD       DnPrt3 : BITFIELD_RANGE(0, 12);
176             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15);
177             DWORD       DnPrt4 : BITFIELD_RANGE(16, 28);
178             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31);
179         };
180         DWORD       Value;
181     } DW8;
182 
183     // DWORD 9
184     union {
185         struct {
186             DWORD       DnPrt1 : BITFIELD_RANGE(0, 12);
187             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15);
188             DWORD       DnPrt2 : BITFIELD_RANGE(16, 28);
189             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31);
190         };
191         DWORD       Value;
192     } DW9;
193 
194     // DWORD 10
195     union {
196         struct {
197             DWORD       DnWd20 : BITFIELD_RANGE(0, 4);
198             DWORD       DnWd21 : BITFIELD_RANGE(5, 9);
199             DWORD       DnWd22 : BITFIELD_RANGE(10, 14);
200             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(15);
201             DWORD       DnPrt0 : BITFIELD_RANGE(16, 28);
202             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31);
203         };
204         DWORD       Value;
205     } DW10;
206 
207     // DWORD 11
208     union {
209         struct {
210             DWORD       DnWd00 : BITFIELD_RANGE(0, 4);
211             DWORD       DnWd01 : BITFIELD_RANGE(5, 9);
212             DWORD       DnWd02 : BITFIELD_RANGE(10, 14);
213             DWORD       DnWd10 : BITFIELD_RANGE(15, 19);
214             DWORD       DnWd11 : BITFIELD_RANGE(20, 24);
215             DWORD       DnWd12 : BITFIELD_RANGE(25, 29);
216             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31);
217         };
218         DWORD       Value;
219     } DW11;
220 
221     // FMD and DI
222     // DWORD 12
223     union {
224         struct {
225             DWORD       SmoothMvThreshold : BITFIELD_RANGE(0, 1);
226             DWORD       SadTightThreshold : BITFIELD_RANGE(2, 5);
227             DWORD       ContentAdaptiveThresholdSlope : BITFIELD_RANGE(6, 9);
228             DWORD       StmmC2 : BITFIELD_RANGE(10, 12);
229             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 31);
230         };
231         DWORD       Value;
232     } DW12;
233 
234     // DWORD 13
235     union {
236         struct {
237             DWORD       MaximumStmm : BITFIELD_RANGE(0, 7);
238             DWORD       MultiplierForVecm : BITFIELD_RANGE(8, 13);
239             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(14, 15);
240             DWORD       BlendingConstantAcrossTimeForSmallValuesOfStmm : BITFIELD_RANGE(16, 23);
241             DWORD       BlendingConstantAcrossTimeForLargeValuesOfStmm : BITFIELD_RANGE(24, 30);
242             DWORD       StmmBlendingConstantSelect : BITFIELD_BIT(31);
243         };
244         DWORD       Value;
245     } DW13;
246 
247     // DWORD 14
248     union {
249         struct {
250             DWORD       SdiDelta : BITFIELD_RANGE(0, 7);
251             DWORD       SdiThreshold : BITFIELD_RANGE(8, 15);
252             DWORD       StmmOutputShift : BITFIELD_RANGE(16, 19);
253             DWORD       StmmShiftUp : BITFIELD_RANGE(20, 21);
254             DWORD       StmmShiftDown : BITFIELD_RANGE(22, 23);
255             DWORD       MinimumStmm : BITFIELD_RANGE(24, 31);
256         };
257         DWORD       Value;
258     } DW14;
259 
260     // DWORD 15
261     union {
262         struct {
263             DWORD       FmdTemporalDifferenceThreshold : BITFIELD_RANGE(0, 7);
264             DWORD       SdiFallbackMode2ConstantAngle2X1 : BITFIELD_RANGE(8, 15);
265             DWORD       SdiFallbackMode1T2Constant : BITFIELD_RANGE(16, 23);
266             DWORD       SdiFallbackMode1T1Constant : BITFIELD_RANGE(24, 31);
267         };
268         DWORD       Value;
269     } DW15;
270 
271     // DWORD 16
272     union {
273         struct {
274             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 2);
275             DWORD       DnDiTopFirst : BITFIELD_BIT(3);
276             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(4, 6);
277             DWORD       McdiEnable : BITFIELD_BIT(7);
278             DWORD       FmdTearThreshold : BITFIELD_RANGE(8, 13);
279             DWORD       CatThreshold : BITFIELD_RANGE(14, 15);
280             DWORD       Fmd2VerticalDifferenceThreshold : BITFIELD_RANGE(16, 23);
281             DWORD       Fmd1VerticalDifferenceThreshold : BITFIELD_RANGE(24, 31);
282         };
283         DWORD       Value;
284     } DW16;
285 
286     // DWORD 17
287     union {
288         struct {
289             DWORD       SadTha : BITFIELD_RANGE(0, 3);
290             DWORD       SadThb : BITFIELD_RANGE(4, 7);
291             DWORD       FmdFor1StFieldOfCurrentFrame : BITFIELD_RANGE(8, 9);
292             DWORD       McPixelConsistencyThreshold : BITFIELD_RANGE(10, 15);
293             DWORD       FmdFor2NdFieldOfPreviousFrame : BITFIELD_RANGE(16, 17);
294             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(18);
295             DWORD       NeighborPixelThreshold : BITFIELD_RANGE(19, 22);
296             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(23, 31);
297         };
298         DWORD       Value;
299     } DW17;
300 } VEBOX_DNDI_STATE_G9, *PVEBOX_DNDI_STATE_G9;
301 
302 // Defined in vol2c "Vebox"
303 typedef struct _VEBOX_STD_STE_STATE_G9
304 {
305     // DWORD 0
306     union {
307         struct {
308             DWORD       StdEnable : BITFIELD_BIT(0);
309             DWORD       SteEnable : BITFIELD_BIT(1);
310             DWORD       OutputControl : BITFIELD_BIT(2);
311             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(3);
312             DWORD       SatMax : BITFIELD_RANGE(4, 9);
313             DWORD       HueMax : BITFIELD_RANGE(10, 15);
314             DWORD       UMid : BITFIELD_RANGE(16, 23);
315             DWORD       VMid : BITFIELD_RANGE(24, 31);
316         };
317         DWORD           Value;
318     } DW0;
319 
320     // DWORD 1
321     union {
322         struct {
323             DWORD       Sin : BITFIELD_RANGE(0, 7);
324             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(8, 9);
325             DWORD       Cos : BITFIELD_RANGE(10, 17);
326             DWORD       HsMargin : BITFIELD_RANGE(18, 20);
327             DWORD       DiamondDu : BITFIELD_RANGE(21, 27);
328             DWORD       DiamondMargin : BITFIELD_RANGE(28, 30);
329             DWORD       StdScoreOutput : BITFIELD_BIT(31);
330         };
331         DWORD           Value;
332     } DW1;
333 
334     // DWORD 2
335     union {
336         struct {
337             DWORD       DiamondDv : BITFIELD_RANGE(0, 6);
338             DWORD       DiamondTh : BITFIELD_RANGE(7, 12);
339             DWORD       DiamondAlpha : BITFIELD_RANGE(13, 20);
340             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(21, 31);
341         };
342         DWORD           Value;
343     } DW2;
344 
345     // DWORD 3
346     union {
347         struct {
348             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 6);
349             DWORD       VyStdEnable : BITFIELD_BIT(7);
350             DWORD       YPoint1 : BITFIELD_RANGE(8, 15);
351             DWORD       YPoint2 : BITFIELD_RANGE(16, 23);
352             DWORD       YPoint3 : BITFIELD_RANGE(24, 31);
353         };
354         DWORD           Value;
355     } DW3;
356 
357     // DWORD 4
358     union {
359         struct {
360             DWORD       YPoint4 : BITFIELD_RANGE(0, 7);
361             DWORD       YSlope1 : BITFIELD_RANGE(8, 12);
362             DWORD       YSlope2 : BITFIELD_RANGE(13, 17);
363             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(18, 31);
364         };
365         DWORD           Value;
366     } DW4;
367 
368     // DWORD 5
369     union {
370         struct {
371             DWORD       InvMarginVyl : BITFIELD_RANGE(0, 15);
372             DWORD       InvSkinTypesMargin : BITFIELD_RANGE(16, 31);
373         };
374         DWORD           Value;
375     } DW5;
376 
377     // DWORD 6
378     union {
379         struct {
380             DWORD       InvMarginVyu : BITFIELD_RANGE(0, 15);
381             DWORD       P0L : BITFIELD_RANGE(16, 23);
382             DWORD       P1L : BITFIELD_RANGE(24, 31);
383         };
384         DWORD           Value;
385     } DW6;
386 
387     // DWORD 7
388     union {
389         struct {
390             DWORD       P2L : BITFIELD_RANGE(0, 7);
391             DWORD       P3L : BITFIELD_RANGE(8, 15);
392             DWORD       B0L : BITFIELD_RANGE(16, 23);
393             DWORD       B1L : BITFIELD_RANGE(24, 31);
394         };
395         DWORD           Value;
396     } DW7;
397 
398     // DWORD 8
399     union {
400         struct {
401             DWORD       B2L : BITFIELD_RANGE(0, 7);
402             DWORD       B3L : BITFIELD_RANGE(8, 15);
403             DWORD       S0L : BITFIELD_RANGE(16, 26);
404             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31);
405         };
406         DWORD           Value;
407     } DW8;
408 
409     // DWORD 9
410     union {
411         struct {
412             DWORD       S1L : BITFIELD_RANGE(0, 10);
413             DWORD       S2L : BITFIELD_RANGE(11, 21);
414             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31);
415         };
416         DWORD           Value;
417     } DW9;
418 
419     // DWORD 10
420     union {
421         struct {
422             DWORD       S3L : BITFIELD_RANGE(0, 10);
423             DWORD       P0U : BITFIELD_RANGE(11, 18);
424             DWORD       P1U : BITFIELD_RANGE(19, 26);
425             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31);
426         };
427         DWORD           Value;
428     } DW10;
429 
430     // DWORD 11
431     union {
432         struct {
433             DWORD       P2U : BITFIELD_RANGE(0, 7);
434             DWORD       P3U : BITFIELD_RANGE(8, 15);
435             DWORD       B0U : BITFIELD_RANGE(16, 23);
436             DWORD       B1U : BITFIELD_RANGE(24, 31);
437         };
438         DWORD           Value;
439     } DW11;
440 
441     // DWORD 12
442     union {
443         struct {
444             DWORD       B2U : BITFIELD_RANGE(0, 7);
445             DWORD       B3U : BITFIELD_RANGE(8, 15);
446             DWORD       S0U : BITFIELD_RANGE(16, 26);
447             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31);
448         };
449         DWORD           Value;
450     } DW12;
451 
452     // DWORD 13
453     union {
454         struct {
455             DWORD       S1U : BITFIELD_RANGE(0, 10);
456             DWORD       S2U : BITFIELD_RANGE(11, 21);
457             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31);
458         };
459         DWORD           Value;
460     } DW13;
461 
462     // DWORD 14
463     union {
464         struct {
465             DWORD       S3U : BITFIELD_RANGE(0, 10);
466             DWORD       SkinTypesEnable : BITFIELD_BIT(11);
467             DWORD       SkinTypesThresh : BITFIELD_RANGE(12, 19);
468             DWORD       SkinTypesMargin : BITFIELD_RANGE(20, 27);
469             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(28, 31);
470         };
471         DWORD           Value;
472     } DW14;
473 
474     // DWORD 15
475     union {
476         struct {
477             DWORD       Satp1 : BITFIELD_RANGE(0, 6);
478             DWORD       Satp2 : BITFIELD_RANGE(7, 13);
479             DWORD       Satp3 : BITFIELD_RANGE(14, 20);
480             DWORD       Satb1 : BITFIELD_RANGE(21, 30);
481             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31);
482         };
483         DWORD           Value;
484     } DW15;
485 
486     // DWORD 16
487     union {
488         struct {
489             DWORD       Satb2 : BITFIELD_RANGE(0, 9);
490             DWORD       Satb3 : BITFIELD_RANGE(10, 19);
491             DWORD       Sats0 : BITFIELD_RANGE(20, 30);
492             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31);
493         };
494         DWORD           Value;
495     } DW16;
496 
497     // DWORD 17
498     union {
499         struct {
500             DWORD       Sats1 : BITFIELD_RANGE(0, 10);
501             DWORD       Sats2 : BITFIELD_RANGE(11, 21);
502             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31);
503         };
504         DWORD           Value;
505     } DW17;
506 
507     // DWORD 18
508     union {
509         struct {
510             DWORD       Sats3 : BITFIELD_RANGE(0, 10);
511             DWORD       Huep1 : BITFIELD_RANGE(11, 17);
512             DWORD       Huep2 : BITFIELD_RANGE(18, 24);
513             DWORD       Huep3 : BITFIELD_RANGE(25, 31);
514         };
515         DWORD           Value;
516     } DW18;
517 
518     // DWORD 19
519     union {
520         struct {
521             DWORD       Hueb1 : BITFIELD_RANGE(0, 9);
522             DWORD       Hueb2 : BITFIELD_RANGE(10, 19);
523             DWORD       Hueb3 : BITFIELD_RANGE(20, 29);
524             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31);
525         };
526         DWORD           Value;
527     } DW19;
528 
529     // DWORD 20
530     union {
531         struct {
532             DWORD       Hues0 : BITFIELD_RANGE(0, 10);
533             DWORD       Hues1 : BITFIELD_RANGE(11, 21);
534             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31);
535         };
536         DWORD           Value;
537     } DW20;
538 
539     // DWORD 21
540     union {
541         struct {
542             DWORD       Hues2 : BITFIELD_RANGE(0, 10);
543             DWORD       Hues3 : BITFIELD_RANGE(11, 21);
544             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31);
545         };
546         DWORD           Value;
547     } DW21;
548 
549     // DWORD 22
550     union {
551         struct {
552             DWORD       Satp1Dark : BITFIELD_RANGE(0, 6);
553             DWORD       Satp2Dark : BITFIELD_RANGE(7, 13);
554             DWORD       Satp3Dark : BITFIELD_RANGE(14, 20);
555             DWORD       Satb1Dark : BITFIELD_RANGE(21, 30);
556             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31);
557         };
558         DWORD           Value;
559     } DW22;
560 
561     // DWORD 23
562     union {
563         struct {
564             DWORD       Satb2Dark : BITFIELD_RANGE(0, 9);
565             DWORD       Satb3Dark : BITFIELD_RANGE(10, 19);
566             DWORD       Sats0Dark : BITFIELD_RANGE(20, 30);
567             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31);
568         };
569         DWORD           Value;
570     } DW23;
571 
572     // DWORD 24
573     union {
574         struct {
575             DWORD       Sats1Dark : BITFIELD_RANGE(0, 10);
576             DWORD       Sats2Dark : BITFIELD_RANGE(11, 21);
577             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31);
578         };
579         DWORD           Value;
580     } DW24;
581 
582     // DWORD 25
583     union {
584         struct {
585             DWORD       Sats3Dark : BITFIELD_RANGE(0, 10);
586             DWORD       Huep1Dark : BITFIELD_RANGE(11, 17);
587             DWORD       Huep2Dark : BITFIELD_RANGE(18, 24);
588             DWORD       Huep3Dark : BITFIELD_RANGE(25, 31);
589         };
590         DWORD           Value;
591     } DW25;
592 
593     // DWORD 26
594     union {
595         struct {
596             DWORD       Hueb1Dark : BITFIELD_RANGE(0, 9);
597             DWORD       Hueb2Dark : BITFIELD_RANGE(10, 19);
598             DWORD       Hueb3Dark : BITFIELD_RANGE(20, 29);
599             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31);
600         };
601         DWORD           Value;
602     } DW26;
603 
604     // DWORD 27
605     union {
606         struct {
607             DWORD       Hues0Dark : BITFIELD_RANGE(0, 10);
608             DWORD       Hues1Dark : BITFIELD_RANGE(11, 21);
609             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31);
610         };
611         DWORD           Value;
612     } DW27;
613 
614     // DWORD 28
615     union {
616         struct {
617             DWORD       Hues2Dark : BITFIELD_RANGE(0, 10);
618             DWORD       Hues3Dark : BITFIELD_RANGE(11, 21);
619             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31);
620         };
621         DWORD           Value;
622     } DW28;
623 } VEBOX_STD_STE_STATE_G9, *PVEBOX_STD_STE_STATE_G9;
624 
625 
626 // Defined in vol2c "Vebox"
627 typedef struct _VEBOX_ACE_LACE_STATE_G9
628 {
629     // DWORD 0
630     union {
631         struct {
632             DWORD       AceEnable : BITFIELD_BIT(0);
633             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(1);
634             DWORD       SkinThreshold : BITFIELD_RANGE(2, 6);
635             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(7, 11);
636             DWORD       LaceHistogramEnable : BITFIELD_BIT(12);
637             DWORD       LaceHistogramSize : BITFIELD_BIT(13);
638             DWORD       LaceSingleHistogramSet : BITFIELD_RANGE(14, 15);
639             DWORD       MinAceLuma : BITFIELD_RANGE(16, 31);
640         };
641         DWORD           Value;
642     } DW0;
643 
644     // DWORD 1
645     union {
646         struct {
647             DWORD       Ymin : BITFIELD_RANGE(0, 7);
648             DWORD       Y1 : BITFIELD_RANGE(8, 15);
649             DWORD       Y2 : BITFIELD_RANGE(16, 23);
650             DWORD       Y3 : BITFIELD_RANGE(24, 31);
651         };
652         DWORD           Value;
653     } DW1;
654 
655     // DWORD 2
656     union {
657         struct {
658             DWORD       Y4 : BITFIELD_RANGE(0, 7);
659             DWORD       Y5 : BITFIELD_RANGE(8, 15);
660             DWORD       Y6 : BITFIELD_RANGE(16, 23);
661             DWORD       Y7 : BITFIELD_RANGE(24, 31);
662         };
663         DWORD           Value;
664     } DW2;
665 
666     // DWORD 3
667     union {
668         struct {
669             DWORD       Y8 : BITFIELD_RANGE(0, 7);
670             DWORD       Y9 : BITFIELD_RANGE(8, 15);
671             DWORD       Y10 : BITFIELD_RANGE(16, 23);
672             DWORD       Ymax : BITFIELD_RANGE(24, 31);
673         };
674         DWORD           Value;
675     } DW3;
676 
677     // DWORD 4
678     union {
679         struct {
680             DWORD       B1 : BITFIELD_RANGE(0, 7);
681             DWORD       B2 : BITFIELD_RANGE(8, 15);
682             DWORD       B3 : BITFIELD_RANGE(16, 23);
683             DWORD       B4 : BITFIELD_RANGE(24, 31);
684         };
685         DWORD           Value;
686     } DW4;
687 
688     // DWORD 5
689     union {
690         struct {
691             DWORD       B5 : BITFIELD_RANGE(0, 7);
692             DWORD       B6 : BITFIELD_RANGE(8, 15);
693             DWORD       B7 : BITFIELD_RANGE(16, 23);
694             DWORD       B8 : BITFIELD_RANGE(24, 31);
695         };
696         DWORD           Value;
697     } DW5;
698 
699     // DWORD 6
700     union {
701         struct {
702             DWORD       B9 : BITFIELD_RANGE(0, 7);
703             DWORD       B10 : BITFIELD_RANGE(8, 15);
704             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(16, 31);
705         };
706         DWORD           Value;
707     } DW6;
708 
709     // DWORD 7
710     union {
711         struct {
712             DWORD       S0 : BITFIELD_RANGE(0, 10);
713             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15);
714             DWORD       S1 : BITFIELD_RANGE(16, 26);
715             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31);
716         };
717         DWORD           Value;
718     } DW7;
719 
720     // DWORD 8
721     union {
722         struct {
723             DWORD       S2 : BITFIELD_RANGE(0, 10);
724             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15);
725             DWORD       S3 : BITFIELD_RANGE(16, 26);
726             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31);
727         };
728         DWORD           Value;
729     } DW8;
730 
731     // DWORD 9
732     union {
733         struct {
734             DWORD       S4 : BITFIELD_RANGE(0, 10);
735             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15);
736             DWORD       S5 : BITFIELD_RANGE(16, 26);
737             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31);
738         };
739         DWORD           Value;
740     } DW9;
741 
742     // DWORD 10
743     union {
744         struct {
745             DWORD       S6 : BITFIELD_RANGE(0, 10);
746             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15);
747             DWORD       S7 : BITFIELD_RANGE(16, 26);
748             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31);
749         };
750         DWORD           Value;
751     } DW10;
752 
753     // DWORD 11
754     union {
755         struct {
756             DWORD       S8 : BITFIELD_RANGE(0, 10);
757             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15);
758             DWORD       S9 : BITFIELD_RANGE(16, 26);
759             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31);
760         };
761         DWORD           Value;
762     } DW11;
763 
764     // DWORD 12
765     union {
766         struct {
767             DWORD       S10 : BITFIELD_RANGE(0, 10);
768             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15);
769             DWORD       MaxAceLuma : BITFIELD_RANGE(16, 31);
770         };
771         DWORD           Value;
772     } DW12;
773 
774 } VEBOX_ACE_LACE_STATE_G9, *PVEBOX_ACE_LACE_STATE_G9;
775 
776 
777 // Defined in vol2c "Vebox"
778 typedef struct _VEBOX_TCC_STATE_G9
779 {
780     // DWORD 0
781     union {
782         struct {
783             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 6);
784             DWORD       TccEnable : BITFIELD_BIT(7);
785             DWORD       SatFactor1 : BITFIELD_RANGE(8, 15);
786             DWORD       SatFactor2 : BITFIELD_RANGE(16, 23);
787             DWORD       SatFactor3 : BITFIELD_RANGE(24, 31);
788         };
789         DWORD           Value;
790     } DW0;
791 
792     // DWORD 1
793     union {
794         struct {
795             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 7);
796             DWORD       SatFactor4 : BITFIELD_RANGE(8, 15);
797             DWORD       SatFactor5 : BITFIELD_RANGE(16, 23);
798             DWORD       SatFactor6 : BITFIELD_RANGE(24, 31);
799         };
800         DWORD           Value;
801     } DW1;
802 
803     // DWORD 2
804     union {
805         struct {
806             DWORD       BaseColor1 : BITFIELD_RANGE(0, 9);
807             DWORD       BaseColor2 : BITFIELD_RANGE(10, 19);
808             DWORD       BaseColor3 : BITFIELD_RANGE(20, 29);
809             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31);
810         };
811         DWORD           Value;
812     } DW2;
813 
814     // DWORD 3
815     union {
816         struct {
817             DWORD       BaseColo4 : BITFIELD_RANGE(0, 9);
818             DWORD       BaseColor5 : BITFIELD_RANGE(10, 19);
819             DWORD       BaseColor6 : BITFIELD_RANGE(20, 29);
820             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31);
821         };
822         DWORD           Value;
823     } DW3;
824 
825     // DWORD 4
826     union {
827         struct {
828             DWORD       ColorTransitSlope2 : BITFIELD_RANGE(0, 15);
829             DWORD       ColorTransitSlope23 : BITFIELD_RANGE(16, 31);
830         };
831         DWORD           Value;
832     } DW4;
833 
834     // DWORD 5
835     union {
836         struct {
837             DWORD       ColorTransitSlope34 : BITFIELD_RANGE(0, 15);
838             DWORD       ColorTransitSlope45 : BITFIELD_RANGE(16, 31);
839         };
840         DWORD           Value;
841     } DW5;
842 
843     // DWORD 6
844     union {
845         struct {
846             DWORD       ColorTransitSlope56 : BITFIELD_RANGE(0, 15);
847             DWORD       ColorTransitSlope61 : BITFIELD_RANGE(16, 31);
848         };
849         DWORD           Value;
850     } DW6;
851 
852     // DWORD 7
853     union {
854         struct {
855             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 1);
856             DWORD       ColorBias1 : BITFIELD_RANGE(2, 11);
857             DWORD       ColorBias2 : BITFIELD_RANGE(12, 21);
858             DWORD       ColorBias3 : BITFIELD_RANGE(22, 31);
859         };
860         DWORD           Value;
861     } DW7;
862 
863     // DWORD 8
864     union {
865         struct {
866             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 1);
867             DWORD       ColorBias4 : BITFIELD_RANGE(2, 11);
868             DWORD       ColorBias5 : BITFIELD_RANGE(12, 21);
869             DWORD       ColorBias6 : BITFIELD_RANGE(22, 31);
870         };
871         DWORD           Value;
872     } DW8;
873 
874     // DWORD 9
875     union {
876         struct {
877             DWORD       SteSlopeBits : BITFIELD_RANGE(0, 2);
878             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(3, 7);
879             DWORD       SteThreshold : BITFIELD_RANGE(8, 12);
880             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15);
881             DWORD       UvThresholdBits : BITFIELD_RANGE(16, 18);
882             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 23);
883             DWORD       UvThreshold : BITFIELD_RANGE(24, 30);
884             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31);
885         };
886         DWORD           Value;
887     } DW9;
888 
889     // DWORD 10
890     union {
891         struct {
892             DWORD       UVMaxColor : BITFIELD_RANGE(0, 8);
893             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(9, 15);
894             DWORD       InvUvmaxColor : BITFIELD_RANGE(16, 31);
895         };
896         DWORD           Value;
897     } DW10;
898 
899 } VEBOX_TCC_STATE_G9, *PVEBOX_TCC_STATE_G9;
900 
901 
902 // Defined in vol2c "Vebox"
903 typedef struct _VEBOX_PROCAMP_STATE_G9
904 {
905     // DWORD 0
906     union {
907         struct {
908             DWORD       ProcampEnable : BITFIELD_BIT(0);
909             DWORD       Brightness : BITFIELD_RANGE(1, 12);
910             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 16);
911             DWORD       Contrast : BITFIELD_RANGE(17, 27);
912             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(28, 31);
913         };
914         DWORD           Value;
915     } DW0;
916 
917     // DWORD 1
918     union {
919         struct {
920             DWORD       SinCS : BITFIELD_RANGE(0, 15);
921             DWORD       CosCS : BITFIELD_RANGE(16, 31);
922         };
923         DWORD           Value;
924     } DW1;
925 
926 } VEBOX_PROCAMP_STATE_G9, *PVEBOX_PROCAMP_STATE_G9;
927 
928 
929 // Defined in vol2c "Vebox"
930 typedef struct _VEBOX_CSC_STATE_G9
931 {
932     // DWORD 0
933     union {
934         struct {
935             DWORD       C0 : BITFIELD_RANGE(0, 18);
936             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 29);
937             DWORD       YuvChannelSwap : BITFIELD_BIT(30);
938             DWORD       TransformEnable : BITFIELD_BIT(31);
939         };
940         DWORD           Value;
941     } DW0;
942 
943     // DWORD 1
944     union {
945         struct {
946             DWORD       C1 : BITFIELD_RANGE(0, 18);
947             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31);
948         };
949         DWORD           Value;
950     } DW1;
951 
952     // DWORD 2
953     union {
954         struct {
955             DWORD       C2 : BITFIELD_RANGE(0, 18);
956             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31);
957         };
958         DWORD           Value;
959     } DW2;
960 
961     // DWORD 3
962     union {
963         struct {
964             DWORD       C3 : BITFIELD_RANGE(0, 18);
965             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31);
966         };
967         DWORD           Value;
968     } DW3;
969 
970     // DWORD 4
971     union {
972         struct {
973             DWORD       C4 : BITFIELD_RANGE(0, 18);
974             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31);
975         };
976         DWORD           Value;
977     } DW4;
978 
979     // DWORD 5
980     union {
981         struct {
982             DWORD       C5 : BITFIELD_RANGE(0, 18);
983             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31);
984         };
985         DWORD           Value;
986     } DW5;
987 
988     // DWORD 6
989     union {
990         struct {
991             DWORD       C6 : BITFIELD_RANGE(0, 18);
992             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31);
993         };
994         DWORD           Value;
995     } DW6;
996 
997     // DWORD 7
998     union {
999         struct {
1000             DWORD       C7 : BITFIELD_RANGE(0, 18);
1001             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31);
1002         };
1003         DWORD           Value;
1004     } DW7;
1005 
1006     // DWORD 8
1007     union {
1008         struct {
1009             DWORD       C8 : BITFIELD_RANGE(0, 18);
1010             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31);
1011         };
1012         DWORD           Value;
1013     } DW8;
1014 
1015     // DWORD 9
1016     union {
1017         struct {
1018             DWORD       OffsetIn1 : BITFIELD_RANGE(0, 15);
1019             DWORD       OffsetOut1 : BITFIELD_RANGE(16, 31);
1020         };
1021         DWORD           Value;
1022     } DW9;
1023 
1024     // DWORD 10
1025     union {
1026         struct {
1027             DWORD       OffsetIn2 : BITFIELD_RANGE(0, 15);
1028             DWORD       OffsetOut2 : BITFIELD_RANGE(16, 31);
1029         };
1030         DWORD           Value;
1031     } DW10;
1032 
1033     // DWORD 11
1034     union {
1035         struct {
1036             DWORD       OffsetIn3 : BITFIELD_RANGE(0, 15);
1037             DWORD       OffsetOut3 : BITFIELD_RANGE(16, 31);
1038         };
1039         DWORD           Value;
1040     } DW11;
1041 
1042 } VEBOX_CSC_STATE_G9, *PVEBOX_CSC_STATE_G9;
1043 
1044 
1045 // Defined in vol2c "Vebox"
1046 typedef struct _VEBOX_ALPHA_AOI_STATE_G9
1047 {
1048     // DWORD 0
1049     union {
1050         struct {
1051             DWORD       ColorPipeAlpha : BITFIELD_RANGE(0, 15);
1052             DWORD       AlphaFromStateSelect : BITFIELD_BIT(16);
1053             DWORD       FullImageHistogram : BITFIELD_BIT(17);
1054             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(18, 31);
1055         };
1056         DWORD           Value;
1057     } DW0;
1058 
1059     // DWORD 1
1060     union {
1061         struct {
1062             DWORD       AoiMinX : BITFIELD_RANGE(0, 13);
1063             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(14, 15);
1064             DWORD       AoiMaxX : BITFIELD_RANGE(16, 29);
1065             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31);
1066         };
1067         DWORD           Value;
1068     } DW1;
1069 
1070     // DWORD 2
1071     union {
1072         struct {
1073             DWORD       AoiMinY : BITFIELD_RANGE(0, 13);
1074             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(14, 15);
1075             DWORD       AoiMaxY : BITFIELD_RANGE(16, 29);
1076             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31);
1077         };
1078         DWORD           Value;
1079     } DW2;
1080 
1081 } VEBOX_ALPHA_AOI_STATE_G9, *PVEBOX_ALPHA_AOI_STATE_G9;
1082 
1083 
1084 // Defined in vol2c "Vebox"
1085 typedef struct _VEBOX_CCM_STATE_G9
1086 {
1087     // DWORD 0
1088     union {
1089         struct {
1090             DWORD       C1 : BITFIELD_RANGE(0, 16);
1091             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 30);
1092             DWORD       ColorCorrectionMatrixEnable : BITFIELD_BIT(31);
1093         };
1094         DWORD           Value;
1095     } DW0;
1096 
1097     // DWORD 1
1098     union {
1099         struct {
1100             DWORD       C0 : BITFIELD_RANGE(0, 16);
1101             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31);
1102         };
1103         DWORD           Value;
1104     } DW1;
1105 
1106     // DWORD 2
1107     union {
1108         struct {
1109             DWORD       C3 : BITFIELD_RANGE(0, 16);
1110             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31);
1111         };
1112         DWORD           Value;
1113     } DW2;
1114 
1115     // DWORD 3
1116     union {
1117         struct {
1118             DWORD       C2 : BITFIELD_RANGE(0, 16);
1119             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31);
1120         };
1121         DWORD           Value;
1122     } DW3;
1123 
1124     // DWORD 4
1125     union {
1126         struct {
1127             DWORD       C5 : BITFIELD_RANGE(0, 16);
1128             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31);
1129         };
1130         DWORD           Value;
1131     } DW4;
1132 
1133     // DWORD 5
1134     union {
1135         struct {
1136             DWORD       C4 : BITFIELD_RANGE(0, 16);
1137             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31);
1138         };
1139         DWORD           Value;
1140     } DW5;
1141 
1142     // DWORD 6
1143     union {
1144         struct {
1145             DWORD       C7 : BITFIELD_RANGE(0, 16);
1146             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31);
1147         };
1148         DWORD           Value;
1149     } DW6;
1150 
1151     // DWORD 7
1152     union {
1153         struct {
1154             DWORD       C6 : BITFIELD_RANGE(0, 16);
1155             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31);
1156         };
1157         DWORD           Value;
1158     } DW7;
1159 
1160     // DWORD 8
1161     union {
1162         struct {
1163             DWORD       C8 : BITFIELD_RANGE(0, 16);
1164             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31);
1165         };
1166         DWORD           Value;
1167     } DW8;
1168 
1169 } VEBOX_CCM_STATE_G9, *PVEBOX_CCM_STATE_G9;
1170 
1171 // Defined in vol2c "Vebox"
1172 typedef struct _VEBOX_FRONT_END_CSC_STATE_G9
1173 {
1174     // DWORD 0
1175     union {
1176         struct {
1177             DWORD       FecscC0TransformCoefficient : BITFIELD_RANGE(0, 18);
1178             DWORD       Rserved : BITFIELD_RANGE(19, 30);
1179             DWORD       FrontEndCscTransformEnable : BITFIELD_BIT(31);
1180         };
1181         DWORD           Value;
1182     } DW0;
1183 
1184     // DWORD 1
1185     union {
1186         struct {
1187             DWORD       FecscC1TransformCoefficient : BITFIELD_RANGE(0, 18);
1188             DWORD       Rserved : BITFIELD_RANGE(19, 31);
1189         };
1190         DWORD           Value;
1191     } DW1;
1192 
1193     // DWORD 2
1194     union {
1195         struct {
1196             DWORD       FecscC2TransformCoefficient : BITFIELD_RANGE(0, 18);
1197             DWORD       Rserved : BITFIELD_RANGE(19, 31);
1198         };
1199         DWORD           Value;
1200     } DW2;
1201 
1202     // DWORD 3
1203     union {
1204         struct {
1205             DWORD       FecscC3TransformCoefficient : BITFIELD_RANGE(0, 18);
1206             DWORD       Rserved : BITFIELD_RANGE(19, 31);
1207         };
1208         DWORD           Value;
1209     } DW3;
1210 
1211     // DWORD 4
1212     union {
1213         struct {
1214             DWORD       FecscC4TransformCoefficient : BITFIELD_RANGE(0, 18);
1215             DWORD       Rserved : BITFIELD_RANGE(19, 31);
1216         };
1217         DWORD           Value;
1218     } DW4;
1219 
1220     // DWORD 5
1221     union {
1222         struct {
1223             DWORD       FecscC5TransformCoefficient : BITFIELD_RANGE(0, 18);
1224             DWORD       Rserved : BITFIELD_RANGE(19, 31);
1225         };
1226         DWORD           Value;
1227     } DW5;
1228 
1229     // DWORD 6
1230     union {
1231         struct {
1232             DWORD       FecscC6TransformCoefficient : BITFIELD_RANGE(0, 18);
1233             DWORD       Rserved : BITFIELD_RANGE(19, 31);
1234         };
1235         DWORD           Value;
1236     } DW6;
1237 
1238     // DWORD 7
1239     union {
1240         struct {
1241             DWORD       FecscC7TransformCoefficient : BITFIELD_RANGE(0, 18);
1242             DWORD       Rserved : BITFIELD_RANGE(19, 31);
1243         };
1244         DWORD           Value;
1245     } DW7;
1246 
1247     // DWORD 8
1248     union {
1249         struct {
1250             DWORD       FecscC8TransformCoefficient : BITFIELD_RANGE(0, 18);
1251             DWORD       Rserved : BITFIELD_RANGE(19, 31);
1252         };
1253         DWORD           Value;
1254     } DW8;
1255 
1256     // DWORD 9
1257     union {
1258         struct {
1259             DWORD       FecScOffsetIn1OffsetInForYR : BITFIELD_RANGE(0, 15);
1260             DWORD       FecScOffsetOut1OffsetOutForYR : BITFIELD_RANGE(16, 31);
1261         };
1262         DWORD           Value;
1263     } DW9;
1264 
1265     // DWORD 10
1266     union {
1267         struct {
1268             DWORD       FecScOffsetIn2OffsetOutForUG : BITFIELD_RANGE(0, 15);
1269             DWORD       FecScOffsetOut2OffsetOutForUG : BITFIELD_RANGE(16, 31);
1270         };
1271         DWORD           Value;
1272     } DW10;
1273 
1274     // DWORD 11
1275     union {
1276         struct {
1277             DWORD       FecScOffsetIn3OffsetOutForVB : BITFIELD_RANGE(0, 15);
1278             DWORD       FecScOffsetOut3OffsetOutForVB : BITFIELD_RANGE(16, 31);
1279         };
1280         DWORD           Value;
1281     } DW11;
1282 
1283 } VEBOX_FRONT_END_CSC_STATE_G9, *PVEBOX_FRONT_END_CSC_STATE_G9;
1284 
1285 // Defined in vol2c "Vebox"
1286 typedef struct _VEBOX_IECP_STATE_G9
1287 {
1288     // DWORD 0_28
1289     VEBOX_STD_STE_STATE_G9                      StdSteState;
1290 
1291     // DWORD 29_41
1292     VEBOX_ACE_LACE_STATE_G9                     AceLaceState;
1293 
1294     // DWORD 42_52
1295     VEBOX_TCC_STATE_G9                          TccState;
1296 
1297     // DWORD 53_54
1298     VEBOX_PROCAMP_STATE_G9                      ProcAmpState;
1299 
1300     // DWORD 55_66
1301     VEBOX_CSC_STATE_G9                          CscState;
1302 
1303     // DWORD 67_69
1304     VEBOX_ALPHA_AOI_STATE_G9                    AlphaAoiState;
1305 
1306     // DWORD 70_78
1307     VEBOX_CCM_STATE_G9                          CcmState;
1308 
1309     // DWORD 79_90
1310     VEBOX_FRONT_END_CSC_STATE_G9                FrontEndCscState;
1311 } VEBOX_IECP_STATE_G9, *PVEBOX_IECP_STATE_G9;
1312 
1313 
1314 // Defined in vol2c "VEBOX"
1315 typedef struct _VEBOX_CAPTURE_PIPE_STATE_G9
1316 {
1317     // DWORD 0
1318     union {
1319         struct {
1320             DWORD       GoodPixelNeighborThreshold : BITFIELD_RANGE(0, 5);
1321             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(6, 7);
1322             DWORD       AverageColorThreshold : BITFIELD_RANGE(8, 15);
1323             DWORD       GreenImbalanceThreshold : BITFIELD_RANGE(16, 19);
1324             DWORD       ShiftMinCost : BITFIELD_RANGE(20, 22);
1325             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(23);
1326             DWORD       GoodPixelThreshold : BITFIELD_RANGE(24, 29);
1327             DWORD       __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31);
1328         };
1329         DWORD Value;
1330     } DW0;
1331 
1332     // DWORD 1
1333     union {
1334         struct {
1335             DWORD       BadColorThreshold3 : BITFIELD_RANGE(0, 3);
1336             DWORD       NumberBigPixelTheshold : BITFIELD_RANGE(4, 7);
1337             DWORD       BadColorThreshold2 : BITFIELD_RANGE(8, 15);
1338             DWORD       BadColorThreshold1 : BITFIELD_RANGE(16, 23);
1339             DWORD       GoodIntesityThreshold : BITFIELD_RANGE(24, 27);
1340             DWORD       ScaleForMinCost : BITFIELD_RANGE(28, 31);
1341         };
1342         DWORD Value;
1343     } DW1;
1344 
1345     // DWORD 2
1346     union {
1347         struct {
1348             DWORD       WhiteBalanceCorrectionEnable : BITFIELD_BIT(0);
1349             DWORD       BlackPointCorrectionEnable : BITFIELD_BIT(1);
1350             DWORD       VignetteCorrectionFormat : BITFIELD_BIT(2);
1351             DWORD       RgbHistogramEnable : BITFIELD_BIT(3);
1352             DWORD       BlackPointOffsetGreenBottomMsb : BITFIELD_BIT(4);
1353             DWORD       BlackPointOffsetBlueMsb : BITFIELD_BIT(5);
1354             DWORD       BlackPointOffsetGreenTopMsb : BITFIELD_BIT(6);
1355             DWORD       BlackPointOffsetRedMsb : BITFIELD_BIT(7);
1356             DWORD       UvThresholdValue : BITFIELD_RANGE(8, 15);
1357             DWORD       YOutlierValue : BITFIELD_RANGE(16, 23);
1358             DWORD       YBrightValue : BITFIELD_RANGE(24, 31);
1359         };
1360         DWORD Value;
1361     } DW2;
1362 
1363     // DWORD 3
1364     union {
1365         struct {
1366             DWORD       BlackPointOffsetGreenTop : BITFIELD_RANGE(0, 15);
1367             DWORD       BlackPointOffsetRed : BITFIELD_RANGE(16, 31);
1368         };
1369         DWORD Value;
1370     } DW3;
1371 
1372     // DWORD 4
1373     union {
1374         struct {
1375             DWORD       BlackPointOffsetGreenBottom : BITFIELD_RANGE(0, 15);
1376             DWORD       BlackPointOffsetBlue : BITFIELD_RANGE(16, 31);
1377         };
1378         DWORD Value;
1379     } DW4;
1380 
1381     // DWORD 5
1382     union {
1383         struct {
1384             DWORD       WhiteBalanceGreenTopCorrection : BITFIELD_RANGE(0, 15);
1385             DWORD       WhiteBalanceRedCorrection : BITFIELD_RANGE(16, 31);
1386         };
1387         DWORD Value;
1388     } DW5;
1389 
1390     // DWORD 6
1391     union {
1392         struct {
1393             DWORD       WhiteBalanceGreenBottomCorrection : BITFIELD_RANGE(0, 15);
1394             DWORD       WhiteBalanceBlueCorrection : BITFIELD_RANGE(16, 31);
1395         };
1396         DWORD Value;
1397     } DW6;
1398 
1399 } VEBOX_CAPTURE_PIPE_STATE_G9, *PVEBOX_CAPTURE_PIPE_STATE_G9;
1400 
1401 
1402 
1403 
1404 typedef struct __CM_VEBOX_PARAM_G9
1405 {
1406     PVEBOX_DNDI_STATE_G9         pDndiState;
1407     unsigned char                padding1[4024];
1408     PVEBOX_IECP_STATE_G9         pIecpState;
1409     unsigned char                padding2[3732];
1410     PVEBOX_GAMUT_STATE_G75       pGamutState;
1411     unsigned char                padding3[3936];
1412     PVEBOX_VERTEX_TABLE_G75      pVertexTable;
1413     unsigned char                padding4[2048];
1414     PVEBOX_CAPTURE_PIPE_STATE_G9 pCapturePipe;
1415 }CM_VEBOX_PARAM_G9, PCM_VEBOX_PARAM_G9;
1416 
1417 #endif //__CM_RT_G9_H__
1418