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