xref: /aosp_15_r20/external/intel-media-driver/cmrtlib/agnostic/share/cm_rt_g8.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_g8.h
24 //! \brief     Contains Definitions for CM on Gen 8
25 //!
26 
27 #ifndef __CM_RT_G8_H__
28 #define __CM_RT_G8_H__
29 
30 #define BDW_L3_PLANE_DEFAULT    CM_L3_PLANE_DEFAULT
31 #define BDW_L3_PLANE_1          CM_L3_PLANE_1
32 #define BDW_L3_PLANE_2          CM_L3_PLANE_2
33 #define BDW_L3_PLANE_3          CM_L3_PLANE_3
34 #define BDW_L3_PLANE_4          CM_L3_PLANE_4
35 #define BDW_L3_PLANE_5          CM_L3_PLANE_5
36 #define BDW_L3_PLANE_6          CM_L3_PLANE_6
37 #define BDW_L3_PLANE_7          CM_L3_PLANE_7
38 #define BDW_L3_CONFIG_COUNT     8
39 
40 #define BDW_SLM_PLANE_DEFAULT = BDW_L3_PLANE_5
41 
42 static const L3ConfigRegisterValues BDW_L3_PLANE[BDW_L3_CONFIG_COUNT] =
43 {                                                 // SLM    URB   Rest     DC     RO     I/S    C    T      Sum ( BDW GT2; for GT1, half of the values; for GT3, double the values )
44     { 0, 0, 0, 0x60000060 },                      //{  0,   384,    384,     0,     0,    0,    0,    0,    768},
45     { 0, 0, 0, 0x00410060 },                      //{  0,   384,      0,   128,   256,    0,    0,    0,    768},
46     { 0, 0, 0, 0x00418040 },                      //{  0,   256,      0,   128,   384,    0,    0,    0,    768},
47     { 0, 0, 0, 0x00020040 },                      //{  0,   256,      0,     0,   512,    0,    0,    0,    768},
48     { 0, 0, 0, 0x80000040 },                      //{  0,   256,    512,     0,     0,    0,    0,    0,    768},
49     { 0, 0, 0, 0x60000021 },                      //{192,   128,    384,     0,     0,    0,    0,    0,    768},
50     { 0, 0, 0, 0x00410021 },                      //{192,   128,      0,   128,   256,    0,    0,    0,    768},
51     { 0, 0, 0, 0x00808021 }                       //{192,   128,      0,   256,   128,    0,    0,    0,    768}
52 };
53 
54 // Defined in vol2b "Media"
55 typedef struct _VEBOX_DNDI_STATE_G75
56 {
57     // DWORD 0
58     union
59     {
60         struct
61         {
62             DWORD       DWordLength                         : 12;
63             DWORD                                           : 4;
64             DWORD       InstructionSubOpcodeB               : 5;
65             DWORD       InstructionSubOpcodeA               : 3;
66             DWORD       InstructionOpcode                   : 3;
67             DWORD       InstructionPipeline                 : 2;
68             DWORD       CommandType                         : 3;
69         };
70         struct
71         {
72             DWORD       Value;
73         };
74     } DW0;
75 
76     // DWORD 1
77     union
78     {
79         struct
80         {
81             DWORD       DenoiseASDThreshold                 : 8; // U8
82             DWORD       DnmhDelta                           : 4; // UINT4
83             DWORD                                           : 4; // Reserved
84             DWORD       DnmhHistoryMax                      : 8; // U8
85             DWORD       DenoiseSTADThreshold                : 8; // U8
86         };
87         struct
88         {
89             DWORD       Value;
90         };
91     } DW1;
92 
93     // DWORD 2
94     union
95     {
96         struct
97         {
98             DWORD       SCMDenoiseThreshold                 : 8; // U8
99             DWORD       DenoiseMovingPixelThreshold         : 5; // U5
100             DWORD       STMMC2                              : 3; // U3
101             DWORD       LowTemporalDifferenceThreshold      : 6; // U6
102             DWORD                                           : 2; // Reserved
103             DWORD       TemporalDifferenceThreshold         : 6; // U6
104             DWORD                                           : 2; // Reserved
105         };
106         struct
107         {
108             DWORD       Value;
109         };
110     } DW2;
111 
112     // DWORD 3
113     union
114     {
115         struct
116         {
117             DWORD       BlockNoiseEstimateNoiseThreshold    : 8; // U8
118             DWORD       BneEdgeTh                           : 4; // UINT4
119             DWORD                                           : 2; // Reserved
120             DWORD       SmoothMvTh                          : 2; // U2
121             DWORD       SADTightTh                          : 4; // U4
122             DWORD       CATSlopeMinus1                      : 4; // U4
123             DWORD       GoodNeighborThreshold               : 6; // UINT6
124             DWORD                                           : 2; // Reserved
125         };
126         struct
127         {
128             DWORD       Value;
129         };
130     } DW3;
131 
132     // DWORD 4
133     union
134     {
135         struct
136         {
137             DWORD       MaximumSTMM                         : 8; // U8
138             DWORD       MultiplierforVECM                   : 6; // U6
139             DWORD                                           : 2;
140             DWORD       BlendingConstantForSmallSTMM        : 8; // U8
141             DWORD       BlendingConstantForLargeSTMM        : 7; // U7
142             DWORD       STMMBlendingConstantSelect          : 1; // U1
143         };
144         struct
145         {
146             DWORD       Value;
147         };
148     } DW4;
149 
150     // DWORD 5
151     union
152     {
153         struct
154         {
155             DWORD       SDIDelta                            : 8; // U8
156             DWORD       SDIThreshold                        : 8; // U8
157             DWORD       STMMOutputShift                     : 4; // U4
158             DWORD       STMMShiftUp                         : 2; // U2
159             DWORD       STMMShiftDown                       : 2; // U2
160             DWORD       MinimumSTMM                         : 8; // U8
161         };
162         struct
163         {
164             DWORD       Value;
165         };
166     } DW5;
167 
168     // DWORD 6
169     union
170     {
171         struct
172         {
173             DWORD       FMDTemporalDifferenceThreshold      : 8; // U8
174             DWORD       SDIFallbackMode2Constant            : 8; // U8
175             DWORD       SDIFallbackMode1T2Constant          : 8; // U8
176             DWORD       SDIFallbackMode1T1Constant          : 8; // U8
177         };
178         struct
179         {
180             DWORD       Value;
181         };
182     } DW6;
183 
184     // DWORD 7
185     union
186     {
187         struct
188         {
189             DWORD                                           : 3; // Reserved
190             DWORD       DNDITopFirst                        : 1; // Enable
191             DWORD                                           : 2; // Reserved
192             DWORD       ProgressiveDN                       : 1; // Enable
193             DWORD       MCDIEnable                          : 1;
194             DWORD       FMDTearThreshold                    : 6; // U6
195             DWORD       CATTh1                              : 2; // U2
196             DWORD       FMD2VerticalDifferenceThreshold     : 8; // U8
197             DWORD       FMD1VerticalDifferenceThreshold     : 8; // U8
198         };
199         struct
200         {
201             DWORD       Value;
202         };
203     } DW7;
204 
205     // DWORD 8
206     union
207     {
208         struct
209         {
210             DWORD       SADTHA                              : 4; // U4
211             DWORD       SADTHB                              : 4; // U4
212             DWORD       FMDFirstFieldCurrentFrame           : 2; // U2
213             DWORD       MCPixelConsistencyTh                : 6; // U6
214             DWORD       FMDSecondFieldPreviousFrame         : 2; // U2
215             DWORD                                           : 1; // Reserved
216             DWORD       NeighborPixelTh                     : 4; // U4
217             DWORD       DnmhHistoryInit                     : 6; // U6
218             DWORD                                           : 3; // Reserved
219         };
220         struct
221         {
222             DWORD       Value;
223         };
224     } DW8;
225 
226     // DWORD 9
227     union
228     {
229         struct
230         {
231             DWORD       ChromaLTDThreshold                  : 6; // U6
232             DWORD       ChromaTDTheshold                    : 6; // U6
233             DWORD       ChromaDenoiseEnable                 : 1; // Enable
234             DWORD                                           : 3; // Reserved
235             DWORD       ChromaDnSTADThreshold               : 8; // U8
236             DWORD                                           : 8; // Reserved
237         };
238         struct
239         {
240             DWORD       Value;
241         };
242     } DW9;
243 
244     // Padding for 32-byte alignment, VEBOX_DNDI_STATE_G75 is 10 DWORDs
245     DWORD dwPad[6];
246 } VEBOX_DNDI_STATE_G75, *PVEBOX_DNDI_STATE_G75;
247 
248 // Defined in vol2b "Media"
249 typedef struct _VEBOX_IECP_STATE_G75
250 {
251     // STD/STE state
252     // DWORD 0
253     union
254     {
255         struct
256         {
257             DWORD       STDEnable                       : 1;
258             DWORD       STEEnable                       : 1;
259             DWORD       OutputCtrl                      : 1;
260             DWORD                                       : 1;
261             DWORD       SatMax                          : 6;    // U6;
262             DWORD       HueMax                          : 6;    // U6;
263             DWORD       UMid                            : 8;    // U8;
264             DWORD       VMid                            : 8;    // U8;
265         };
266         struct
267         {
268             DWORD       Value;
269         };
270     } DW0;
271 
272     // DWORD 1
273     union
274     {
275         struct
276         {
277             DWORD       SinAlpha                        : 8;    // S0.7
278             DWORD                                       : 2;
279             DWORD       CosAlpha                        : 8;    // S0.7
280             DWORD       HSMargin                        : 3;    // U3
281             DWORD       DiamondDu                       : 7;    // S7
282             DWORD       DiamondMargin                   : 3;    // U3
283             DWORD                                       : 1;
284         };
285         struct
286         {
287             DWORD       Value;
288         };
289     } DW1;
290 
291     // DWORD 2
292     union
293     {
294         struct
295         {
296             DWORD       DiamondDv                       : 7;    // S7
297             DWORD       DiamondTh                       : 6;    // U6
298             DWORD       DiamondAlpha                    : 8;    // U2.6
299             DWORD                                       : 11;
300         };
301         struct
302         {
303             DWORD       Value;
304         };
305     } DW2;
306 
307     // DWORD 3
308     union
309     {
310         struct
311         {
312             DWORD                                       : 7;
313             DWORD       VYSTDEnable                     : 1;
314             DWORD       YPoint1                         : 8;    // U8
315             DWORD       YPoint2                         : 8;    // U8
316             DWORD       YPoint3                         : 8;    // U8
317         };
318         struct
319         {
320             DWORD       Value;
321         };
322     } DW3;
323 
324     // DWORD 4
325     union
326     {
327         struct
328         {
329             DWORD       YPoint4                         : 8;    // U8
330             DWORD       YSlope1                         : 5;    // U2.3
331             DWORD       YSlope2                         : 5;    // U2.3
332             DWORD                                       : 14;
333         };
334         struct
335         {
336             DWORD       Value;
337         };
338     } DW4;
339 
340     // DWORD 5
341     union
342     {
343         struct
344         {
345             DWORD       INVMarginVYL                    : 16;    // U0.16
346             DWORD       INVSkinTypesMargin              : 16;    // U0.16
347         };
348         struct
349         {
350             DWORD       Value;
351         };
352     } DW5;
353 
354     // DWORD 6
355     union
356     {
357         struct
358         {
359             DWORD       INVMarginVYU                    : 16;    // U0.16
360             DWORD       P0L                             : 8;     // U8
361             DWORD       P1L                             : 8;     // U8
362         };
363         struct
364         {
365             DWORD       Value;
366         };
367     } DW6;
368 
369     // DWORD 7
370     union
371     {
372         struct
373         {
374             DWORD       P2L                             : 8;     // U8
375             DWORD       P3L                             : 8;     // U8
376             DWORD       B0L                             : 8;     // U8
377             DWORD       B1L                             : 8;     // U8
378         };
379         struct
380         {
381             DWORD       Value;
382         };
383     } DW7;
384 
385     // DWORD 8
386     union
387     {
388         struct
389         {
390             DWORD       B2L                             : 8;     // U8
391             DWORD       B3L                             : 8;     // U8
392             DWORD       S0L                             : 11;    // S2.8
393             DWORD                                       : 5;
394         };
395         struct
396         {
397             DWORD       Value;
398         };
399     } DW8;
400 
401     // DWORD 9
402     union
403     {
404         struct
405         {
406             DWORD       S1L                             : 11;    // S2.8
407             DWORD       S2L                             : 11;    // S2.8
408             DWORD                                       : 10;
409         };
410         struct
411         {
412             DWORD       Value;
413         };
414     } DW9;
415 
416     // DWORD 10
417     union
418     {
419         struct
420         {
421             DWORD       S3L                             : 11;    // S2.8
422             DWORD       P0U                             : 8;     // U8
423             DWORD       P1U                             : 8;     // U8
424             DWORD                                       : 5;
425         };
426         struct
427         {
428             DWORD       Value;
429         };
430     } DW10;
431 
432     // DWORD 11
433     union
434     {
435         struct
436         {
437             DWORD       P2U                             : 8;     // U8
438             DWORD       P3U                             : 8;     // U8
439             DWORD       B0U                             : 8;     // U8
440             DWORD       B1U                             : 8;     // U8
441         };
442         struct
443         {
444             DWORD       Value;
445         };
446     } DW11;
447 
448     // DWORD 12
449     union
450     {
451         struct
452         {
453             DWORD       B2U                             : 8;     // U8
454             DWORD       B3U                             : 8;     // U8
455             DWORD       S0U                             : 11;    // S2.8
456             DWORD                                       : 5;
457         };
458         struct
459         {
460             DWORD       Value;
461         };
462     } DW12;
463 
464     // DWORD 13
465     union
466     {
467         struct
468         {
469             DWORD       S1U                             : 11;     // S2.8
470             DWORD       S2U                             : 11;     // S2.8
471             DWORD                                       : 10;
472         };
473         struct
474         {
475             DWORD       Value;
476         };
477     } DW13;
478 
479     // DWORD 14
480     union
481     {
482         struct
483         {
484             DWORD       S3U                             : 11;     // S2.8
485             DWORD       SkinTypesEnable                 : 1;
486             DWORD       SkinTypesThresh                 : 8;      // U8
487             DWORD       SkinTypesMargin                 : 8;      // U8
488             DWORD                                       : 4;
489         };
490         struct
491         {
492             DWORD       Value;
493         };
494     } DW14;
495 
496     // DWORD 15
497     union
498     {
499         struct
500         {
501             DWORD       SATP1                           : 7;     // S6
502             DWORD       SATP2                           : 7;     // S6
503             DWORD       SATP3                           : 7;     // S6
504             DWORD       SATB1                           : 10;    // S7.2
505             DWORD                                       : 1;
506         };
507         struct
508         {
509             DWORD       Value;
510         };
511     } DW15;
512 
513     // DWORD 16
514     union
515     {
516         struct
517         {
518             DWORD       SATB2                           : 10;     // S7.2
519             DWORD       SATB3                           : 10;     // S7.2
520             DWORD       SATS0                           : 11;     // U3.8
521             DWORD                                       : 1;
522         };
523         struct
524         {
525             DWORD       Value;
526         };
527     } DW16;
528 
529     // DWORD 17
530     union
531     {
532         struct
533         {
534             DWORD       SATS1                           : 11;     // U3.8
535             DWORD       SATS2                           : 11;     // U3.8
536             DWORD                                       : 10;
537         };
538         struct
539         {
540             DWORD       Value;
541         };
542     } DW17;
543 
544     // DWORD 18
545     union
546     {
547         struct
548         {
549             DWORD       SATS3                           : 11;    // U3.8
550             DWORD       HUEP1                           : 7;     // U3.8
551             DWORD       HUEP2                           : 7;     // U3.8
552             DWORD       HUEP3                           : 7;     // U3.8
553         };
554         struct
555         {
556             DWORD       Value;
557         };
558     } DW18;
559 
560     // DWORD 19
561     union
562     {
563         struct
564         {
565             DWORD       HUEB1                           : 10;    // S7.2
566             DWORD       HUEB2                           : 10;    // S7.2
567             DWORD       HUEB3                           : 10;    // S7.2
568             DWORD                                       : 2;
569         };
570         struct
571         {
572             DWORD       Value;
573         };
574     } DW19;
575 
576     // DWORD 20
577     union
578     {
579         struct
580         {
581             DWORD       HUES0                           : 11;    // U3.8
582             DWORD       HUES1                           : 11;    // U3.8
583             DWORD                                       : 10;
584         };
585         struct
586         {
587             DWORD       Value;
588         };
589     } DW20;
590 
591     // DWORD 21
592     union
593     {
594         struct
595         {
596             DWORD       HUES2                           : 11;    // U3.8
597             DWORD       HUES3                           : 11;    // U3.8
598             DWORD                                       : 10;
599         };
600         struct
601         {
602             DWORD       Value;
603         };
604     } DW21;
605 
606     // DWORD 22
607     union
608     {
609         struct
610         {
611             DWORD       SATP1DARK                      : 7;     // S6
612             DWORD       SATP2DARK                      : 7;     // S6
613             DWORD       SATP3DARK                      : 7;     // S6
614             DWORD       SATB1DARK                      : 10;    // S7.2
615             DWORD                                      : 1;
616         };
617         struct
618         {
619             DWORD       Value;
620         };
621     } DW22;
622 
623     // DWORD 23
624     union
625     {
626         struct
627         {
628             DWORD       SATB2DARK                      : 10;    // S7.2
629             DWORD       SATB3DARK                      : 10;    // S7.2
630             DWORD       SATS0DARK                      : 11;    // U3.8
631             DWORD                                       : 1;
632         };
633         struct
634         {
635             DWORD       Value;
636         };
637     } DW23;
638 
639     // DWORD 24
640     union
641     {
642         struct
643         {
644             DWORD       SATS1DARK                      : 11;    // U3.8
645             DWORD       SATS2DARK                      : 11;    // U3.8
646             DWORD                                      : 10;
647         };
648         struct
649         {
650             DWORD       Value;
651         };
652     } DW24;
653 
654     // DWORD 25
655     union
656     {
657         struct
658         {
659             DWORD       SATS3DARK                      : 11;   // U3.8
660             DWORD       HUEP1DARK                      : 7;    // S6
661             DWORD       HUEP2DARK                      : 7;    // S6
662             DWORD       HUEP3DARK                      : 7;    // S6
663         };
664         struct
665         {
666             DWORD       Value;
667         };
668     } DW25;
669 
670     // DWORD 26
671     union
672     {
673         struct
674         {
675             DWORD       HUEB1DARK                      : 10;    // S7.2
676             DWORD       HUEB2DARK                      : 10;    // S7.2
677             DWORD       HUEB3DARK                      : 10;    // S7.2
678             DWORD                                      : 2;
679         };
680         struct
681         {
682             DWORD       Value;
683         };
684     } DW26;
685 
686     // DWORD 27
687     union
688     {
689         struct
690         {
691             DWORD       HUES0DARK                      : 11;    // U3.8
692             DWORD       HUES1DARK                      : 11;    // U3.8
693             DWORD                                      : 10;
694         };
695         struct
696         {
697             DWORD       Value;
698         };
699     } DW27;
700 
701     // DWORD 28
702     union
703     {
704         struct
705         {
706             DWORD       HUES2DARK                      : 11;    // U3.8
707             DWORD       HUES3DARK                      : 11;    // U3.8
708             DWORD                                      : 10;
709         };
710         struct
711         {
712             DWORD       Value;
713         };
714     } DW28;
715 
716     // DWORD 29
717     union
718     {
719         struct
720         {
721             DWORD       ACEEnable                       : 1;
722             DWORD       FullImageHistogram              : 1;
723             DWORD       SkinThreshold                   : 5;    // U5
724             DWORD                                       : 25;
725         };
726         struct
727         {
728             DWORD       Value;
729         };
730     } DW29;
731 
732     // DWORD 30
733     union
734     {
735         struct
736         {
737             DWORD       Ymin                            : 8;
738             DWORD       Y1                              : 8;
739             DWORD       Y2                              : 8;
740             DWORD       Y3                              : 8;
741         };
742         struct
743         {
744             DWORD       Value;
745         };
746     } DW30;
747 
748     // DWORD 31
749     union
750     {
751         struct
752         {
753             DWORD       Y4                              : 8;
754             DWORD       Y5                              : 8;
755             DWORD       Y6                              : 8;
756             DWORD       Y7                              : 8;
757         };
758         struct
759         {
760             DWORD       Value;
761         };
762     } DW31;
763 
764     // DWORD 32
765     union
766     {
767         struct
768         {
769             DWORD       Y8                              : 8;
770             DWORD       Y9                              : 8;
771             DWORD       Y10                             : 8;
772             DWORD       Ymax                            : 8;
773         };
774         struct
775         {
776             DWORD       Value;
777         };
778     } DW32;
779 
780     // DWORD 33
781     union
782     {
783         struct
784         {
785             DWORD       B1                              : 8;  // U8
786             DWORD       B2                              : 8;  // U8
787             DWORD       B3                              : 8;  // U8
788             DWORD       B4                              : 8;  // U8
789         };
790         struct
791         {
792             DWORD       Value;
793         };
794     } DW33;
795 
796     // DWORD 34
797     union
798     {
799         struct
800         {
801             DWORD       B5                              : 8;  // U8
802             DWORD       B6                              : 8;  // U8
803             DWORD       B7                              : 8;  // U8
804             DWORD       B8                              : 8;  // U8
805         };
806         struct
807         {
808             DWORD       Value;
809         };
810     } DW34;
811 
812     // DWORD 35
813     union
814     {
815         struct
816         {
817             DWORD       B9                              : 8;   // U8
818             DWORD       B10                             : 8;   // U8
819             DWORD                                       : 16;
820         };
821         struct
822         {
823             DWORD       Value;
824         };
825     } DW35;
826 
827     // DWORD 36
828     union
829     {
830         struct
831         {
832             DWORD       S0                              : 11;   // U11
833             DWORD                                       : 5;
834             DWORD       S1                              : 11;   // U11
835             DWORD                                       : 5;
836         };
837         struct
838         {
839             DWORD       Value;
840         };
841     } DW36;
842 
843     // DWORD 37
844     union
845     {
846         struct
847         {
848             DWORD       S2                              : 11;   // U11
849             DWORD                                       : 5;
850             DWORD       S3                              : 11;   // U11
851             DWORD                                       : 5;
852         };
853         struct
854         {
855             DWORD       Value;
856         };
857     } DW37;
858 
859     // DWORD 38
860     union
861     {
862         struct
863         {
864             DWORD       S4                              : 11;   // U11
865             DWORD                                       : 5;
866             DWORD       S5                              : 11;   // U11
867             DWORD                                       : 5;
868         };
869         struct
870         {
871             DWORD       Value;
872         };
873     } DW38;
874 
875     // DWORD 39
876     union
877     {
878         struct
879         {
880             DWORD       S6                              : 11;   // U11
881             DWORD                                       : 5;
882             DWORD       S7                              : 11;   // U11
883             DWORD                                       : 5;
884         };
885         struct
886         {
887             DWORD       Value;
888         };
889     } DW39;
890 
891     // DWORD 40
892     union
893     {
894         struct
895         {
896             DWORD       S8                              : 11;   // U11
897             DWORD                                       : 5;
898             DWORD       S9                              : 11;   // U11
899             DWORD                                       : 5;
900         };
901         struct
902         {
903             DWORD       Value;
904         };
905     } DW40;
906 
907     // DWORD 41
908     union
909     {
910         struct
911         {
912             DWORD       S10                             : 11;   // U11
913             DWORD                                       : 21;
914         };
915         struct
916         {
917             DWORD       Value;
918         };
919     } DW41;
920 
921     // TCC State
922     // DWORD 42
923     union
924     {
925         struct
926         {
927             DWORD                                       : 7;
928             DWORD       TCCEnable                       : 1;
929             DWORD       SatFactor1                      : 8;    // U8
930             DWORD       SatFactor2                      : 8;    // U8
931             DWORD       SatFactor3                      : 8;    // U8
932         };
933         struct
934         {
935             DWORD       Value;
936         };
937     } DW42;
938 
939     // DWORD 43
940     union
941     {
942         struct
943         {
944             DWORD                                       : 8;
945             DWORD       SatFactor4                      : 8;    // U8
946             DWORD       SatFactor5                      : 8;    // U8
947             DWORD       SatFactor6                      : 8;    // U8
948         };
949         struct
950         {
951             DWORD       Value;
952         };
953     } DW43;
954 
955     // DWORD 44
956     union
957     {
958         struct
959         {
960             DWORD       BaseColor1                      : 10;    // U10
961             DWORD       BaseColor2                      : 10;    // U10
962             DWORD       BaseColor3                      : 10;    // U10
963             DWORD                                       : 2;
964         };
965         struct
966         {
967             DWORD       Value;
968         };
969     } DW44;
970 
971     // DWORD 45
972     union
973     {
974         struct
975         {
976             DWORD       BaseColor4                      : 10;    // U10
977             DWORD       BaseColor5                      : 10;    // U10
978             DWORD       BaseColor6                      : 10;    // U10
979             DWORD                                       : 2;
980         };
981         struct
982         {
983             DWORD       Value;
984         };
985     } DW45;
986 
987     // DWORD 46
988     union
989     {
990         struct
991         {
992             DWORD       ColorTransitSlope12              : 16;    // U16
993             DWORD       ColorTransitSlope23              : 16;    // U16
994         };
995         struct
996         {
997             DWORD       Value;
998         };
999     } DW46;
1000 
1001     // DWORD 47
1002     union
1003     {
1004         struct
1005         {
1006             DWORD       ColorTransitSlope34              : 16;    // U16
1007             DWORD       ColorTransitSlope45              : 16;    // U16
1008         };
1009         struct
1010         {
1011             DWORD       Value;
1012         };
1013     } DW47;
1014 
1015     // DWORD 48
1016     union
1017     {
1018         struct
1019         {
1020             DWORD       ColorTransitSlope56              : 16;    // U16
1021             DWORD       ColorTransitSlope61              : 16;    // U16
1022         };
1023         struct
1024         {
1025             DWORD       Value;
1026         };
1027     } DW48;
1028 
1029     // DWORD 49
1030     union
1031     {
1032         struct
1033         {
1034             DWORD                                       : 2;
1035             DWORD       ColorBias1                      : 10;    // U10
1036             DWORD       ColorBias2                      : 10;    // U10
1037             DWORD       ColorBias3                      : 10;    // U10
1038         };
1039         struct
1040         {
1041             DWORD       Value;
1042         };
1043     } DW49;
1044 
1045     // DWORD 50
1046     union
1047     {
1048         struct
1049         {
1050             DWORD                                       : 2;
1051             DWORD       ColorBias4                      : 10;    // U10
1052             DWORD       ColorBias5                      : 10;    // U10
1053             DWORD       ColorBias6                      : 10;    // U10
1054         };
1055         struct
1056         {
1057             DWORD       Value;
1058         };
1059     } DW50;
1060 
1061     // DWORD 51
1062     union
1063     {
1064         struct
1065         {
1066             DWORD       STESlopeBits                    : 3;    // U3
1067             DWORD                                       : 5;
1068             DWORD       STEThreshold                    : 5;    // U5
1069             DWORD                                       : 3;
1070             DWORD       UVThresholdBits                 : 3;    // U5
1071             DWORD                                       : 5;
1072             DWORD       UVThreshold                     : 7;    // U7
1073             DWORD                                       : 1;
1074         };
1075         struct
1076         {
1077             DWORD       Value;
1078         };
1079     } DW51;
1080 
1081     // DWORD 52
1082     union
1083     {
1084         struct
1085         {
1086             DWORD       UVMaxColor                      : 9;    // U9
1087             DWORD                                       : 7;
1088             DWORD       InvUVMaxColor                   : 16;   // U16
1089         };
1090         struct
1091         {
1092             DWORD       Value;
1093         };
1094     } DW52;
1095 
1096     // ProcAmp
1097     // DWORD 53
1098     union
1099     {
1100         struct
1101         {
1102             DWORD       ProcAmpEnable                   : 1;
1103             DWORD       Brightness                      : 12;    // S7.4
1104             DWORD                                       : 4;
1105             DWORD       Contrast                        : 11;    // U7.4
1106             DWORD                                       : 4;
1107         };
1108         struct
1109         {
1110             DWORD       Value;
1111         };
1112     } DW53;
1113 
1114     // DWORD 54
1115     union
1116     {
1117         struct
1118         {
1119             DWORD       SINCS                           : 16;    // S7.8
1120             DWORD       COSCS                           : 16;    // S7.8
1121         };
1122         struct
1123         {
1124             DWORD       Value;
1125         };
1126     } DW54;
1127 
1128     // CSC State
1129     // DWORD 55
1130     union
1131     {
1132         struct
1133         {
1134             DWORD       TransformEnable                 : 1;
1135             DWORD       YUVChannelSwap                  : 1;
1136             DWORD                                       : 1;
1137             DWORD       C0                              : 13;  // S2.10
1138             DWORD       C1                              : 13;  // S2.10
1139             DWORD                                       : 3;
1140         };
1141         struct
1142         {
1143             DWORD       Value;
1144         };
1145     } DW55;
1146 
1147     // DWORD 56
1148     union
1149     {
1150         struct
1151         {
1152             DWORD       C2                              : 13;  // S2.10
1153             DWORD       C3                              : 13;  // S2.10
1154             DWORD                                       : 6;
1155         };
1156         struct
1157         {
1158             DWORD       Value;
1159         };
1160     } DW56;
1161 
1162     // DWORD 57
1163     union
1164     {
1165         struct
1166         {
1167             DWORD       C4                              : 13;  // S2.10
1168             DWORD       C5                              : 13;  // S2.10
1169             DWORD                                       : 6;
1170         };
1171         struct
1172         {
1173             DWORD       Value;
1174         };
1175     } DW57;
1176 
1177     // DWORD 58
1178     union
1179     {
1180         struct
1181         {
1182             DWORD       C6                              : 13;  // S2.10
1183             DWORD       C7                              : 13;  // S2.10
1184             DWORD                                       : 6;
1185         };
1186         struct
1187         {
1188             DWORD       Value;
1189         };
1190     } DW58;
1191 
1192     // DWORD 59
1193     union
1194     {
1195         struct
1196         {
1197             DWORD       C8                              : 13;   // S2.10
1198             DWORD                                       : 19;
1199         };
1200         struct
1201         {
1202             DWORD       Value;
1203         };
1204     } DW59;
1205 
1206     // DWORD 60
1207     union
1208     {
1209         struct
1210         {
1211             DWORD       OffsetIn1                       : 11;   // S8.2
1212             DWORD       OffsetOut1                      : 11;   // S8.2
1213             DWORD                                       : 10;
1214         };
1215         struct
1216         {
1217             DWORD       Value;
1218         };
1219     } DW60;
1220 
1221     // DWORD 61
1222     union
1223     {
1224         struct
1225         {
1226             DWORD       OffsetIn2                       : 11;   // S8.2
1227             DWORD       OffsetOut2                      : 11;   // S8.2
1228             DWORD                                       : 10;
1229         };
1230         struct
1231         {
1232             DWORD       Value;
1233         };
1234     } DW61;
1235 
1236     // DWORD 62
1237     union
1238     {
1239         struct
1240         {
1241             DWORD       OffsetIn3                       : 11;  // S8.2
1242             DWORD       OffsetOut3                      : 11;  // S8.2
1243             DWORD                                       : 10;
1244         };
1245         struct
1246         {
1247             DWORD       Value;
1248         };
1249     } DW62;
1250 
1251     // DWORD 63
1252     union
1253     {
1254         struct
1255         {
1256             DWORD       ColorPipeAlpha                  : 12;  // U12
1257             DWORD                                       : 4;
1258             DWORD       AlphaFromStateSelect            : 1;
1259             DWORD                                       : 15;
1260         };
1261         struct
1262         {
1263             DWORD       Value;
1264         };
1265     } DW63;
1266 
1267     // Area of Interest
1268     // DWORD 64
1269     union
1270     {
1271         struct
1272         {
1273             DWORD       AOIMinX                         : 16;  // U16
1274             DWORD       AOIMaxX                         : 16;  // U16
1275     };
1276         struct
1277         {
1278             DWORD       Value;
1279         };
1280     } DW64;
1281 
1282     // DWORD 65
1283     union
1284     {
1285         struct
1286         {
1287             DWORD       AOIMinY                         : 16;  // U16
1288             DWORD       AOIMaxY                         : 16;  // U16
1289         };
1290         struct
1291         {
1292             DWORD       Value;
1293         };
1294     } DW65;
1295 
1296     // Padding for 32-byte alignment, VEBOX_IECP_STATE_G75 is 66 DWORDs
1297     DWORD dwPad[6];
1298 } VEBOX_IECP_STATE_G75, *PVEBOX_IECP_STATE_G75;
1299 
1300 // Defined in vol2b "Media"
1301 typedef struct _VEBOX_GAMUT_STATE_G75
1302 {
1303     // GEC State
1304     // DWORD 0
1305     union
1306     {
1307         struct
1308         {
1309             DWORD       WeightingFactorForGainFactor    : 10;
1310             DWORD                                       : 5;
1311             DWORD       GlobalModeEnable                : 1;
1312             DWORD       GainFactorR                     : 9;
1313             DWORD                                       : 7;
1314         };
1315         struct
1316         {
1317             DWORD       Value;
1318         };
1319     } DW0;
1320 
1321     // DWORD 1
1322     union
1323     {
1324         struct
1325         {
1326             DWORD       GainFactorB                     : 7;
1327             DWORD                                       : 1;
1328             DWORD       GainFactorG                     : 7;
1329             DWORD                                       : 1;
1330             DWORD       AccurateColorComponentScaling   : 10;
1331             DWORD                                       : 6;
1332         };
1333         struct
1334         {
1335             DWORD       Value;
1336         };
1337     } DW1;
1338 
1339     // DWORD 2
1340     union
1341     {
1342         struct
1343         {
1344             DWORD       RedOffset                       : 8;
1345             DWORD       AccurateColorComponentOffset    : 8;
1346             DWORD       RedScaling                      : 10;
1347             DWORD                                           : 6;
1348         };
1349         struct
1350         {
1351             DWORD       Value;
1352         };
1353     } DW2;
1354 
1355     // 3x3 Transform Coefficient
1356     // DWORD 3
1357     union
1358     {
1359         struct
1360         {
1361             DWORD       C0Coeff                         : 15;
1362             DWORD                                       : 1;
1363             DWORD       C1Coeff                         : 15;
1364             DWORD                                       : 1;
1365         };
1366         struct
1367         {
1368             DWORD       Value;
1369         };
1370     } DW3;
1371 
1372     // DWORD 4
1373     union
1374     {
1375         struct
1376         {
1377             DWORD       C2Coeff                         : 15;
1378             DWORD                                       : 1;
1379             DWORD       C3Coeff                         : 15;
1380             DWORD                                       : 1;
1381         };
1382         struct
1383         {
1384             DWORD       Value;
1385         };
1386     } DW4;
1387 
1388     // DWORD 5
1389     union
1390     {
1391         struct
1392         {
1393             DWORD       C4Coeff                         : 15;
1394             DWORD                                       : 1;
1395             DWORD       C5Coeff                         : 15;
1396             DWORD                                       : 1;
1397         };
1398         struct
1399         {
1400             DWORD       Value;
1401         };
1402     } DW5;
1403 
1404     // DWORD 6
1405     union
1406     {
1407         struct
1408         {
1409             DWORD       C6Coeff                         : 15;
1410             DWORD                                       : 1;
1411             DWORD       C7Coeff                         : 15;
1412             DWORD                                       : 1;
1413         };
1414         struct
1415         {
1416             DWORD       Value;
1417         };
1418     } DW6;
1419 
1420     // DWORD 7
1421     union
1422     {
1423         struct
1424         {
1425             DWORD       C8Coeff                         : 15;
1426             DWORD                                       : 17;
1427         };
1428         struct
1429         {
1430             DWORD       Value;
1431         };
1432     } DW7;
1433 
1434     // PWL Values for Gamma Correction
1435     // DWORD 8
1436     union
1437     {
1438         struct
1439         {
1440             DWORD       PWLGammaPoint1                  : 8;
1441             DWORD       PWLGammaPoint2                  : 8;
1442             DWORD       PWLGammaPoint3                  : 8;
1443             DWORD       PWLGammaPoint4                  : 8;
1444         };
1445         struct
1446         {
1447             DWORD       Value;
1448         };
1449     } DW8;
1450 
1451     // DWORD 9
1452     union
1453     {
1454         struct
1455         {
1456             DWORD       PWLGammaPoint5                  : 8;
1457             DWORD       PWLGammaPoint6                  : 8;
1458             DWORD       PWLGammaPoint7                  : 8;
1459             DWORD       PWLGammaPoint8                  : 8;
1460         };
1461         struct
1462         {
1463             DWORD       Value;
1464         };
1465     } DW9;
1466 
1467     // DWORD 10
1468     union
1469     {
1470         struct
1471         {
1472             DWORD       PWLGammaPoint9                  : 8;
1473             DWORD       PWLGammaPoint10                 : 8;
1474             DWORD       PWLGammaPoint11                 : 8;
1475             DWORD                                       : 8;
1476         };
1477         struct
1478         {
1479             DWORD       Value;
1480         };
1481     } DW10;
1482 
1483     // DWORD 11
1484     union
1485     {
1486         struct
1487         {
1488             DWORD       PWLGammaBias1                   : 8;
1489             DWORD       PWLGammaBias2                   : 8;
1490             DWORD       PWLGammaBias3                   : 8;
1491             DWORD       PWLGammaBias4                   : 8;
1492         };
1493         struct
1494         {
1495             DWORD       Value;
1496         };
1497     } DW11;
1498 
1499 
1500     // DWORD 12
1501     union
1502     {
1503         struct
1504         {
1505             DWORD       PWLGammaBias5                   : 8;
1506             DWORD       PWLGammaBias6                   : 8;
1507             DWORD       PWLGammaBias7                   : 8;
1508             DWORD       PWLGammaBias8                   : 8;
1509         };
1510         struct
1511         {
1512             DWORD       Value;
1513         };
1514     } DW12;
1515 
1516     // DWORD 13
1517     union
1518     {
1519         struct
1520         {
1521             DWORD       PWLGammaBias9                   : 8;
1522             DWORD       PWLGammaBias10                  : 8;
1523             DWORD       PWLGammaBias11                  : 8;
1524             DWORD                                       : 8;
1525         };
1526         struct
1527         {
1528             DWORD       Value;
1529         };
1530     } DW13;
1531 
1532     // DWORD 14
1533     union
1534     {
1535         struct
1536         {
1537             DWORD       PWLGammaSlope0                  : 12;
1538             DWORD                                       : 4;
1539             DWORD       PWLGammaSlope1                  : 12;
1540             DWORD                                       : 4;
1541         };
1542         struct
1543         {
1544             DWORD       Value;
1545         };
1546     } DW14;
1547 
1548     // DWORD 15
1549     union
1550     {
1551         struct
1552         {
1553             DWORD       PWLGammaSlope2                  : 12;
1554             DWORD                                       : 4;
1555             DWORD       PWLGammaSlope3                  : 12;
1556             DWORD                                       : 4;
1557         };
1558         struct
1559         {
1560             DWORD       Value;
1561         };
1562     } DW15;
1563 
1564     // DWORD 16
1565     union
1566     {
1567         struct
1568         {
1569             DWORD       PWLGammaSlope4                  : 12;
1570             DWORD                                       : 4;
1571             DWORD       PWLGammaSlope5                  : 12;
1572             DWORD                                       : 4;
1573         };
1574         struct
1575         {
1576             DWORD       Value;
1577         };
1578     } DW16;
1579 
1580     // DWORD 17
1581     union
1582     {
1583         struct
1584         {
1585             DWORD       PWLGammaSlope6                  : 12;
1586             DWORD                                       : 4;
1587             DWORD       PWLGammaSlope7                  : 12;
1588             DWORD                                       : 4;
1589         };
1590         struct
1591         {
1592             DWORD       Value;
1593         };
1594     } DW17;
1595 
1596     // DWORD 18
1597     union
1598     {
1599         struct
1600         {
1601             DWORD       PWLGammaSlope8                  : 12;
1602             DWORD                                       : 4;
1603             DWORD       PWLGammaSlope9                  : 12;
1604             DWORD                                       : 4;
1605         };
1606         struct
1607         {
1608             DWORD       Value;
1609         };
1610     } DW18;
1611 
1612     // DWORD 19
1613     union
1614     {
1615         struct
1616         {
1617             DWORD       PWLGammaSlope10                 : 12;
1618             DWORD                                       : 4;
1619             DWORD       PWLGammaSlope11                 : 12;
1620             DWORD                                       : 4;
1621         };
1622         struct
1623         {
1624             DWORD       Value;
1625         };
1626     } DW19;
1627 
1628     // PWL Values for Inverse Gamma Correction
1629     // DWORD 20
1630     union
1631     {
1632         struct
1633         {
1634             DWORD       PWLInvGammaPoint1               : 8;
1635             DWORD       PWLInvGammaPoint2               : 8;
1636             DWORD       PWLInvGammaPoint3               : 8;
1637             DWORD       PWLInvGammaPoint4               : 8;
1638         };
1639         struct
1640         {
1641             DWORD       Value;
1642         };
1643     } DW20;
1644 
1645     // DWORD 21
1646     union
1647     {
1648         struct
1649         {
1650             DWORD       PWLInvGammaPoint5               : 8;
1651             DWORD       PWLInvGammaPoint6               : 8;
1652             DWORD       PWLInvGammaPoint7               : 8;
1653             DWORD       PWLInvGammaPoint8               : 8;
1654         };
1655         struct
1656         {
1657             DWORD       Value;
1658         };
1659     } DW21;
1660 
1661     // DWORD 22
1662     union
1663     {
1664         struct
1665         {
1666             DWORD       PWLInvGammaPoint9               : 8;
1667             DWORD       PWLInvGammaPoint10              : 8;
1668             DWORD       PWLInvGammaPoint11              : 8;
1669             DWORD                                       : 8;
1670         };
1671         struct
1672         {
1673             DWORD       Value;
1674         };
1675     } DW22;
1676 
1677     // DWORD 23
1678     union
1679     {
1680         struct
1681         {
1682             DWORD       PWLInvGammaBias1                : 8;
1683             DWORD       PWLInvGammaBias2                : 8;
1684             DWORD       PWLInvGammaBias3                : 8;
1685             DWORD       PWLInvGammaBias4                : 8;
1686         };
1687         struct
1688         {
1689             DWORD       Value;
1690         };
1691     } DW23;
1692 
1693     // DWORD 24
1694     union
1695     {
1696         struct
1697         {
1698             DWORD       PWLInvGammaBias5                : 8;
1699             DWORD       PWLInvGammaBias6                : 8;
1700             DWORD       PWLInvGammaBias7                : 8;
1701             DWORD       PWLInvGammaBias8                : 8;
1702         };
1703         struct
1704         {
1705             DWORD       Value;
1706         };
1707     } DW24;
1708 
1709     // DWORD 25
1710     union
1711     {
1712         struct
1713         {
1714             DWORD       PWLInvGammaBias9                : 8;
1715             DWORD       PWLInvGammaBias10               : 8;
1716             DWORD       PWLInvGammaBias11               : 8;
1717             DWORD                                       : 8;
1718         };
1719         struct
1720         {
1721             DWORD       Value;
1722         };
1723     } DW25;
1724 
1725     // DWORD 26
1726     union
1727     {
1728         struct
1729         {
1730             DWORD       PWLInvGammaSlope0               : 12;
1731             DWORD                                       : 4;
1732             DWORD       PWLInvGammaSlope1               : 12;
1733             DWORD                                       : 4;
1734         };
1735         struct
1736         {
1737             DWORD       Value;
1738         };
1739     } DW26;
1740 
1741     // DWORD 27
1742     union
1743     {
1744         struct
1745         {
1746             DWORD       PWLInvGammaSlope2               : 12;
1747             DWORD                                       : 4;
1748             DWORD       PWLInvGammaSlope3               : 12;
1749             DWORD                                       : 4;
1750         };
1751         struct
1752         {
1753             DWORD       Value;
1754         };
1755     } DW27;
1756 
1757     // DWORD 28
1758     union
1759     {
1760         struct
1761         {
1762             DWORD       PWLInvGammaSlope4               : 12;
1763             DWORD                                       : 4;
1764             DWORD       PWLInvGammaSlope5               : 12;
1765             DWORD                                       : 4;
1766         };
1767         struct
1768         {
1769             DWORD       Value;
1770         };
1771     } DW28;
1772 
1773     // DWORD 29
1774     union
1775     {
1776         struct
1777         {
1778             DWORD       PWLInvGammaSlope6               : 12;
1779             DWORD                                       : 4;
1780             DWORD       PWLInvGammaSlope7               : 12;
1781             DWORD                                       : 4;
1782         };
1783         struct
1784         {
1785             DWORD       Value;
1786         };
1787     } DW29;
1788 
1789     // DWORD 30
1790     union
1791     {
1792         struct
1793         {
1794             DWORD       PWLInvGammaSlope8               : 12;
1795             DWORD                                       : 4;
1796             DWORD       PWLInvGammaSlope9               : 12;
1797             DWORD                                       : 4;
1798         };
1799         struct
1800         {
1801             DWORD       Value;
1802         };
1803     } DW30;
1804 
1805     // DWORD 31
1806     union
1807     {
1808         struct
1809         {
1810             DWORD       PWLInvGammaSlope10              : 12;
1811             DWORD                                       : 4;
1812             DWORD       PWLInvGammaSlope11              : 12;
1813             DWORD                                       : 4;
1814         };
1815         struct
1816         {
1817             DWORD       Value;
1818         };
1819     } DW31;
1820 
1821     // Offset value for R, G, B for the Transform
1822     // DWORD 32
1823     union
1824     {
1825         struct
1826         {
1827             DWORD       OffsetInR                       : 15;
1828             DWORD                                       : 1;
1829             DWORD       OffsetInG                       : 15;
1830             DWORD                                       : 1;
1831         };
1832         struct
1833         {
1834             DWORD       Value;
1835         };
1836     } DW32;
1837 
1838     // DWORD 33
1839     union
1840     {
1841         struct
1842         {
1843             DWORD       OffsetInB                       : 15;
1844             DWORD                                       : 1;
1845             DWORD       OffsetOutB                      : 15;
1846             DWORD                                       : 1;
1847         };
1848         struct
1849         {
1850             DWORD       Value;
1851         };
1852     } DW33;
1853 
1854     // DWORD 34
1855     union
1856     {
1857         struct
1858         {
1859             DWORD       OffsetOutR                      : 15;
1860             DWORD                                       : 1;
1861             DWORD       OffsetOutG                      : 15;
1862             DWORD                                       : 1;
1863         };
1864         struct
1865         {
1866             DWORD       Value;
1867         };
1868     } DW34;
1869 
1870     // GCC State
1871     // DWORD 35
1872     union
1873     {
1874         struct
1875         {
1876             DWORD       OuterTriangleMappingLengthBelow : 10;  // U10
1877             DWORD       OuterTriangleMappingLength      : 10;  // U10
1878             DWORD       InnerTriangleMappingLength      : 10;  // U10
1879             DWORD       FullRangeMappingEnable          : 1;
1880             DWORD                                       : 1;
1881         };
1882         struct
1883         {
1884             DWORD       Value;
1885         };
1886     } DW35;
1887 
1888     // DWORD 36
1889     union
1890     {
1891         struct
1892         {
1893             DWORD       InnerTriangleMappingLengthBelow : 10;   // U10
1894             DWORD                                       : 18;
1895             DWORD       CompressionLineShift            : 3;
1896             DWORD       xvYccDecEncEnable               : 1;
1897         };
1898         struct
1899         {
1900             DWORD       Value;
1901         };
1902     } DW36;
1903 
1904     // DWORD 37
1905     union
1906     {
1907         struct
1908         {
1909             DWORD       CpiOverride                     : 1;
1910             DWORD                                       : 10;
1911             DWORD       BasicModeScalingFactor          : 14;
1912             DWORD                                       : 4;
1913             DWORD       LumaChromaOnlyCorrection        : 1;
1914             DWORD       GCCBasicModeSelection           : 2;
1915         };
1916         struct
1917         {
1918             DWORD       Value;
1919         };
1920     } DW37;
1921 
1922     // Padding for 32-byte alignment, VEBOX_GAMUT_STATE_G75 is 38 DWORDs
1923     DWORD dwPad[2];
1924 } VEBOX_GAMUT_STATE_G75, *PVEBOX_GAMUT_STATE_G75;
1925 
1926 #define CM_NUM_VERTEX_TABLE_ENTRIES_G75        512
1927 // Defined in vol2b "Media"
1928 typedef struct _VEBOX_VERTEX_TABLE_ENTRY_G75
1929 {
1930     union
1931     {
1932         struct
1933         {
1934             DWORD       VertexTableEntryCv                  : 12;
1935             DWORD                                           : 4;
1936             DWORD       VertexTableEntryLv                  : 12;
1937             DWORD                                           : 4;
1938         };
1939         struct
1940         {
1941             DWORD       Value;
1942         };
1943     };
1944 } VEBOX_VERTEX_TABLE_ENTRY_G75, *PVEBOX_VERTEX_TABLE_ENTRY_G75;
1945 
1946 // Defined in vol2b "Media"
1947 typedef struct _VEBOX_VERTEX_TABLE_G75
1948 {
1949     VEBOX_VERTEX_TABLE_ENTRY_G75 VertexTableEntry[CM_NUM_VERTEX_TABLE_ENTRIES_G75];
1950 } VEBOX_VERTEX_TABLE_G75, *PVEBOX_VERTEX_TABLE_G75;
1951 
1952 
1953 
1954 typedef struct _VEBOX_DNDI_STATE_G8
1955 {
1956     // DWORD 0
1957     union
1958     {
1959         struct
1960         {
1961             DWORD       DenoiseASDThreshold : 8; // U8
1962             DWORD       DnmhDelta : 4; // UINT4
1963         DWORD: 4; // Reserved
1964             DWORD       DnmhHistoryMax : 8; // U8
1965             DWORD       DenoiseSTADThreshold : 8; // U8
1966         };
1967         struct
1968         {
1969             DWORD       Value;
1970         };
1971     } DW0;
1972 
1973     // DWORD 1
1974     union
1975     {
1976         struct
1977         {
1978             DWORD       SCMDenoiseThreshold : 8; // U8
1979             DWORD       DenoiseMovingPixelThreshold : 5; // U5
1980             DWORD       STMMC2 : 3; // U3
1981             DWORD       LowTemporalDifferenceThreshold : 6; // U6
1982         DWORD: 2; // Reserved
1983             DWORD       TemporalDifferenceThreshold : 6; // U6
1984         DWORD: 2; // Reserved
1985         };
1986         struct
1987         {
1988             DWORD       Value;
1989         };
1990     } DW1;
1991 
1992     // DWORD 2
1993     union
1994     {
1995         struct
1996         {
1997             DWORD       BlockNoiseEstimateNoiseThreshold : 8; // U8
1998             DWORD       BneEdgeTh : 4; // UINT4
1999         DWORD: 2; // Reserved
2000             DWORD       SmoothMvTh : 2; // U2
2001             DWORD       SADTightTh : 4; // U4
2002             DWORD       CATSlopeMinus1 : 4; // U4
2003             DWORD       GoodNeighborThreshold : 6; // UINT6
2004         DWORD: 2; // Reserved
2005         };
2006         struct
2007         {
2008             DWORD       Value;
2009         };
2010     } DW2;
2011 
2012     // DWORD 3
2013     union
2014     {
2015         struct
2016         {
2017             DWORD       MaximumSTMM : 8; // U8
2018             DWORD       MultiplierforVECM : 6; // U6
2019         DWORD: 2;
2020             DWORD       BlendingConstantForSmallSTMM : 8; // U8
2021             DWORD       BlendingConstantForLargeSTMM : 7; // U7
2022             DWORD       STMMBlendingConstantSelect : 1; // U1
2023         };
2024         struct
2025         {
2026             DWORD       Value;
2027         };
2028     } DW3;
2029 
2030     // DWORD 4
2031     union
2032     {
2033         struct
2034         {
2035             DWORD       SDIDelta : 8; // U8
2036             DWORD       SDIThreshold : 8; // U8
2037             DWORD       STMMOutputShift : 4; // U4
2038             DWORD       STMMShiftUp : 2; // U2
2039             DWORD       STMMShiftDown : 2; // U2
2040             DWORD       MinimumSTMM : 8; // U8
2041         };
2042         struct
2043         {
2044             DWORD       Value;
2045         };
2046     } DW4;
2047 
2048     // DWORD 5
2049     union
2050     {
2051         struct
2052         {
2053             DWORD       FMDTemporalDifferenceThreshold : 8; // U8
2054             DWORD       SDIFallbackMode2Constant : 8; // U8
2055             DWORD       SDIFallbackMode1T2Constant : 8; // U8
2056             DWORD       SDIFallbackMode1T1Constant : 8; // U8
2057         };
2058         struct
2059         {
2060             DWORD       Value;
2061         };
2062     } DW5;
2063 
2064     // DWORD 6
2065     union
2066     {
2067         struct
2068         {
2069         DWORD: 3; // Reserved
2070             DWORD       DNDITopFirst : 1; // Enable
2071         DWORD: 2; // Reserved
2072             DWORD       ProgressiveDN : 1; // Enable
2073             DWORD       MCDIEnable : 1;
2074             DWORD       FMDTearThreshold : 6; // U6
2075             DWORD       CATTh1 : 2; // U2
2076             DWORD       FMD2VerticalDifferenceThreshold : 8; // U8
2077             DWORD       FMD1VerticalDifferenceThreshold : 8; // U8
2078         };
2079         struct
2080         {
2081             DWORD       Value;
2082         };
2083     } DW6;
2084 
2085     // DWORD 7
2086     union
2087     {
2088         struct
2089         {
2090             DWORD       SADTHA : 4; // U4
2091             DWORD       SADTHB : 4; // U4
2092             DWORD       FMDFirstFieldCurrentFrame : 2; // U2
2093             DWORD       MCPixelConsistencyTh : 6; // U6
2094             DWORD       FMDSecondFieldPreviousFrame : 2; // U2
2095         DWORD: 1; // Reserved
2096             DWORD       NeighborPixelTh : 4; // U4
2097             DWORD       DnmhHistoryInit : 6; // U6
2098         DWORD: 3; // Reserved
2099         };
2100         struct
2101         {
2102             DWORD       Value;
2103         };
2104     } DW7;
2105 
2106     // DWORD 8
2107     union
2108     {
2109         struct
2110         {
2111             DWORD       ChromaLTDThreshold : 6; // U6
2112             DWORD       ChromaTDTheshold : 6; // U6
2113             DWORD       ChromaDenoiseEnable : 1; // Enable
2114         DWORD: 3; // Reserved
2115             DWORD       ChromaDnSTADThreshold : 8; // U8
2116         DWORD: 8; // Reserved
2117         };
2118         struct
2119         {
2120             DWORD       Value;
2121         };
2122     } DW8;
2123 
2124     // DWORD 9
2125     union
2126     {
2127         struct
2128         {
2129             DWORD       HotPixelThreshold : 8;
2130             DWORD       HotPixelCount : 4;
2131         DWORD: 20; // Reserved
2132         };
2133         struct
2134         {
2135             DWORD       Value;
2136         };
2137     } DW9;
2138 
2139     // Padding for 32-byte alignment, VEBOX_DNDI_STATE_G8 is 10 DWORDs
2140     DWORD dwPad[6];
2141 } VEBOX_DNDI_STATE_G8, *PVEBOX_DNDI_STATE_G8;
2142 
2143 // Defined in vol2b "Media"
2144 typedef struct _VEBOX_IECP_STATE_G8
2145 {
2146     // STD/STE state
2147     // DWORD 0
2148     union
2149     {
2150         struct
2151         {
2152             DWORD       STDEnable : BITFIELD_BIT(0);
2153             DWORD       STEEnable : BITFIELD_BIT(1);
2154             DWORD       OutputCtrl : BITFIELD_BIT(2);
2155         DWORD: BITFIELD_BIT(3);
2156             DWORD       SatMax : BITFIELD_RANGE(4, 9);      // U6;
2157             DWORD       HueMax : BITFIELD_RANGE(10, 15);    // U6;
2158             DWORD       UMid : BITFIELD_RANGE(16, 23);    // U8;
2159             DWORD       VMid : BITFIELD_RANGE(24, 31);    // U8;
2160         };
2161         struct
2162         {
2163             DWORD       Value;
2164         };
2165     } DW0;
2166 
2167     // DWORD 1
2168     union
2169     {
2170         struct
2171         {
2172             DWORD       SinAlpha : BITFIELD_RANGE(0, 7);    // S0.7
2173         DWORD: BITFIELD_RANGE(8, 9);
2174             DWORD       CosAlpha : BITFIELD_RANGE(10, 17);  // S0.7
2175             DWORD       HSMargin : BITFIELD_RANGE(18, 20);  // U3
2176             DWORD       DiamondDu : BITFIELD_RANGE(21, 27);  // S7
2177             DWORD       DiamondMargin : BITFIELD_RANGE(28, 30);  // U3
2178         DWORD: BITFIELD_BIT(31);
2179         };
2180         struct
2181         {
2182             DWORD       Value;
2183         };
2184     } DW1;
2185 
2186     // DWORD 2
2187     union
2188     {
2189         struct
2190         {
2191             DWORD       DiamondDv : BITFIELD_RANGE(0, 6);    // S8.0
2192             DWORD       DiamondTh : BITFIELD_RANGE(7, 12);   // U6
2193             DWORD       DiamondAlpha : BITFIELD_RANGE(13, 20);  // U1.6
2194         DWORD: BITFIELD_RANGE(21, 31);
2195         };
2196         struct
2197         {
2198             DWORD       Value;
2199         };
2200     } DW2;
2201 
2202     // DWORD 3
2203     union
2204     {
2205         struct
2206         {
2207         DWORD: BITFIELD_RANGE(0, 6);
2208             DWORD       VYSTDEnable : BITFIELD_BIT(7);
2209             DWORD       YPoint1 : BITFIELD_RANGE(8, 15);    // U8
2210             DWORD       YPoint2 : BITFIELD_RANGE(16, 23);   // U8
2211             DWORD       YPoint3 : BITFIELD_RANGE(24, 31);   // U8
2212         };
2213         struct
2214         {
2215             DWORD       Value;
2216         };
2217     } DW3;
2218 
2219     // DWORD 4
2220     union
2221     {
2222         struct
2223         {
2224             DWORD       YPoint4 : BITFIELD_RANGE(0, 7);    // U8
2225             DWORD       YSlope1 : BITFIELD_RANGE(8, 12);   // U2.3
2226             DWORD       YSlope2 : BITFIELD_RANGE(13, 17);  // U2.3
2227         DWORD: BITFIELD_RANGE(18, 31);
2228         };
2229         struct
2230         {
2231             DWORD       Value;
2232         };
2233     } DW4;
2234 
2235     // DWORD 5
2236     union
2237     {
2238         struct
2239         {
2240             DWORD       INVMarginVYL : BITFIELD_RANGE(0, 15);    // U0.16
2241             DWORD       INVSkinTypesMargin : BITFIELD_RANGE(16, 31);   // U0.16
2242         };
2243         struct
2244         {
2245             DWORD       Value;
2246         };
2247     } DW5;
2248 
2249     // DWORD 6
2250     union
2251     {
2252         struct
2253         {
2254             DWORD       INVMarginVYU : BITFIELD_RANGE(0, 15);    // U0.16
2255             DWORD       P0L : BITFIELD_RANGE(16, 23);   // U8
2256             DWORD       P1L : BITFIELD_RANGE(24, 31);   // U8
2257         };
2258         struct
2259         {
2260             DWORD       Value;
2261         };
2262     } DW6;
2263 
2264     // DWORD 7
2265     union
2266     {
2267         struct
2268         {
2269             DWORD       P2L : BITFIELD_RANGE(0, 7);     // U8
2270             DWORD       P3L : BITFIELD_RANGE(8, 15);    // U8
2271             DWORD       B0L : BITFIELD_RANGE(16, 23);   // U8
2272             DWORD       B1L : BITFIELD_RANGE(24, 31);   // U8
2273         };
2274         struct
2275         {
2276             DWORD       Value;
2277         };
2278     } DW7;
2279 
2280     // DWORD 8
2281     union
2282     {
2283         struct
2284         {
2285             DWORD       B2L : BITFIELD_RANGE(0, 7);     // U8
2286             DWORD       B3L : BITFIELD_RANGE(8, 15);    // U8
2287             DWORD       S0L : BITFIELD_RANGE(16, 26);   // S2.8
2288         DWORD: BITFIELD_RANGE(27, 31);
2289         };
2290         struct
2291         {
2292             DWORD       Value;
2293         };
2294     } DW8;
2295 
2296     // DWORD 9
2297     union
2298     {
2299         struct
2300         {
2301             DWORD       S1L : BITFIELD_RANGE(0, 10);    // S2.8
2302             DWORD       S2L : BITFIELD_RANGE(11, 21);   // S2.8
2303         DWORD: BITFIELD_RANGE(22, 31);
2304         };
2305         struct
2306         {
2307             DWORD       Value;
2308         };
2309     } DW9;
2310 
2311     // DWORD 10
2312     union
2313     {
2314         struct
2315         {
2316             DWORD       S3L : BITFIELD_RANGE(0, 10);    // S2.8
2317             DWORD       P0U : BITFIELD_RANGE(11, 18);   // U8
2318             DWORD       P1U : BITFIELD_RANGE(19, 26);   // U8
2319         DWORD: BITFIELD_RANGE(27, 31);
2320         };
2321         struct
2322         {
2323             DWORD       Value;
2324         };
2325     } DW10;
2326 
2327     // DWORD 11
2328     union
2329     {
2330         struct
2331         {
2332             DWORD       P2U : BITFIELD_RANGE(0, 7);     // U8
2333             DWORD       P3U : BITFIELD_RANGE(8, 15);    // U8
2334             DWORD       B0U : BITFIELD_RANGE(16, 23);   // U8
2335             DWORD       B1U : BITFIELD_RANGE(24, 31);   // U8
2336         };
2337         struct
2338         {
2339             DWORD       Value;
2340         };
2341     } DW11;
2342 
2343     // DWORD 12
2344     union
2345     {
2346         struct
2347         {
2348             DWORD       B2U : BITFIELD_RANGE(0, 7);     // U8
2349             DWORD       B3U : BITFIELD_RANGE(8, 15);    // U8
2350             DWORD       S0U : BITFIELD_RANGE(16, 26);   // S2.8
2351         DWORD: BITFIELD_RANGE(27, 31);
2352         };
2353         struct
2354         {
2355             DWORD       Value;
2356         };
2357     } DW12;
2358 
2359     // DWORD 13
2360     union
2361     {
2362         struct
2363         {
2364             DWORD       S1U : BITFIELD_RANGE(0, 10);     // S2.8
2365             DWORD       S2U : BITFIELD_RANGE(11, 21);    // S2.8
2366         DWORD: BITFIELD_RANGE(22, 31);
2367         };
2368         struct
2369         {
2370             DWORD       Value;
2371         };
2372     } DW13;
2373 
2374     // DWORD 14
2375     union
2376     {
2377         struct
2378         {
2379             DWORD       S3U : BITFIELD_RANGE(0, 10);     // S2.8
2380             DWORD       SkinTypesEnable : BITFIELD_BIT(11);
2381             DWORD       SkinTypesThresh : BITFIELD_RANGE(12, 19);    // U8
2382             DWORD       SkinTypesMargin : BITFIELD_RANGE(20, 27);    // U8
2383         DWORD: BITFIELD_RANGE(28, 31);
2384         };
2385         struct
2386         {
2387             DWORD       Value;
2388         };
2389     } DW14;
2390 
2391     // DWORD 15
2392     union
2393     {
2394         struct
2395         {
2396             DWORD       SATP1 : BITFIELD_RANGE(0, 6);     // S6
2397             DWORD       SATP2 : BITFIELD_RANGE(7, 13);    // S6
2398             DWORD       SATP3 : BITFIELD_RANGE(14, 20);   // S6
2399             DWORD       SATB1 : BITFIELD_RANGE(21, 30);   // S2.7
2400         DWORD: BITFIELD_BIT(31);
2401         };
2402         struct
2403         {
2404             DWORD       Value;
2405         };
2406     } DW15;
2407 
2408     // DWORD 16
2409     union
2410     {
2411         struct
2412         {
2413             DWORD       SATB2 : BITFIELD_RANGE(0, 9);     // S2.7
2414             DWORD       SATB3 : BITFIELD_RANGE(10, 19);   // S2.7
2415             DWORD       SATS0 : BITFIELD_RANGE(20, 30);   // U3.8
2416         DWORD: BITFIELD_BIT(31);
2417         };
2418         struct
2419         {
2420             DWORD       Value;
2421         };
2422     } DW16;
2423 
2424     // DWORD 17
2425     union
2426     {
2427         struct
2428         {
2429             DWORD       SATS1 : BITFIELD_RANGE(0, 10);     // U3.8
2430             DWORD       SATS2 : BITFIELD_RANGE(11, 21);    // U3.8
2431         DWORD: BITFIELD_RANGE(22, 31);
2432         };
2433         struct
2434         {
2435             DWORD       Value;
2436         };
2437     } DW17;
2438 
2439     // DWORD 18
2440     union
2441     {
2442         struct
2443         {
2444             DWORD       SATS3 : BITFIELD_RANGE(0, 10);    // U3.8
2445             DWORD       HUEP1 : BITFIELD_RANGE(11, 17);   // U3.8
2446             DWORD       HUEP2 : BITFIELD_RANGE(18, 24);   // U3.8
2447             DWORD       HUEP3 : BITFIELD_RANGE(25, 31);   // U3.8
2448         };
2449         struct
2450         {
2451             DWORD       Value;
2452         };
2453     } DW18;
2454 
2455     // DWORD 19
2456     union
2457     {
2458         struct
2459         {
2460             DWORD       HUEB1 : BITFIELD_RANGE(0, 9);    // S2.7
2461             DWORD       HUEB2 : BITFIELD_RANGE(10, 19);  // S2.7
2462             DWORD       HUEB3 : BITFIELD_RANGE(20, 29);  // S2.7
2463         DWORD: BITFIELD_RANGE(30, 31);
2464         };
2465         struct
2466         {
2467             DWORD       Value;
2468         };
2469     } DW19;
2470 
2471     // DWORD 20
2472     union
2473     {
2474         struct
2475         {
2476             DWORD       HUES0 : BITFIELD_RANGE(0, 10);    // U3.8
2477             DWORD       HUES1 : BITFIELD_RANGE(11, 21);   // U3.8
2478         DWORD: BITFIELD_RANGE(22, 31);
2479         };
2480         struct
2481         {
2482             DWORD       Value;
2483         };
2484     } DW20;
2485 
2486     // DWORD 21
2487     union
2488     {
2489         struct
2490         {
2491             DWORD       HUES2 : BITFIELD_RANGE(0, 10);    // U3.8
2492             DWORD       HUES3 : BITFIELD_RANGE(11, 21);   // U3.8
2493         DWORD: BITFIELD_RANGE(22, 31);
2494         };
2495         struct
2496         {
2497             DWORD       Value;
2498         };
2499     } DW21;
2500 
2501     // DWORD 22
2502     union
2503     {
2504         struct
2505         {
2506             DWORD       SATP1DARK : BITFIELD_RANGE(0, 6);     // S6
2507             DWORD       SATP2DARK : BITFIELD_RANGE(7, 13);    // S6
2508             DWORD       SATP3DARK : BITFIELD_RANGE(14, 20);   // S6
2509             DWORD       SATB1DARK : BITFIELD_RANGE(21, 30);   // S2.7
2510         DWORD: BITFIELD_BIT(31);
2511         };
2512         struct
2513         {
2514             DWORD       Value;
2515         };
2516     } DW22;
2517 
2518     // DWORD 23
2519     union
2520     {
2521         struct
2522         {
2523             DWORD       SATB2DARK : BITFIELD_RANGE(0, 9);    // S2.7
2524             DWORD       SATB3DARK : BITFIELD_RANGE(10, 19);  // S2.7
2525             DWORD       SATS0DARK : BITFIELD_RANGE(20, 30);  // U3.8
2526         DWORD: BITFIELD_BIT(31);
2527         };
2528         struct
2529         {
2530             DWORD       Value;
2531         };
2532     } DW23;
2533 
2534     // DWORD 24
2535     union
2536     {
2537         struct
2538         {
2539             DWORD       SATS1DARK : BITFIELD_RANGE(0, 10);    // U3.8
2540             DWORD       SATS2DARK : BITFIELD_RANGE(11, 21);   // U3.8
2541         DWORD: BITFIELD_RANGE(22, 31);
2542         };
2543         struct
2544         {
2545             DWORD       Value;
2546         };
2547     } DW24;
2548 
2549     // DWORD 25
2550     union
2551     {
2552         struct
2553         {
2554             DWORD       SATS3DARK : BITFIELD_RANGE(0, 10);   // U3.8
2555             DWORD       HUEP1DARK : BITFIELD_RANGE(11, 17);  // S6
2556             DWORD       HUEP2DARK : BITFIELD_RANGE(18, 24);  // S6
2557             DWORD       HUEP3DARK : BITFIELD_RANGE(25, 31);  // S6
2558         };
2559         struct
2560         {
2561             DWORD       Value;
2562         };
2563     } DW25;
2564 
2565     // DWORD 26
2566     union
2567     {
2568         struct
2569         {
2570             DWORD       HUEB1DARK : BITFIELD_RANGE(0, 9);    // S2.7
2571             DWORD       HUEB2DARK : BITFIELD_RANGE(10, 19);  // S2.7
2572             DWORD       HUEB3DARK : BITFIELD_RANGE(20, 29);  // S2.7
2573         DWORD: BITFIELD_RANGE(30, 31);
2574         };
2575         struct
2576         {
2577             DWORD       Value;
2578         };
2579     } DW26;
2580 
2581     // DWORD 27
2582     union
2583     {
2584         struct
2585         {
2586             DWORD       HUES0DARK : BITFIELD_RANGE(0, 10);    // U3.8
2587             DWORD       HUES1DARK : BITFIELD_RANGE(11, 21);   // U3.8
2588         DWORD: BITFIELD_RANGE(22, 31);
2589         };
2590         struct
2591         {
2592             DWORD       Value;
2593         };
2594     } DW27;
2595 
2596     // DWORD 28
2597     union
2598     {
2599         struct
2600         {
2601             DWORD       HUES2DARK : BITFIELD_RANGE(0, 10);    // U3.8
2602             DWORD       HUES3DARK : BITFIELD_RANGE(11, 21);   // U3.8
2603         DWORD: BITFIELD_RANGE(22, 31);
2604         };
2605         struct
2606         {
2607             DWORD       Value;
2608         };
2609     } DW28;
2610 
2611     // ACE state
2612     // DWORD 29
2613     union
2614     {
2615         struct
2616         {
2617             DWORD       ACEEnable : BITFIELD_BIT(0);
2618             DWORD       FullImageHistogram : BITFIELD_BIT(1);
2619             DWORD       SkinThreshold : BITFIELD_RANGE(2, 6);    // U5
2620         DWORD: BITFIELD_RANGE(7, 31);
2621         };
2622         struct
2623         {
2624             DWORD       Value;
2625         };
2626     } DW29;
2627 
2628     // DWORD 30
2629     union
2630     {
2631         struct
2632         {
2633             DWORD       Ymin : BITFIELD_RANGE(0, 7);
2634             DWORD       Y1 : BITFIELD_RANGE(8, 15);
2635             DWORD       Y2 : BITFIELD_RANGE(16, 23);
2636             DWORD       Y3 : BITFIELD_RANGE(24, 31);
2637         };
2638         struct
2639         {
2640             DWORD       Value;
2641         };
2642     } DW30;
2643 
2644     // DWORD 31
2645     union
2646     {
2647         struct
2648         {
2649             DWORD       Y4 : BITFIELD_RANGE(0, 7);
2650             DWORD       Y5 : BITFIELD_RANGE(8, 15);
2651             DWORD       Y6 : BITFIELD_RANGE(16, 23);
2652             DWORD       Y7 : BITFIELD_RANGE(24, 31);
2653         };
2654         struct
2655         {
2656             DWORD       Value;
2657         };
2658     } DW31;
2659 
2660     // DWORD 32
2661     union
2662     {
2663         struct
2664         {
2665             DWORD       Y8 : BITFIELD_RANGE(0, 7);
2666             DWORD       Y9 : BITFIELD_RANGE(8, 15);
2667             DWORD       Y10 : BITFIELD_RANGE(16, 23);
2668             DWORD       Ymax : BITFIELD_RANGE(24, 31);
2669         };
2670         struct
2671         {
2672             DWORD       Value;
2673         };
2674     } DW32;
2675 
2676     // DWORD 33
2677     union
2678     {
2679         struct
2680         {
2681             DWORD       B1 : BITFIELD_RANGE(0, 7);   // U8
2682             DWORD       B2 : BITFIELD_RANGE(8, 15);  // U8
2683             DWORD       B3 : BITFIELD_RANGE(16, 23); // U8
2684             DWORD       B4 : BITFIELD_RANGE(24, 31); // U8
2685         };
2686         struct
2687         {
2688             DWORD       Value;
2689         };
2690     } DW33;
2691 
2692     // DWORD 34
2693     union
2694     {
2695         struct
2696         {
2697             DWORD       B5 : BITFIELD_RANGE(0, 7);   // U8
2698             DWORD       B6 : BITFIELD_RANGE(8, 15);  // U8
2699             DWORD       B7 : BITFIELD_RANGE(16, 23); // U8
2700             DWORD       B8 : BITFIELD_RANGE(24, 31); // U8
2701         };
2702         struct
2703         {
2704             DWORD       Value;
2705         };
2706     } DW34;
2707 
2708     // DWORD 35
2709     union
2710     {
2711         struct
2712         {
2713             DWORD       B9 : BITFIELD_RANGE(0, 7);   // U8
2714             DWORD       B10 : BITFIELD_RANGE(8, 15);  // U8
2715         DWORD: BITFIELD_RANGE(16, 31);
2716         };
2717         struct
2718         {
2719             DWORD       Value;
2720         };
2721     } DW35;
2722 
2723     // DWORD 36
2724     union
2725     {
2726         struct
2727         {
2728             DWORD       S0 : BITFIELD_RANGE(0, 10);   // U11
2729         DWORD: BITFIELD_RANGE(11, 15);
2730             DWORD       S1 : BITFIELD_RANGE(16, 26);  // U11
2731         DWORD: BITFIELD_RANGE(27, 31);
2732         };
2733         struct
2734         {
2735             DWORD       Value;
2736         };
2737     } DW36;
2738 
2739     // DWORD 37
2740     union
2741     {
2742         struct
2743         {
2744             DWORD       S2 : BITFIELD_RANGE(0, 10);   // U11
2745         DWORD: BITFIELD_RANGE(11, 15);
2746             DWORD       S3 : BITFIELD_RANGE(16, 26);  // U11
2747         DWORD: BITFIELD_RANGE(27, 31);
2748         };
2749         struct
2750         {
2751             DWORD       Value;
2752         };
2753     } DW37;
2754 
2755     // DWORD 38
2756     union
2757     {
2758         struct
2759         {
2760             DWORD       S4 : BITFIELD_RANGE(0, 10);   // U11
2761         DWORD: BITFIELD_RANGE(11, 15);
2762             DWORD       S5 : BITFIELD_RANGE(16, 26);  // U11
2763         DWORD: BITFIELD_RANGE(27, 31);
2764         };
2765         struct
2766         {
2767             DWORD       Value;
2768         };
2769     } DW38;
2770 
2771     // DWORD 39
2772     union
2773     {
2774         struct
2775         {
2776             DWORD       S6 : BITFIELD_RANGE(0, 10);   // U11
2777         DWORD: BITFIELD_RANGE(11, 15);
2778             DWORD       S7 : BITFIELD_RANGE(16, 26);  // U11
2779         DWORD: BITFIELD_RANGE(27, 31);
2780         };
2781         struct
2782         {
2783             DWORD       Value;
2784         };
2785     } DW39;
2786 
2787     // DWORD 40
2788     union
2789     {
2790         struct
2791         {
2792             DWORD       S8 : BITFIELD_RANGE(0, 10);   // U11
2793         DWORD: BITFIELD_RANGE(11, 15);
2794             DWORD       S9 : BITFIELD_RANGE(16, 26);  // U11
2795         DWORD: BITFIELD_RANGE(27, 31);
2796         };
2797         struct
2798         {
2799             DWORD       Value;
2800         };
2801     } DW40;
2802 
2803     // DWORD 41
2804     union
2805     {
2806         struct
2807         {
2808             DWORD       S10 : BITFIELD_RANGE(0, 10);   // U11
2809         DWORD: BITFIELD_RANGE(11, 31);
2810         };
2811         struct
2812         {
2813             DWORD       Value;
2814         };
2815     } DW41;
2816 
2817     // TCC State
2818     // DWORD 42
2819     union
2820     {
2821         struct
2822         {
2823         DWORD: BITFIELD_RANGE(0, 6);
2824             DWORD       TCCEnable : BITFIELD_BIT(7);
2825             DWORD       SatFactor1 : BITFIELD_RANGE(8, 15);    // U8
2826             DWORD       SatFactor2 : BITFIELD_RANGE(16, 23);   // U8
2827             DWORD       SatFactor3 : BITFIELD_RANGE(24, 31);   // U8
2828         };
2829         struct
2830         {
2831             DWORD       Value;
2832         };
2833     } DW42;
2834 
2835     // DWORD 43
2836     union
2837     {
2838         struct
2839         {
2840         DWORD: BITFIELD_RANGE(0, 7);
2841             DWORD       SatFactor4 : BITFIELD_RANGE(8, 15);    // U8
2842             DWORD       SatFactor5 : BITFIELD_RANGE(16, 23);   // U8
2843             DWORD       SatFactor6 : BITFIELD_RANGE(24, 31);   // U8
2844         };
2845         struct
2846         {
2847             DWORD       Value;
2848         };
2849     } DW43;
2850 
2851     // DWORD 44
2852     union
2853     {
2854         struct
2855         {
2856             DWORD       BaseColor1 : BITFIELD_RANGE(0, 9);    // U10
2857             DWORD       BaseColor2 : BITFIELD_RANGE(10, 19);  // U10
2858             DWORD       BaseColor3 : BITFIELD_RANGE(20, 29);  // U10
2859         DWORD: BITFIELD_RANGE(30, 31);
2860         };
2861         struct
2862         {
2863             DWORD       Value;
2864         };
2865     } DW44;
2866 
2867     // DWORD 45
2868     union
2869     {
2870         struct
2871         {
2872             DWORD       BaseColor4 : BITFIELD_RANGE(0, 9);    // U10
2873             DWORD       BaseColor5 : BITFIELD_RANGE(10, 19);  // U10
2874             DWORD       BaseColor6 : BITFIELD_RANGE(20, 29);  // U10
2875         DWORD: BITFIELD_RANGE(30, 31);
2876         };
2877         struct
2878         {
2879             DWORD       Value;
2880         };
2881     } DW45;
2882 
2883     // DWORD 46
2884     union
2885     {
2886         struct
2887         {
2888             DWORD       ColorTransitSlope12 : BITFIELD_RANGE(0, 15);    // U16
2889             DWORD       ColorTransitSlope23 : BITFIELD_RANGE(16, 31);   // U16
2890         };
2891         struct
2892         {
2893             DWORD       Value;
2894         };
2895     } DW46;
2896 
2897     // DWORD 47
2898     union
2899     {
2900         struct
2901         {
2902             DWORD       ColorTransitSlope34 : BITFIELD_RANGE(0, 15);    // U16
2903             DWORD       ColorTransitSlope45 : BITFIELD_RANGE(16, 31);   // U16
2904         };
2905         struct
2906         {
2907             DWORD       Value;
2908         };
2909     } DW47;
2910 
2911     // DWORD 48
2912     union
2913     {
2914         struct
2915         {
2916             DWORD       ColorTransitSlope56 : BITFIELD_RANGE(0, 15);    // U16
2917             DWORD       ColorTransitSlope61 : BITFIELD_RANGE(16, 31);   // U16
2918         };
2919         struct
2920         {
2921             DWORD       Value;
2922         };
2923     } DW48;
2924 
2925     // DWORD 49
2926     union
2927     {
2928         struct
2929         {
2930         DWORD: BITFIELD_RANGE(0, 1);
2931             DWORD       ColorBias1 : BITFIELD_RANGE(2, 11);    // U10
2932             DWORD       ColorBias2 : BITFIELD_RANGE(12, 21);   // U10
2933             DWORD       ColorBias3 : BITFIELD_RANGE(22, 31);   // U10
2934         };
2935         struct
2936         {
2937             DWORD       Value;
2938         };
2939     } DW49;
2940 
2941     // DWORD 50
2942     union
2943     {
2944         struct
2945         {
2946         DWORD: BITFIELD_RANGE(0, 1);
2947             DWORD       ColorBias4 : BITFIELD_RANGE(2, 11);    // U10
2948             DWORD       ColorBias5 : BITFIELD_RANGE(12, 21);   // U10
2949             DWORD       ColorBias6 : BITFIELD_RANGE(22, 31);   // U10
2950         };
2951         struct
2952         {
2953             DWORD       Value;
2954         };
2955     } DW50;
2956 
2957     // DWORD 51
2958     union
2959     {
2960         struct
2961         {
2962             DWORD       STESlopeBits : BITFIELD_RANGE(0, 2);    // U3
2963         DWORD: BITFIELD_RANGE(3, 7);
2964             DWORD       STEThreshold : BITFIELD_RANGE(8, 12);   // U5
2965         DWORD: BITFIELD_RANGE(13, 15);
2966             DWORD       UVThresholdBits : BITFIELD_RANGE(16, 18);  // U5
2967         DWORD: BITFIELD_RANGE(19, 23);
2968             DWORD       UVThreshold : BITFIELD_RANGE(24, 30);  // U7
2969         DWORD: BITFIELD_BIT(31);
2970         };
2971         struct
2972         {
2973             DWORD       Value;
2974         };
2975     } DW51;
2976 
2977     // DWORD 52
2978     union
2979     {
2980         struct
2981         {
2982             DWORD       UVMaxColor : BITFIELD_RANGE(0, 8);    // U9
2983         DWORD: BITFIELD_RANGE(9, 15);
2984             DWORD       InvUVMaxColor : BITFIELD_RANGE(16, 31);  // U16
2985         };
2986         struct
2987         {
2988             DWORD       Value;
2989         };
2990     } DW52;
2991 
2992     // ProcAmp State
2993     // DWORD 53
2994     union
2995     {
2996         struct
2997         {
2998             DWORD       ProcAmpEnable : BITFIELD_BIT(0);
2999             DWORD       Brightness : BITFIELD_RANGE(1, 12);    // S7.4
3000         DWORD: BITFIELD_RANGE(13, 16);
3001             DWORD       Contrast : BITFIELD_RANGE(17, 27);   // U7.4
3002         DWORD: BITFIELD_RANGE(28, 31);
3003         };
3004         struct
3005         {
3006             DWORD       Value;
3007         };
3008     } DW53;
3009 
3010     // DWORD 54
3011     union
3012     {
3013         struct
3014         {
3015             DWORD       SINCS : BITFIELD_RANGE(0, 15);    // S7.8
3016             DWORD       COSCS : BITFIELD_RANGE(16, 31);   // S7.8
3017         };
3018         struct
3019         {
3020             DWORD       Value;
3021         };
3022     } DW54;
3023 
3024     // CSC State
3025     // DWORD 55
3026     union
3027     {
3028         struct
3029         {
3030             DWORD       TransformEnable : BITFIELD_BIT(0);
3031             DWORD       YUVChannelSwap : BITFIELD_BIT(1);
3032         DWORD: BITFIELD_BIT(2);
3033             DWORD       C0 : BITFIELD_RANGE(3, 15);  // S2.10
3034             DWORD       C1 : BITFIELD_RANGE(16, 28); // S2.10
3035         DWORD: BITFIELD_RANGE(29, 31);
3036         };
3037         struct
3038         {
3039             DWORD       Value;
3040         };
3041     } DW55;
3042 
3043     // DWORD 56
3044     union
3045     {
3046         struct
3047         {
3048             DWORD       C2 : BITFIELD_RANGE(0, 12);  // S2.10
3049             DWORD       C3 : BITFIELD_RANGE(13, 25); // S2.10
3050         DWORD: BITFIELD_RANGE(26, 31);
3051         };
3052         struct
3053         {
3054             DWORD       Value;
3055         };
3056     } DW56;
3057 
3058     // DWORD 57
3059     union
3060     {
3061         struct
3062         {
3063             DWORD       C4 : BITFIELD_RANGE(0, 12);  // S2.10
3064             DWORD       C5 : BITFIELD_RANGE(13, 25); // S2.10
3065         DWORD: BITFIELD_RANGE(26, 31);
3066         };
3067         struct
3068         {
3069             DWORD       Value;
3070         };
3071     } DW57;
3072 
3073     // DWORD 58
3074     union
3075     {
3076         struct
3077         {
3078             DWORD       C6 : BITFIELD_RANGE(0, 12);  // S2.10
3079             DWORD       C7 : BITFIELD_RANGE(13, 25); // S2.10
3080         DWORD: BITFIELD_RANGE(26, 31);
3081         };
3082         struct
3083         {
3084             DWORD       Value;
3085         };
3086     } DW58;
3087 
3088     // DWORD 59
3089     union
3090     {
3091         struct
3092         {
3093             DWORD       C8 : BITFIELD_RANGE(0, 12);   // S2.10
3094         DWORD: BITFIELD_RANGE(13, 31);
3095         };
3096         struct
3097         {
3098             DWORD       Value;
3099         };
3100     } DW59;
3101 
3102     // DWORD 60
3103     union
3104     {
3105         struct
3106         {
3107             DWORD       OffsetIn1 : BITFIELD_RANGE(0, 10);   // S10
3108             DWORD       OffsetOut1 : BITFIELD_RANGE(11, 21);  // S10
3109         DWORD: BITFIELD_RANGE(22, 31);
3110         };
3111         struct
3112         {
3113             DWORD       Value;
3114         };
3115     } DW60;
3116 
3117     // DWORD 61
3118     union
3119     {
3120         struct
3121         {
3122             DWORD       OffsetIn2 : BITFIELD_RANGE(0, 10);   // S10
3123             DWORD       OffsetOut2 : BITFIELD_RANGE(11, 21);  // S10
3124         DWORD: BITFIELD_RANGE(22, 31);
3125         };
3126         struct
3127         {
3128             DWORD       Value;
3129         };
3130     } DW61;
3131 
3132     // DWORD 62
3133     union
3134     {
3135         struct
3136         {
3137             DWORD       OffsetIn3 : BITFIELD_RANGE(0, 10);  // S10
3138             DWORD       OffsetOut3 : BITFIELD_RANGE(11, 21); // S10
3139         DWORD: BITFIELD_RANGE(22, 31);
3140         };
3141         struct
3142         {
3143             DWORD       Value;
3144         };
3145     } DW62;
3146 
3147     // DWORD 63
3148     union
3149     {
3150         struct
3151         {
3152             DWORD       ColorPipeAlpha : BITFIELD_RANGE(0, 11);  // U12
3153         DWORD: BITFIELD_RANGE(12, 15);
3154             DWORD       AlphaFromStateSelect : BITFIELD_BIT(16);
3155         DWORD: BITFIELD_RANGE(17, 31);
3156         };
3157         struct
3158         {
3159             DWORD       Value;
3160         };
3161     } DW63;
3162 
3163     // Area of Interest
3164     // DWORD 64
3165     union
3166     {
3167         struct
3168         {
3169             DWORD       AOIMinX : BITFIELD_RANGE(0, 15);  // U16
3170             DWORD       AOIMaxX : BITFIELD_RANGE(16, 31); // U16
3171         };
3172         struct
3173         {
3174             DWORD       Value;
3175         };
3176     } DW64;
3177 
3178     // DWORD 65
3179     union
3180     {
3181         struct
3182         {
3183             DWORD       AOIMinY : BITFIELD_RANGE(0, 15);  // U16
3184             DWORD       AOIMaxY : BITFIELD_RANGE(16, 31); // U16
3185         };
3186         struct
3187         {
3188             DWORD       Value;
3189         };
3190     } DW65;
3191 
3192     // Color Correction Matrix
3193     // DWORD 66
3194     union
3195     {
3196         struct
3197         {
3198             DWORD       C1Coeff : BITFIELD_RANGE(0, 20);  // S8.12
3199         DWORD: BITFIELD_RANGE(21, 29);
3200             DWORD       VignetteCorrectionFormat : BITFIELD_BIT(30);
3201             DWORD       ColorCorrectionMatrixEnable : BITFIELD_BIT(31);
3202         };
3203         struct
3204         {
3205             DWORD       Value;
3206         };
3207     } DW66;
3208 
3209     // DWORD 67
3210     union
3211     {
3212         struct
3213         {
3214             DWORD       C0Coeff : BITFIELD_RANGE(0, 20); // S8.12
3215         DWORD: BITFIELD_RANGE(21, 31);
3216         };
3217         struct
3218         {
3219             DWORD       Value;
3220         };
3221     } DW67;
3222 
3223     // DWORD 68
3224     union
3225     {
3226         struct
3227         {
3228             DWORD       C3Coeff : BITFIELD_RANGE(0, 20); // S8.12
3229         DWORD: BITFIELD_RANGE(21, 31);
3230         };
3231         struct
3232         {
3233             DWORD       Value;
3234         };
3235     } DW68;
3236 
3237     // DWORD 69
3238     union
3239     {
3240         struct
3241         {
3242             DWORD       C2Coeff : BITFIELD_RANGE(0, 20); // S8.12
3243         DWORD: BITFIELD_RANGE(21, 31);
3244         };
3245         struct
3246         {
3247             DWORD       Value;
3248         };
3249     } DW69;
3250 
3251     // DWORD 70
3252     union
3253     {
3254         struct
3255         {
3256             DWORD       C5Coeff : BITFIELD_RANGE(0, 20); // S8.12
3257         DWORD: BITFIELD_RANGE(21, 31);
3258         };
3259         struct
3260         {
3261             DWORD       Value;
3262         };
3263     } DW70;
3264 
3265     // DWORD 71
3266     union
3267     {
3268         struct
3269         {
3270             DWORD       C4Coeff : BITFIELD_RANGE(0, 20); // S8.12
3271         DWORD: BITFIELD_RANGE(21, 31);
3272         };
3273         struct
3274         {
3275             DWORD       Value;
3276         };
3277     } DW71;
3278 
3279     // DWORD 72
3280     union
3281     {
3282         struct
3283         {
3284             DWORD       C7Coeff : BITFIELD_RANGE(0, 20); // S8.12
3285         DWORD: BITFIELD_RANGE(21, 31);
3286         };
3287         struct
3288         {
3289             DWORD       Value;
3290         };
3291     } DW72;
3292 
3293     // DWORD 73
3294     union
3295     {
3296         struct
3297         {
3298             DWORD       C6Coeff : BITFIELD_RANGE(0, 20); // S8.12
3299         DWORD: BITFIELD_RANGE(21, 31);
3300         };
3301         struct
3302         {
3303             DWORD       Value;
3304         };
3305     } DW73;
3306 
3307     // DWORD 74
3308     union
3309     {
3310         struct
3311         {
3312             DWORD       C8Coeff : BITFIELD_RANGE(0, 20); // S8.12
3313         DWORD: BITFIELD_RANGE(21, 31);
3314         };
3315         struct
3316         {
3317             DWORD       Value;
3318         };
3319     } DW74;
3320 
3321     // DWORD 75
3322     union
3323     {
3324         struct
3325         {
3326             DWORD       BlackPointOffsetR : BITFIELD_RANGE(0, 12); // S12
3327         DWORD: BITFIELD_RANGE(13, 31);
3328         };
3329         struct
3330         {
3331             DWORD       Value;
3332         };
3333     } DW75;
3334 
3335     // DWORD 76
3336     union
3337     {
3338         struct
3339         {
3340             DWORD       BlackPointOffsetB : BITFIELD_RANGE(0, 12);  // S12
3341             DWORD       BlackPointOffsetG : BITFIELD_RANGE(13, 25); // S12
3342         DWORD: BITFIELD_RANGE(26, 31);
3343         };
3344         struct
3345         {
3346             DWORD       Value;
3347         };
3348     } DW76;
3349 
3350     // Forward Gamma Correction
3351     // DWORD 77
3352     union
3353     {
3354         struct
3355         {
3356             DWORD       ForwardGammaCorrectionEnable : BITFIELD_BIT(0);
3357         DWORD: BITFIELD_RANGE(1, 7);
3358             DWORD       PWLFwdGammaPoint1 : BITFIELD_RANGE(8, 15);
3359             DWORD       PWLFwdGammaPoint2 : BITFIELD_RANGE(16, 23);
3360             DWORD       PWLFwdGammaPoint3 : BITFIELD_RANGE(24, 31);
3361         };
3362         struct
3363         {
3364             DWORD       Value;
3365         };
3366     } DW77;
3367 
3368     // DWORD 78
3369     union
3370     {
3371         struct
3372         {
3373             DWORD       PWLFwdGammaPoint4 : BITFIELD_RANGE(0, 7);
3374             DWORD       PWLFwdGammaPoint5 : BITFIELD_RANGE(8, 15);
3375             DWORD       PWLFwdGammaPoint6 : BITFIELD_RANGE(16, 23);
3376             DWORD       PWLFwdGammaPoint7 : BITFIELD_RANGE(24, 31);
3377         };
3378         struct
3379         {
3380             DWORD       Value;
3381         };
3382     } DW78;
3383 
3384     // DWORD 79
3385     union
3386     {
3387         struct
3388         {
3389             DWORD       PWLFwdGammaPoint8 : BITFIELD_RANGE(0, 7);
3390             DWORD       PWLFwdGammaPoint9 : BITFIELD_RANGE(8, 15);
3391             DWORD       PWLFwdGammaPoint10 : BITFIELD_RANGE(16, 23);
3392             DWORD       PWLFwdGammaPoint11 : BITFIELD_RANGE(24, 31);
3393         };
3394         struct
3395         {
3396             DWORD       Value;
3397         };
3398     } DW79;
3399 
3400     // DWORD 80
3401     union
3402     {
3403         struct
3404         {
3405             DWORD       PWLFwdGammaBias1 : BITFIELD_RANGE(0, 7);
3406             DWORD       PWLFwdGammaBias2 : BITFIELD_RANGE(8, 15);
3407             DWORD       PWLFwdGammaBias3 : BITFIELD_RANGE(16, 23);
3408             DWORD       PWLFwdGammaBias4 : BITFIELD_RANGE(24, 31);
3409         };
3410         struct
3411         {
3412             DWORD       Value;
3413         };
3414     } DW80;
3415 
3416     // DWORD 81
3417     union
3418     {
3419         struct
3420         {
3421             DWORD       PWLFwdGammaBias5 : BITFIELD_RANGE(0, 7);
3422             DWORD       PWLFwdGammaBias6 : BITFIELD_RANGE(8, 15);
3423             DWORD       PWLFwdGammaBias7 : BITFIELD_RANGE(16, 23);
3424             DWORD       PWLFwdGammaBias8 : BITFIELD_RANGE(24, 31);
3425         };
3426         struct
3427         {
3428             DWORD       Value;
3429         };
3430     } DW81;
3431 
3432     // DWORD 82
3433     union
3434     {
3435         struct
3436         {
3437             DWORD       PWLFwdGammaBias9 : BITFIELD_RANGE(0, 7);
3438             DWORD       PWLFwdGammaBias10 : BITFIELD_RANGE(8, 15);
3439             DWORD       PWLFwdGammaBias11 : BITFIELD_RANGE(16, 23);
3440         DWORD: BITFIELD_RANGE(24, 31);
3441         };
3442         struct
3443         {
3444             DWORD       Value;
3445         };
3446     } DW82;
3447 
3448     // DWORD 83
3449     union
3450     {
3451         struct
3452         {
3453             DWORD       PWLFwdGammaSlope0 : BITFIELD_RANGE(0, 11);  // U4.8
3454         DWORD: BITFIELD_RANGE(12, 15);
3455             DWORD       PWLFwdGammaSlope1 : BITFIELD_RANGE(16, 27); // U4.8
3456         DWORD: BITFIELD_RANGE(28, 31);
3457         };
3458         struct
3459         {
3460             DWORD       Value;
3461         };
3462     } DW83;
3463 
3464     // DWORD 84
3465     union
3466     {
3467         struct
3468         {
3469             DWORD       PWLFwdGammaSlope2 : BITFIELD_RANGE(0, 11);  // U4.8
3470         DWORD: BITFIELD_RANGE(12, 15);
3471             DWORD       PWLFwdGammaSlope3 : BITFIELD_RANGE(16, 27); // U4.8
3472         DWORD: BITFIELD_RANGE(28, 31);
3473         };
3474         struct
3475         {
3476             DWORD       Value;
3477         };
3478     } DW84;
3479 
3480     // DWORD 85
3481     union
3482     {
3483         struct
3484         {
3485             DWORD       PWLFwdGammaSlope4 : BITFIELD_RANGE(0, 11);  // U4.8
3486         DWORD: BITFIELD_RANGE(12, 15);
3487             DWORD       PWLFwdGammaSlope5 : BITFIELD_RANGE(16, 27); // U4.8
3488         DWORD: BITFIELD_RANGE(28, 31);
3489         };
3490         struct
3491         {
3492             DWORD       Value;
3493         };
3494     } DW85;
3495 
3496     // DWORD 86
3497     union
3498     {
3499         struct
3500         {
3501             DWORD       PWLFwdGammaSlope6 : BITFIELD_RANGE(0, 11);  // U4.8
3502         DWORD: BITFIELD_RANGE(12, 15);
3503             DWORD       PWLFwdGammaSlope7 : BITFIELD_RANGE(16, 27); // U4.8
3504         DWORD: BITFIELD_RANGE(28, 31);
3505         };
3506         struct
3507         {
3508             DWORD       Value;
3509         };
3510     } DW86;
3511 
3512     // DWORD 87
3513     union
3514     {
3515         struct
3516         {
3517             DWORD       PWLFwdGammaSlope8 : BITFIELD_RANGE(0, 11);  // U4.8
3518         DWORD: BITFIELD_RANGE(12, 15);
3519             DWORD       PWLFwdGammaSlope9 : BITFIELD_RANGE(16, 27); // U4.8
3520         DWORD: BITFIELD_RANGE(28, 31);
3521         };
3522         struct
3523         {
3524             DWORD       Value;
3525         };
3526     } DW87;
3527 
3528     // DWORD 88
3529     union
3530     {
3531         struct
3532         {
3533             DWORD       PWLFwdGammaSlope10 : BITFIELD_RANGE(0, 11);  // U4.8
3534         DWORD: BITFIELD_RANGE(12, 15);
3535             DWORD       PWLFwdGammaSlope11 : BITFIELD_RANGE(16, 27); // U4.8
3536         DWORD: BITFIELD_RANGE(28, 31);
3537         };
3538         struct
3539         {
3540             DWORD       Value;
3541         };
3542     } DW88;
3543 
3544     // Front-End CSC
3545     // DWORD 89
3546     union
3547     {
3548         struct
3549         {
3550             DWORD       FrontEndCSCTransformEnable : BITFIELD_BIT(0);
3551         DWORD: BITFIELD_RANGE(1, 2);
3552             DWORD       FECSCC0Coeff : BITFIELD_RANGE(3, 15);  // S2.10
3553             DWORD       FECSCC1Coeff : BITFIELD_RANGE(16, 28); // S2.10
3554         DWORD: BITFIELD_RANGE(29, 31);
3555         };
3556         struct
3557         {
3558             DWORD       Value;
3559         };
3560     } DW89;
3561 
3562     // DWORD 90
3563     union
3564     {
3565         struct
3566         {
3567             DWORD       FECSCC2Coeff : BITFIELD_RANGE(0, 12);  // S2.10
3568             DWORD       FECSCC3Coeff : BITFIELD_RANGE(13, 25); // S2.10
3569         DWORD: BITFIELD_RANGE(26, 31);
3570         };
3571         struct
3572         {
3573             DWORD       Value;
3574         };
3575     } DW90;
3576 
3577     // DWORD 91
3578     union
3579     {
3580         struct
3581         {
3582             DWORD       FECSCC4Coeff : BITFIELD_RANGE(0, 12);  // S2.10
3583             DWORD       FECSCC5Coeff : BITFIELD_RANGE(13, 25); // S2.10
3584         DWORD: BITFIELD_RANGE(26, 31);
3585         };
3586         struct
3587         {
3588             DWORD       Value;
3589         };
3590     } DW91;
3591 
3592     // DWORD 92
3593     union
3594     {
3595         struct
3596         {
3597             DWORD       FECSCC6Coeff : BITFIELD_RANGE(0, 12);  // S2.10
3598             DWORD       FECSCC7Coeff : BITFIELD_RANGE(13, 25); // S2.10
3599         DWORD: BITFIELD_RANGE(26, 31);
3600         };
3601         struct
3602         {
3603             DWORD       Value;
3604         };
3605     } DW92;
3606 
3607     // DWORD 93
3608     union
3609     {
3610         struct
3611         {
3612             DWORD       FECSCC8Coeff : BITFIELD_RANGE(0, 12);  // S2.10
3613         DWORD: BITFIELD_RANGE(13, 31);
3614         };
3615         struct
3616         {
3617             DWORD       Value;
3618         };
3619     } DW93;
3620 
3621     // DWORD 94
3622     union
3623     {
3624         struct
3625         {
3626             DWORD       FECSCCOffsetIn1 : BITFIELD_RANGE(0, 10);
3627             DWORD       FECSCCOffsetOut1 : BITFIELD_RANGE(11, 21);
3628         DWORD: BITFIELD_RANGE(22, 31);
3629         };
3630         struct
3631         {
3632             DWORD       Value;
3633         };
3634     } DW94;
3635 
3636     // DWORD 95
3637     union
3638     {
3639         struct
3640         {
3641             DWORD       FECSCCOffsetIn2 : BITFIELD_RANGE(0, 10);
3642             DWORD       FECSCCOffsetOut2 : BITFIELD_RANGE(11, 21);
3643         DWORD: BITFIELD_RANGE(22, 31);
3644         };
3645         struct
3646         {
3647             DWORD       Value;
3648         };
3649     } DW95;
3650 
3651     // DWORD 96
3652     union
3653     {
3654         struct
3655         {
3656             DWORD       FECSCCOffsetIn3 : BITFIELD_RANGE(0, 10);
3657             DWORD       FECSCCOffsetOut3 : BITFIELD_RANGE(11, 21);
3658         DWORD: BITFIELD_RANGE(22, 31);
3659         };
3660         struct
3661         {
3662             DWORD       Value;
3663         };
3664     } DW96;
3665 
3666     // Padding for 32-byte alignment, VEBOX_IECP_STATE_G8 is 97 DWORDs
3667     DWORD dwPad[7];
3668 } VEBOX_IECP_STATE_G8, *PVEBOX_IECP_STATE_G8;
3669 
3670 typedef struct _VEBOX_CAPTURE_PIPE_STATE_G8
3671 {
3672     // DWORD 0
3673     union
3674     {
3675         struct
3676         {
3677             DWORD       BadAvgMinCostTh : 8; // U8
3678             DWORD       THColorTh : 8; // U8
3679             DWORD       ScaleForAvgMinCost : 4; // U4
3680             DWORD       ShiftMinCost : 3; // U3
3681         DWORD: 1; // Reserved
3682             DWORD       GoodPixelTh : 6; // U6
3683         DWORD: 2; // Reserved
3684         };
3685         struct
3686         {
3687             DWORD       Value;
3688         };
3689     } DW0;
3690 
3691     // DWORD 1
3692     union
3693     {
3694         struct
3695         {
3696             DWORD       BadTH3 : 4; // U4
3697         DWORD: 4; // Reserved
3698             DWORD       BadTH2 : 8; // U8
3699             DWORD       BadTH1 : 8; // U8
3700         DWORD: 4; // Reserved
3701             DWORD       ScaleForMinCost : 4; // U4
3702         };
3703         struct
3704         {
3705             DWORD       Value;
3706         };
3707     } DW1;
3708 
3709     // DWORD 2
3710     union
3711     {
3712         struct
3713         {
3714         DWORD: 8; // Reserved
3715             DWORD       UVThresholdValue : 8; // U8
3716             DWORD       YOutlierValue : 8; // U8
3717             DWORD       YBrightValue : 8; // U8
3718         };
3719         struct
3720         {
3721             DWORD       Value;
3722         };
3723     } DW2;
3724 
3725     // Padding for 32-byte alignment, VEBOX_CAPTURE_PIPE_STATE_G8 is 3 DWORDs
3726     DWORD dwPad[5];
3727 } VEBOX_CAPTURE_PIPE_STATE_G8, *PVEBOX_CAPTURE_PIPE_STATE_G8;
3728 
3729 typedef struct __CM_VEBOX_PARAM_G8
3730 {
3731     PVEBOX_DNDI_STATE_G8          pDndiState;
3732     unsigned char                 padding1[4032];
3733     PVEBOX_IECP_STATE_G8          pIecpState;
3734     unsigned char                 padding2[3680];
3735     PVEBOX_GAMUT_STATE_G75        pGamutState;
3736     unsigned char                 padding3[3936];
3737     PVEBOX_VERTEX_TABLE_G75       pVertexTable;
3738     unsigned char                 padding4[2048];
3739     PVEBOX_CAPTURE_PIPE_STATE_G8 pCapturePipe;
3740 }CM_VEBOX_PARAM_G8, PCM_VEBOX_PARAM_G8;
3741 
3742 #endif // __CM_RT_G8_H__
3743