/* * Copyright (c) 2017, Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ //! //! \file cm_rt_g8.h //! \brief Contains Definitions for CM on Gen 8 //! #ifndef __CM_RT_G8_H__ #define __CM_RT_G8_H__ #define BDW_L3_PLANE_DEFAULT CM_L3_PLANE_DEFAULT #define BDW_L3_PLANE_1 CM_L3_PLANE_1 #define BDW_L3_PLANE_2 CM_L3_PLANE_2 #define BDW_L3_PLANE_3 CM_L3_PLANE_3 #define BDW_L3_PLANE_4 CM_L3_PLANE_4 #define BDW_L3_PLANE_5 CM_L3_PLANE_5 #define BDW_L3_PLANE_6 CM_L3_PLANE_6 #define BDW_L3_PLANE_7 CM_L3_PLANE_7 #define BDW_L3_CONFIG_COUNT 8 #define BDW_SLM_PLANE_DEFAULT = BDW_L3_PLANE_5 static const L3ConfigRegisterValues BDW_L3_PLANE[BDW_L3_CONFIG_COUNT] = { // SLM URB Rest DC RO I/S C T Sum ( BDW GT2; for GT1, half of the values; for GT3, double the values ) { 0, 0, 0, 0x60000060 }, //{ 0, 384, 384, 0, 0, 0, 0, 0, 768}, { 0, 0, 0, 0x00410060 }, //{ 0, 384, 0, 128, 256, 0, 0, 0, 768}, { 0, 0, 0, 0x00418040 }, //{ 0, 256, 0, 128, 384, 0, 0, 0, 768}, { 0, 0, 0, 0x00020040 }, //{ 0, 256, 0, 0, 512, 0, 0, 0, 768}, { 0, 0, 0, 0x80000040 }, //{ 0, 256, 512, 0, 0, 0, 0, 0, 768}, { 0, 0, 0, 0x60000021 }, //{192, 128, 384, 0, 0, 0, 0, 0, 768}, { 0, 0, 0, 0x00410021 }, //{192, 128, 0, 128, 256, 0, 0, 0, 768}, { 0, 0, 0, 0x00808021 } //{192, 128, 0, 256, 128, 0, 0, 0, 768} }; // Defined in vol2b "Media" typedef struct _VEBOX_DNDI_STATE_G75 { // DWORD 0 union { struct { DWORD DWordLength : 12; DWORD : 4; DWORD InstructionSubOpcodeB : 5; DWORD InstructionSubOpcodeA : 3; DWORD InstructionOpcode : 3; DWORD InstructionPipeline : 2; DWORD CommandType : 3; }; struct { DWORD Value; }; } DW0; // DWORD 1 union { struct { DWORD DenoiseASDThreshold : 8; // U8 DWORD DnmhDelta : 4; // UINT4 DWORD : 4; // Reserved DWORD DnmhHistoryMax : 8; // U8 DWORD DenoiseSTADThreshold : 8; // U8 }; struct { DWORD Value; }; } DW1; // DWORD 2 union { struct { DWORD SCMDenoiseThreshold : 8; // U8 DWORD DenoiseMovingPixelThreshold : 5; // U5 DWORD STMMC2 : 3; // U3 DWORD LowTemporalDifferenceThreshold : 6; // U6 DWORD : 2; // Reserved DWORD TemporalDifferenceThreshold : 6; // U6 DWORD : 2; // Reserved }; struct { DWORD Value; }; } DW2; // DWORD 3 union { struct { DWORD BlockNoiseEstimateNoiseThreshold : 8; // U8 DWORD BneEdgeTh : 4; // UINT4 DWORD : 2; // Reserved DWORD SmoothMvTh : 2; // U2 DWORD SADTightTh : 4; // U4 DWORD CATSlopeMinus1 : 4; // U4 DWORD GoodNeighborThreshold : 6; // UINT6 DWORD : 2; // Reserved }; struct { DWORD Value; }; } DW3; // DWORD 4 union { struct { DWORD MaximumSTMM : 8; // U8 DWORD MultiplierforVECM : 6; // U6 DWORD : 2; DWORD BlendingConstantForSmallSTMM : 8; // U8 DWORD BlendingConstantForLargeSTMM : 7; // U7 DWORD STMMBlendingConstantSelect : 1; // U1 }; struct { DWORD Value; }; } DW4; // DWORD 5 union { struct { DWORD SDIDelta : 8; // U8 DWORD SDIThreshold : 8; // U8 DWORD STMMOutputShift : 4; // U4 DWORD STMMShiftUp : 2; // U2 DWORD STMMShiftDown : 2; // U2 DWORD MinimumSTMM : 8; // U8 }; struct { DWORD Value; }; } DW5; // DWORD 6 union { struct { DWORD FMDTemporalDifferenceThreshold : 8; // U8 DWORD SDIFallbackMode2Constant : 8; // U8 DWORD SDIFallbackMode1T2Constant : 8; // U8 DWORD SDIFallbackMode1T1Constant : 8; // U8 }; struct { DWORD Value; }; } DW6; // DWORD 7 union { struct { DWORD : 3; // Reserved DWORD DNDITopFirst : 1; // Enable DWORD : 2; // Reserved DWORD ProgressiveDN : 1; // Enable DWORD MCDIEnable : 1; DWORD FMDTearThreshold : 6; // U6 DWORD CATTh1 : 2; // U2 DWORD FMD2VerticalDifferenceThreshold : 8; // U8 DWORD FMD1VerticalDifferenceThreshold : 8; // U8 }; struct { DWORD Value; }; } DW7; // DWORD 8 union { struct { DWORD SADTHA : 4; // U4 DWORD SADTHB : 4; // U4 DWORD FMDFirstFieldCurrentFrame : 2; // U2 DWORD MCPixelConsistencyTh : 6; // U6 DWORD FMDSecondFieldPreviousFrame : 2; // U2 DWORD : 1; // Reserved DWORD NeighborPixelTh : 4; // U4 DWORD DnmhHistoryInit : 6; // U6 DWORD : 3; // Reserved }; struct { DWORD Value; }; } DW8; // DWORD 9 union { struct { DWORD ChromaLTDThreshold : 6; // U6 DWORD ChromaTDTheshold : 6; // U6 DWORD ChromaDenoiseEnable : 1; // Enable DWORD : 3; // Reserved DWORD ChromaDnSTADThreshold : 8; // U8 DWORD : 8; // Reserved }; struct { DWORD Value; }; } DW9; // Padding for 32-byte alignment, VEBOX_DNDI_STATE_G75 is 10 DWORDs DWORD dwPad[6]; } VEBOX_DNDI_STATE_G75, *PVEBOX_DNDI_STATE_G75; // Defined in vol2b "Media" typedef struct _VEBOX_IECP_STATE_G75 { // STD/STE state // DWORD 0 union { struct { DWORD STDEnable : 1; DWORD STEEnable : 1; DWORD OutputCtrl : 1; DWORD : 1; DWORD SatMax : 6; // U6; DWORD HueMax : 6; // U6; DWORD UMid : 8; // U8; DWORD VMid : 8; // U8; }; struct { DWORD Value; }; } DW0; // DWORD 1 union { struct { DWORD SinAlpha : 8; // S0.7 DWORD : 2; DWORD CosAlpha : 8; // S0.7 DWORD HSMargin : 3; // U3 DWORD DiamondDu : 7; // S7 DWORD DiamondMargin : 3; // U3 DWORD : 1; }; struct { DWORD Value; }; } DW1; // DWORD 2 union { struct { DWORD DiamondDv : 7; // S7 DWORD DiamondTh : 6; // U6 DWORD DiamondAlpha : 8; // U2.6 DWORD : 11; }; struct { DWORD Value; }; } DW2; // DWORD 3 union { struct { DWORD : 7; DWORD VYSTDEnable : 1; DWORD YPoint1 : 8; // U8 DWORD YPoint2 : 8; // U8 DWORD YPoint3 : 8; // U8 }; struct { DWORD Value; }; } DW3; // DWORD 4 union { struct { DWORD YPoint4 : 8; // U8 DWORD YSlope1 : 5; // U2.3 DWORD YSlope2 : 5; // U2.3 DWORD : 14; }; struct { DWORD Value; }; } DW4; // DWORD 5 union { struct { DWORD INVMarginVYL : 16; // U0.16 DWORD INVSkinTypesMargin : 16; // U0.16 }; struct { DWORD Value; }; } DW5; // DWORD 6 union { struct { DWORD INVMarginVYU : 16; // U0.16 DWORD P0L : 8; // U8 DWORD P1L : 8; // U8 }; struct { DWORD Value; }; } DW6; // DWORD 7 union { struct { DWORD P2L : 8; // U8 DWORD P3L : 8; // U8 DWORD B0L : 8; // U8 DWORD B1L : 8; // U8 }; struct { DWORD Value; }; } DW7; // DWORD 8 union { struct { DWORD B2L : 8; // U8 DWORD B3L : 8; // U8 DWORD S0L : 11; // S2.8 DWORD : 5; }; struct { DWORD Value; }; } DW8; // DWORD 9 union { struct { DWORD S1L : 11; // S2.8 DWORD S2L : 11; // S2.8 DWORD : 10; }; struct { DWORD Value; }; } DW9; // DWORD 10 union { struct { DWORD S3L : 11; // S2.8 DWORD P0U : 8; // U8 DWORD P1U : 8; // U8 DWORD : 5; }; struct { DWORD Value; }; } DW10; // DWORD 11 union { struct { DWORD P2U : 8; // U8 DWORD P3U : 8; // U8 DWORD B0U : 8; // U8 DWORD B1U : 8; // U8 }; struct { DWORD Value; }; } DW11; // DWORD 12 union { struct { DWORD B2U : 8; // U8 DWORD B3U : 8; // U8 DWORD S0U : 11; // S2.8 DWORD : 5; }; struct { DWORD Value; }; } DW12; // DWORD 13 union { struct { DWORD S1U : 11; // S2.8 DWORD S2U : 11; // S2.8 DWORD : 10; }; struct { DWORD Value; }; } DW13; // DWORD 14 union { struct { DWORD S3U : 11; // S2.8 DWORD SkinTypesEnable : 1; DWORD SkinTypesThresh : 8; // U8 DWORD SkinTypesMargin : 8; // U8 DWORD : 4; }; struct { DWORD Value; }; } DW14; // DWORD 15 union { struct { DWORD SATP1 : 7; // S6 DWORD SATP2 : 7; // S6 DWORD SATP3 : 7; // S6 DWORD SATB1 : 10; // S7.2 DWORD : 1; }; struct { DWORD Value; }; } DW15; // DWORD 16 union { struct { DWORD SATB2 : 10; // S7.2 DWORD SATB3 : 10; // S7.2 DWORD SATS0 : 11; // U3.8 DWORD : 1; }; struct { DWORD Value; }; } DW16; // DWORD 17 union { struct { DWORD SATS1 : 11; // U3.8 DWORD SATS2 : 11; // U3.8 DWORD : 10; }; struct { DWORD Value; }; } DW17; // DWORD 18 union { struct { DWORD SATS3 : 11; // U3.8 DWORD HUEP1 : 7; // U3.8 DWORD HUEP2 : 7; // U3.8 DWORD HUEP3 : 7; // U3.8 }; struct { DWORD Value; }; } DW18; // DWORD 19 union { struct { DWORD HUEB1 : 10; // S7.2 DWORD HUEB2 : 10; // S7.2 DWORD HUEB3 : 10; // S7.2 DWORD : 2; }; struct { DWORD Value; }; } DW19; // DWORD 20 union { struct { DWORD HUES0 : 11; // U3.8 DWORD HUES1 : 11; // U3.8 DWORD : 10; }; struct { DWORD Value; }; } DW20; // DWORD 21 union { struct { DWORD HUES2 : 11; // U3.8 DWORD HUES3 : 11; // U3.8 DWORD : 10; }; struct { DWORD Value; }; } DW21; // DWORD 22 union { struct { DWORD SATP1DARK : 7; // S6 DWORD SATP2DARK : 7; // S6 DWORD SATP3DARK : 7; // S6 DWORD SATB1DARK : 10; // S7.2 DWORD : 1; }; struct { DWORD Value; }; } DW22; // DWORD 23 union { struct { DWORD SATB2DARK : 10; // S7.2 DWORD SATB3DARK : 10; // S7.2 DWORD SATS0DARK : 11; // U3.8 DWORD : 1; }; struct { DWORD Value; }; } DW23; // DWORD 24 union { struct { DWORD SATS1DARK : 11; // U3.8 DWORD SATS2DARK : 11; // U3.8 DWORD : 10; }; struct { DWORD Value; }; } DW24; // DWORD 25 union { struct { DWORD SATS3DARK : 11; // U3.8 DWORD HUEP1DARK : 7; // S6 DWORD HUEP2DARK : 7; // S6 DWORD HUEP3DARK : 7; // S6 }; struct { DWORD Value; }; } DW25; // DWORD 26 union { struct { DWORD HUEB1DARK : 10; // S7.2 DWORD HUEB2DARK : 10; // S7.2 DWORD HUEB3DARK : 10; // S7.2 DWORD : 2; }; struct { DWORD Value; }; } DW26; // DWORD 27 union { struct { DWORD HUES0DARK : 11; // U3.8 DWORD HUES1DARK : 11; // U3.8 DWORD : 10; }; struct { DWORD Value; }; } DW27; // DWORD 28 union { struct { DWORD HUES2DARK : 11; // U3.8 DWORD HUES3DARK : 11; // U3.8 DWORD : 10; }; struct { DWORD Value; }; } DW28; // DWORD 29 union { struct { DWORD ACEEnable : 1; DWORD FullImageHistogram : 1; DWORD SkinThreshold : 5; // U5 DWORD : 25; }; struct { DWORD Value; }; } DW29; // DWORD 30 union { struct { DWORD Ymin : 8; DWORD Y1 : 8; DWORD Y2 : 8; DWORD Y3 : 8; }; struct { DWORD Value; }; } DW30; // DWORD 31 union { struct { DWORD Y4 : 8; DWORD Y5 : 8; DWORD Y6 : 8; DWORD Y7 : 8; }; struct { DWORD Value; }; } DW31; // DWORD 32 union { struct { DWORD Y8 : 8; DWORD Y9 : 8; DWORD Y10 : 8; DWORD Ymax : 8; }; struct { DWORD Value; }; } DW32; // DWORD 33 union { struct { DWORD B1 : 8; // U8 DWORD B2 : 8; // U8 DWORD B3 : 8; // U8 DWORD B4 : 8; // U8 }; struct { DWORD Value; }; } DW33; // DWORD 34 union { struct { DWORD B5 : 8; // U8 DWORD B6 : 8; // U8 DWORD B7 : 8; // U8 DWORD B8 : 8; // U8 }; struct { DWORD Value; }; } DW34; // DWORD 35 union { struct { DWORD B9 : 8; // U8 DWORD B10 : 8; // U8 DWORD : 16; }; struct { DWORD Value; }; } DW35; // DWORD 36 union { struct { DWORD S0 : 11; // U11 DWORD : 5; DWORD S1 : 11; // U11 DWORD : 5; }; struct { DWORD Value; }; } DW36; // DWORD 37 union { struct { DWORD S2 : 11; // U11 DWORD : 5; DWORD S3 : 11; // U11 DWORD : 5; }; struct { DWORD Value; }; } DW37; // DWORD 38 union { struct { DWORD S4 : 11; // U11 DWORD : 5; DWORD S5 : 11; // U11 DWORD : 5; }; struct { DWORD Value; }; } DW38; // DWORD 39 union { struct { DWORD S6 : 11; // U11 DWORD : 5; DWORD S7 : 11; // U11 DWORD : 5; }; struct { DWORD Value; }; } DW39; // DWORD 40 union { struct { DWORD S8 : 11; // U11 DWORD : 5; DWORD S9 : 11; // U11 DWORD : 5; }; struct { DWORD Value; }; } DW40; // DWORD 41 union { struct { DWORD S10 : 11; // U11 DWORD : 21; }; struct { DWORD Value; }; } DW41; // TCC State // DWORD 42 union { struct { DWORD : 7; DWORD TCCEnable : 1; DWORD SatFactor1 : 8; // U8 DWORD SatFactor2 : 8; // U8 DWORD SatFactor3 : 8; // U8 }; struct { DWORD Value; }; } DW42; // DWORD 43 union { struct { DWORD : 8; DWORD SatFactor4 : 8; // U8 DWORD SatFactor5 : 8; // U8 DWORD SatFactor6 : 8; // U8 }; struct { DWORD Value; }; } DW43; // DWORD 44 union { struct { DWORD BaseColor1 : 10; // U10 DWORD BaseColor2 : 10; // U10 DWORD BaseColor3 : 10; // U10 DWORD : 2; }; struct { DWORD Value; }; } DW44; // DWORD 45 union { struct { DWORD BaseColor4 : 10; // U10 DWORD BaseColor5 : 10; // U10 DWORD BaseColor6 : 10; // U10 DWORD : 2; }; struct { DWORD Value; }; } DW45; // DWORD 46 union { struct { DWORD ColorTransitSlope12 : 16; // U16 DWORD ColorTransitSlope23 : 16; // U16 }; struct { DWORD Value; }; } DW46; // DWORD 47 union { struct { DWORD ColorTransitSlope34 : 16; // U16 DWORD ColorTransitSlope45 : 16; // U16 }; struct { DWORD Value; }; } DW47; // DWORD 48 union { struct { DWORD ColorTransitSlope56 : 16; // U16 DWORD ColorTransitSlope61 : 16; // U16 }; struct { DWORD Value; }; } DW48; // DWORD 49 union { struct { DWORD : 2; DWORD ColorBias1 : 10; // U10 DWORD ColorBias2 : 10; // U10 DWORD ColorBias3 : 10; // U10 }; struct { DWORD Value; }; } DW49; // DWORD 50 union { struct { DWORD : 2; DWORD ColorBias4 : 10; // U10 DWORD ColorBias5 : 10; // U10 DWORD ColorBias6 : 10; // U10 }; struct { DWORD Value; }; } DW50; // DWORD 51 union { struct { DWORD STESlopeBits : 3; // U3 DWORD : 5; DWORD STEThreshold : 5; // U5 DWORD : 3; DWORD UVThresholdBits : 3; // U5 DWORD : 5; DWORD UVThreshold : 7; // U7 DWORD : 1; }; struct { DWORD Value; }; } DW51; // DWORD 52 union { struct { DWORD UVMaxColor : 9; // U9 DWORD : 7; DWORD InvUVMaxColor : 16; // U16 }; struct { DWORD Value; }; } DW52; // ProcAmp // DWORD 53 union { struct { DWORD ProcAmpEnable : 1; DWORD Brightness : 12; // S7.4 DWORD : 4; DWORD Contrast : 11; // U7.4 DWORD : 4; }; struct { DWORD Value; }; } DW53; // DWORD 54 union { struct { DWORD SINCS : 16; // S7.8 DWORD COSCS : 16; // S7.8 }; struct { DWORD Value; }; } DW54; // CSC State // DWORD 55 union { struct { DWORD TransformEnable : 1; DWORD YUVChannelSwap : 1; DWORD : 1; DWORD C0 : 13; // S2.10 DWORD C1 : 13; // S2.10 DWORD : 3; }; struct { DWORD Value; }; } DW55; // DWORD 56 union { struct { DWORD C2 : 13; // S2.10 DWORD C3 : 13; // S2.10 DWORD : 6; }; struct { DWORD Value; }; } DW56; // DWORD 57 union { struct { DWORD C4 : 13; // S2.10 DWORD C5 : 13; // S2.10 DWORD : 6; }; struct { DWORD Value; }; } DW57; // DWORD 58 union { struct { DWORD C6 : 13; // S2.10 DWORD C7 : 13; // S2.10 DWORD : 6; }; struct { DWORD Value; }; } DW58; // DWORD 59 union { struct { DWORD C8 : 13; // S2.10 DWORD : 19; }; struct { DWORD Value; }; } DW59; // DWORD 60 union { struct { DWORD OffsetIn1 : 11; // S8.2 DWORD OffsetOut1 : 11; // S8.2 DWORD : 10; }; struct { DWORD Value; }; } DW60; // DWORD 61 union { struct { DWORD OffsetIn2 : 11; // S8.2 DWORD OffsetOut2 : 11; // S8.2 DWORD : 10; }; struct { DWORD Value; }; } DW61; // DWORD 62 union { struct { DWORD OffsetIn3 : 11; // S8.2 DWORD OffsetOut3 : 11; // S8.2 DWORD : 10; }; struct { DWORD Value; }; } DW62; // DWORD 63 union { struct { DWORD ColorPipeAlpha : 12; // U12 DWORD : 4; DWORD AlphaFromStateSelect : 1; DWORD : 15; }; struct { DWORD Value; }; } DW63; // Area of Interest // DWORD 64 union { struct { DWORD AOIMinX : 16; // U16 DWORD AOIMaxX : 16; // U16 }; struct { DWORD Value; }; } DW64; // DWORD 65 union { struct { DWORD AOIMinY : 16; // U16 DWORD AOIMaxY : 16; // U16 }; struct { DWORD Value; }; } DW65; // Padding for 32-byte alignment, VEBOX_IECP_STATE_G75 is 66 DWORDs DWORD dwPad[6]; } VEBOX_IECP_STATE_G75, *PVEBOX_IECP_STATE_G75; // Defined in vol2b "Media" typedef struct _VEBOX_GAMUT_STATE_G75 { // GEC State // DWORD 0 union { struct { DWORD WeightingFactorForGainFactor : 10; DWORD : 5; DWORD GlobalModeEnable : 1; DWORD GainFactorR : 9; DWORD : 7; }; struct { DWORD Value; }; } DW0; // DWORD 1 union { struct { DWORD GainFactorB : 7; DWORD : 1; DWORD GainFactorG : 7; DWORD : 1; DWORD AccurateColorComponentScaling : 10; DWORD : 6; }; struct { DWORD Value; }; } DW1; // DWORD 2 union { struct { DWORD RedOffset : 8; DWORD AccurateColorComponentOffset : 8; DWORD RedScaling : 10; DWORD : 6; }; struct { DWORD Value; }; } DW2; // 3x3 Transform Coefficient // DWORD 3 union { struct { DWORD C0Coeff : 15; DWORD : 1; DWORD C1Coeff : 15; DWORD : 1; }; struct { DWORD Value; }; } DW3; // DWORD 4 union { struct { DWORD C2Coeff : 15; DWORD : 1; DWORD C3Coeff : 15; DWORD : 1; }; struct { DWORD Value; }; } DW4; // DWORD 5 union { struct { DWORD C4Coeff : 15; DWORD : 1; DWORD C5Coeff : 15; DWORD : 1; }; struct { DWORD Value; }; } DW5; // DWORD 6 union { struct { DWORD C6Coeff : 15; DWORD : 1; DWORD C7Coeff : 15; DWORD : 1; }; struct { DWORD Value; }; } DW6; // DWORD 7 union { struct { DWORD C8Coeff : 15; DWORD : 17; }; struct { DWORD Value; }; } DW7; // PWL Values for Gamma Correction // DWORD 8 union { struct { DWORD PWLGammaPoint1 : 8; DWORD PWLGammaPoint2 : 8; DWORD PWLGammaPoint3 : 8; DWORD PWLGammaPoint4 : 8; }; struct { DWORD Value; }; } DW8; // DWORD 9 union { struct { DWORD PWLGammaPoint5 : 8; DWORD PWLGammaPoint6 : 8; DWORD PWLGammaPoint7 : 8; DWORD PWLGammaPoint8 : 8; }; struct { DWORD Value; }; } DW9; // DWORD 10 union { struct { DWORD PWLGammaPoint9 : 8; DWORD PWLGammaPoint10 : 8; DWORD PWLGammaPoint11 : 8; DWORD : 8; }; struct { DWORD Value; }; } DW10; // DWORD 11 union { struct { DWORD PWLGammaBias1 : 8; DWORD PWLGammaBias2 : 8; DWORD PWLGammaBias3 : 8; DWORD PWLGammaBias4 : 8; }; struct { DWORD Value; }; } DW11; // DWORD 12 union { struct { DWORD PWLGammaBias5 : 8; DWORD PWLGammaBias6 : 8; DWORD PWLGammaBias7 : 8; DWORD PWLGammaBias8 : 8; }; struct { DWORD Value; }; } DW12; // DWORD 13 union { struct { DWORD PWLGammaBias9 : 8; DWORD PWLGammaBias10 : 8; DWORD PWLGammaBias11 : 8; DWORD : 8; }; struct { DWORD Value; }; } DW13; // DWORD 14 union { struct { DWORD PWLGammaSlope0 : 12; DWORD : 4; DWORD PWLGammaSlope1 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW14; // DWORD 15 union { struct { DWORD PWLGammaSlope2 : 12; DWORD : 4; DWORD PWLGammaSlope3 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW15; // DWORD 16 union { struct { DWORD PWLGammaSlope4 : 12; DWORD : 4; DWORD PWLGammaSlope5 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW16; // DWORD 17 union { struct { DWORD PWLGammaSlope6 : 12; DWORD : 4; DWORD PWLGammaSlope7 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW17; // DWORD 18 union { struct { DWORD PWLGammaSlope8 : 12; DWORD : 4; DWORD PWLGammaSlope9 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW18; // DWORD 19 union { struct { DWORD PWLGammaSlope10 : 12; DWORD : 4; DWORD PWLGammaSlope11 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW19; // PWL Values for Inverse Gamma Correction // DWORD 20 union { struct { DWORD PWLInvGammaPoint1 : 8; DWORD PWLInvGammaPoint2 : 8; DWORD PWLInvGammaPoint3 : 8; DWORD PWLInvGammaPoint4 : 8; }; struct { DWORD Value; }; } DW20; // DWORD 21 union { struct { DWORD PWLInvGammaPoint5 : 8; DWORD PWLInvGammaPoint6 : 8; DWORD PWLInvGammaPoint7 : 8; DWORD PWLInvGammaPoint8 : 8; }; struct { DWORD Value; }; } DW21; // DWORD 22 union { struct { DWORD PWLInvGammaPoint9 : 8; DWORD PWLInvGammaPoint10 : 8; DWORD PWLInvGammaPoint11 : 8; DWORD : 8; }; struct { DWORD Value; }; } DW22; // DWORD 23 union { struct { DWORD PWLInvGammaBias1 : 8; DWORD PWLInvGammaBias2 : 8; DWORD PWLInvGammaBias3 : 8; DWORD PWLInvGammaBias4 : 8; }; struct { DWORD Value; }; } DW23; // DWORD 24 union { struct { DWORD PWLInvGammaBias5 : 8; DWORD PWLInvGammaBias6 : 8; DWORD PWLInvGammaBias7 : 8; DWORD PWLInvGammaBias8 : 8; }; struct { DWORD Value; }; } DW24; // DWORD 25 union { struct { DWORD PWLInvGammaBias9 : 8; DWORD PWLInvGammaBias10 : 8; DWORD PWLInvGammaBias11 : 8; DWORD : 8; }; struct { DWORD Value; }; } DW25; // DWORD 26 union { struct { DWORD PWLInvGammaSlope0 : 12; DWORD : 4; DWORD PWLInvGammaSlope1 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW26; // DWORD 27 union { struct { DWORD PWLInvGammaSlope2 : 12; DWORD : 4; DWORD PWLInvGammaSlope3 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW27; // DWORD 28 union { struct { DWORD PWLInvGammaSlope4 : 12; DWORD : 4; DWORD PWLInvGammaSlope5 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW28; // DWORD 29 union { struct { DWORD PWLInvGammaSlope6 : 12; DWORD : 4; DWORD PWLInvGammaSlope7 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW29; // DWORD 30 union { struct { DWORD PWLInvGammaSlope8 : 12; DWORD : 4; DWORD PWLInvGammaSlope9 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW30; // DWORD 31 union { struct { DWORD PWLInvGammaSlope10 : 12; DWORD : 4; DWORD PWLInvGammaSlope11 : 12; DWORD : 4; }; struct { DWORD Value; }; } DW31; // Offset value for R, G, B for the Transform // DWORD 32 union { struct { DWORD OffsetInR : 15; DWORD : 1; DWORD OffsetInG : 15; DWORD : 1; }; struct { DWORD Value; }; } DW32; // DWORD 33 union { struct { DWORD OffsetInB : 15; DWORD : 1; DWORD OffsetOutB : 15; DWORD : 1; }; struct { DWORD Value; }; } DW33; // DWORD 34 union { struct { DWORD OffsetOutR : 15; DWORD : 1; DWORD OffsetOutG : 15; DWORD : 1; }; struct { DWORD Value; }; } DW34; // GCC State // DWORD 35 union { struct { DWORD OuterTriangleMappingLengthBelow : 10; // U10 DWORD OuterTriangleMappingLength : 10; // U10 DWORD InnerTriangleMappingLength : 10; // U10 DWORD FullRangeMappingEnable : 1; DWORD : 1; }; struct { DWORD Value; }; } DW35; // DWORD 36 union { struct { DWORD InnerTriangleMappingLengthBelow : 10; // U10 DWORD : 18; DWORD CompressionLineShift : 3; DWORD xvYccDecEncEnable : 1; }; struct { DWORD Value; }; } DW36; // DWORD 37 union { struct { DWORD CpiOverride : 1; DWORD : 10; DWORD BasicModeScalingFactor : 14; DWORD : 4; DWORD LumaChromaOnlyCorrection : 1; DWORD GCCBasicModeSelection : 2; }; struct { DWORD Value; }; } DW37; // Padding for 32-byte alignment, VEBOX_GAMUT_STATE_G75 is 38 DWORDs DWORD dwPad[2]; } VEBOX_GAMUT_STATE_G75, *PVEBOX_GAMUT_STATE_G75; #define CM_NUM_VERTEX_TABLE_ENTRIES_G75 512 // Defined in vol2b "Media" typedef struct _VEBOX_VERTEX_TABLE_ENTRY_G75 { union { struct { DWORD VertexTableEntryCv : 12; DWORD : 4; DWORD VertexTableEntryLv : 12; DWORD : 4; }; struct { DWORD Value; }; }; } VEBOX_VERTEX_TABLE_ENTRY_G75, *PVEBOX_VERTEX_TABLE_ENTRY_G75; // Defined in vol2b "Media" typedef struct _VEBOX_VERTEX_TABLE_G75 { VEBOX_VERTEX_TABLE_ENTRY_G75 VertexTableEntry[CM_NUM_VERTEX_TABLE_ENTRIES_G75]; } VEBOX_VERTEX_TABLE_G75, *PVEBOX_VERTEX_TABLE_G75; typedef struct _VEBOX_DNDI_STATE_G8 { // DWORD 0 union { struct { DWORD DenoiseASDThreshold : 8; // U8 DWORD DnmhDelta : 4; // UINT4 DWORD: 4; // Reserved DWORD DnmhHistoryMax : 8; // U8 DWORD DenoiseSTADThreshold : 8; // U8 }; struct { DWORD Value; }; } DW0; // DWORD 1 union { struct { DWORD SCMDenoiseThreshold : 8; // U8 DWORD DenoiseMovingPixelThreshold : 5; // U5 DWORD STMMC2 : 3; // U3 DWORD LowTemporalDifferenceThreshold : 6; // U6 DWORD: 2; // Reserved DWORD TemporalDifferenceThreshold : 6; // U6 DWORD: 2; // Reserved }; struct { DWORD Value; }; } DW1; // DWORD 2 union { struct { DWORD BlockNoiseEstimateNoiseThreshold : 8; // U8 DWORD BneEdgeTh : 4; // UINT4 DWORD: 2; // Reserved DWORD SmoothMvTh : 2; // U2 DWORD SADTightTh : 4; // U4 DWORD CATSlopeMinus1 : 4; // U4 DWORD GoodNeighborThreshold : 6; // UINT6 DWORD: 2; // Reserved }; struct { DWORD Value; }; } DW2; // DWORD 3 union { struct { DWORD MaximumSTMM : 8; // U8 DWORD MultiplierforVECM : 6; // U6 DWORD: 2; DWORD BlendingConstantForSmallSTMM : 8; // U8 DWORD BlendingConstantForLargeSTMM : 7; // U7 DWORD STMMBlendingConstantSelect : 1; // U1 }; struct { DWORD Value; }; } DW3; // DWORD 4 union { struct { DWORD SDIDelta : 8; // U8 DWORD SDIThreshold : 8; // U8 DWORD STMMOutputShift : 4; // U4 DWORD STMMShiftUp : 2; // U2 DWORD STMMShiftDown : 2; // U2 DWORD MinimumSTMM : 8; // U8 }; struct { DWORD Value; }; } DW4; // DWORD 5 union { struct { DWORD FMDTemporalDifferenceThreshold : 8; // U8 DWORD SDIFallbackMode2Constant : 8; // U8 DWORD SDIFallbackMode1T2Constant : 8; // U8 DWORD SDIFallbackMode1T1Constant : 8; // U8 }; struct { DWORD Value; }; } DW5; // DWORD 6 union { struct { DWORD: 3; // Reserved DWORD DNDITopFirst : 1; // Enable DWORD: 2; // Reserved DWORD ProgressiveDN : 1; // Enable DWORD MCDIEnable : 1; DWORD FMDTearThreshold : 6; // U6 DWORD CATTh1 : 2; // U2 DWORD FMD2VerticalDifferenceThreshold : 8; // U8 DWORD FMD1VerticalDifferenceThreshold : 8; // U8 }; struct { DWORD Value; }; } DW6; // DWORD 7 union { struct { DWORD SADTHA : 4; // U4 DWORD SADTHB : 4; // U4 DWORD FMDFirstFieldCurrentFrame : 2; // U2 DWORD MCPixelConsistencyTh : 6; // U6 DWORD FMDSecondFieldPreviousFrame : 2; // U2 DWORD: 1; // Reserved DWORD NeighborPixelTh : 4; // U4 DWORD DnmhHistoryInit : 6; // U6 DWORD: 3; // Reserved }; struct { DWORD Value; }; } DW7; // DWORD 8 union { struct { DWORD ChromaLTDThreshold : 6; // U6 DWORD ChromaTDTheshold : 6; // U6 DWORD ChromaDenoiseEnable : 1; // Enable DWORD: 3; // Reserved DWORD ChromaDnSTADThreshold : 8; // U8 DWORD: 8; // Reserved }; struct { DWORD Value; }; } DW8; // DWORD 9 union { struct { DWORD HotPixelThreshold : 8; DWORD HotPixelCount : 4; DWORD: 20; // Reserved }; struct { DWORD Value; }; } DW9; // Padding for 32-byte alignment, VEBOX_DNDI_STATE_G8 is 10 DWORDs DWORD dwPad[6]; } VEBOX_DNDI_STATE_G8, *PVEBOX_DNDI_STATE_G8; // Defined in vol2b "Media" typedef struct _VEBOX_IECP_STATE_G8 { // STD/STE state // DWORD 0 union { struct { DWORD STDEnable : BITFIELD_BIT(0); DWORD STEEnable : BITFIELD_BIT(1); DWORD OutputCtrl : BITFIELD_BIT(2); DWORD: BITFIELD_BIT(3); DWORD SatMax : BITFIELD_RANGE(4, 9); // U6; DWORD HueMax : BITFIELD_RANGE(10, 15); // U6; DWORD UMid : BITFIELD_RANGE(16, 23); // U8; DWORD VMid : BITFIELD_RANGE(24, 31); // U8; }; struct { DWORD Value; }; } DW0; // DWORD 1 union { struct { DWORD SinAlpha : BITFIELD_RANGE(0, 7); // S0.7 DWORD: BITFIELD_RANGE(8, 9); DWORD CosAlpha : BITFIELD_RANGE(10, 17); // S0.7 DWORD HSMargin : BITFIELD_RANGE(18, 20); // U3 DWORD DiamondDu : BITFIELD_RANGE(21, 27); // S7 DWORD DiamondMargin : BITFIELD_RANGE(28, 30); // U3 DWORD: BITFIELD_BIT(31); }; struct { DWORD Value; }; } DW1; // DWORD 2 union { struct { DWORD DiamondDv : BITFIELD_RANGE(0, 6); // S8.0 DWORD DiamondTh : BITFIELD_RANGE(7, 12); // U6 DWORD DiamondAlpha : BITFIELD_RANGE(13, 20); // U1.6 DWORD: BITFIELD_RANGE(21, 31); }; struct { DWORD Value; }; } DW2; // DWORD 3 union { struct { DWORD: BITFIELD_RANGE(0, 6); DWORD VYSTDEnable : BITFIELD_BIT(7); DWORD YPoint1 : BITFIELD_RANGE(8, 15); // U8 DWORD YPoint2 : BITFIELD_RANGE(16, 23); // U8 DWORD YPoint3 : BITFIELD_RANGE(24, 31); // U8 }; struct { DWORD Value; }; } DW3; // DWORD 4 union { struct { DWORD YPoint4 : BITFIELD_RANGE(0, 7); // U8 DWORD YSlope1 : BITFIELD_RANGE(8, 12); // U2.3 DWORD YSlope2 : BITFIELD_RANGE(13, 17); // U2.3 DWORD: BITFIELD_RANGE(18, 31); }; struct { DWORD Value; }; } DW4; // DWORD 5 union { struct { DWORD INVMarginVYL : BITFIELD_RANGE(0, 15); // U0.16 DWORD INVSkinTypesMargin : BITFIELD_RANGE(16, 31); // U0.16 }; struct { DWORD Value; }; } DW5; // DWORD 6 union { struct { DWORD INVMarginVYU : BITFIELD_RANGE(0, 15); // U0.16 DWORD P0L : BITFIELD_RANGE(16, 23); // U8 DWORD P1L : BITFIELD_RANGE(24, 31); // U8 }; struct { DWORD Value; }; } DW6; // DWORD 7 union { struct { DWORD P2L : BITFIELD_RANGE(0, 7); // U8 DWORD P3L : BITFIELD_RANGE(8, 15); // U8 DWORD B0L : BITFIELD_RANGE(16, 23); // U8 DWORD B1L : BITFIELD_RANGE(24, 31); // U8 }; struct { DWORD Value; }; } DW7; // DWORD 8 union { struct { DWORD B2L : BITFIELD_RANGE(0, 7); // U8 DWORD B3L : BITFIELD_RANGE(8, 15); // U8 DWORD S0L : BITFIELD_RANGE(16, 26); // S2.8 DWORD: BITFIELD_RANGE(27, 31); }; struct { DWORD Value; }; } DW8; // DWORD 9 union { struct { DWORD S1L : BITFIELD_RANGE(0, 10); // S2.8 DWORD S2L : BITFIELD_RANGE(11, 21); // S2.8 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW9; // DWORD 10 union { struct { DWORD S3L : BITFIELD_RANGE(0, 10); // S2.8 DWORD P0U : BITFIELD_RANGE(11, 18); // U8 DWORD P1U : BITFIELD_RANGE(19, 26); // U8 DWORD: BITFIELD_RANGE(27, 31); }; struct { DWORD Value; }; } DW10; // DWORD 11 union { struct { DWORD P2U : BITFIELD_RANGE(0, 7); // U8 DWORD P3U : BITFIELD_RANGE(8, 15); // U8 DWORD B0U : BITFIELD_RANGE(16, 23); // U8 DWORD B1U : BITFIELD_RANGE(24, 31); // U8 }; struct { DWORD Value; }; } DW11; // DWORD 12 union { struct { DWORD B2U : BITFIELD_RANGE(0, 7); // U8 DWORD B3U : BITFIELD_RANGE(8, 15); // U8 DWORD S0U : BITFIELD_RANGE(16, 26); // S2.8 DWORD: BITFIELD_RANGE(27, 31); }; struct { DWORD Value; }; } DW12; // DWORD 13 union { struct { DWORD S1U : BITFIELD_RANGE(0, 10); // S2.8 DWORD S2U : BITFIELD_RANGE(11, 21); // S2.8 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW13; // DWORD 14 union { struct { DWORD S3U : BITFIELD_RANGE(0, 10); // S2.8 DWORD SkinTypesEnable : BITFIELD_BIT(11); DWORD SkinTypesThresh : BITFIELD_RANGE(12, 19); // U8 DWORD SkinTypesMargin : BITFIELD_RANGE(20, 27); // U8 DWORD: BITFIELD_RANGE(28, 31); }; struct { DWORD Value; }; } DW14; // DWORD 15 union { struct { DWORD SATP1 : BITFIELD_RANGE(0, 6); // S6 DWORD SATP2 : BITFIELD_RANGE(7, 13); // S6 DWORD SATP3 : BITFIELD_RANGE(14, 20); // S6 DWORD SATB1 : BITFIELD_RANGE(21, 30); // S2.7 DWORD: BITFIELD_BIT(31); }; struct { DWORD Value; }; } DW15; // DWORD 16 union { struct { DWORD SATB2 : BITFIELD_RANGE(0, 9); // S2.7 DWORD SATB3 : BITFIELD_RANGE(10, 19); // S2.7 DWORD SATS0 : BITFIELD_RANGE(20, 30); // U3.8 DWORD: BITFIELD_BIT(31); }; struct { DWORD Value; }; } DW16; // DWORD 17 union { struct { DWORD SATS1 : BITFIELD_RANGE(0, 10); // U3.8 DWORD SATS2 : BITFIELD_RANGE(11, 21); // U3.8 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW17; // DWORD 18 union { struct { DWORD SATS3 : BITFIELD_RANGE(0, 10); // U3.8 DWORD HUEP1 : BITFIELD_RANGE(11, 17); // U3.8 DWORD HUEP2 : BITFIELD_RANGE(18, 24); // U3.8 DWORD HUEP3 : BITFIELD_RANGE(25, 31); // U3.8 }; struct { DWORD Value; }; } DW18; // DWORD 19 union { struct { DWORD HUEB1 : BITFIELD_RANGE(0, 9); // S2.7 DWORD HUEB2 : BITFIELD_RANGE(10, 19); // S2.7 DWORD HUEB3 : BITFIELD_RANGE(20, 29); // S2.7 DWORD: BITFIELD_RANGE(30, 31); }; struct { DWORD Value; }; } DW19; // DWORD 20 union { struct { DWORD HUES0 : BITFIELD_RANGE(0, 10); // U3.8 DWORD HUES1 : BITFIELD_RANGE(11, 21); // U3.8 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW20; // DWORD 21 union { struct { DWORD HUES2 : BITFIELD_RANGE(0, 10); // U3.8 DWORD HUES3 : BITFIELD_RANGE(11, 21); // U3.8 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW21; // DWORD 22 union { struct { DWORD SATP1DARK : BITFIELD_RANGE(0, 6); // S6 DWORD SATP2DARK : BITFIELD_RANGE(7, 13); // S6 DWORD SATP3DARK : BITFIELD_RANGE(14, 20); // S6 DWORD SATB1DARK : BITFIELD_RANGE(21, 30); // S2.7 DWORD: BITFIELD_BIT(31); }; struct { DWORD Value; }; } DW22; // DWORD 23 union { struct { DWORD SATB2DARK : BITFIELD_RANGE(0, 9); // S2.7 DWORD SATB3DARK : BITFIELD_RANGE(10, 19); // S2.7 DWORD SATS0DARK : BITFIELD_RANGE(20, 30); // U3.8 DWORD: BITFIELD_BIT(31); }; struct { DWORD Value; }; } DW23; // DWORD 24 union { struct { DWORD SATS1DARK : BITFIELD_RANGE(0, 10); // U3.8 DWORD SATS2DARK : BITFIELD_RANGE(11, 21); // U3.8 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW24; // DWORD 25 union { struct { DWORD SATS3DARK : BITFIELD_RANGE(0, 10); // U3.8 DWORD HUEP1DARK : BITFIELD_RANGE(11, 17); // S6 DWORD HUEP2DARK : BITFIELD_RANGE(18, 24); // S6 DWORD HUEP3DARK : BITFIELD_RANGE(25, 31); // S6 }; struct { DWORD Value; }; } DW25; // DWORD 26 union { struct { DWORD HUEB1DARK : BITFIELD_RANGE(0, 9); // S2.7 DWORD HUEB2DARK : BITFIELD_RANGE(10, 19); // S2.7 DWORD HUEB3DARK : BITFIELD_RANGE(20, 29); // S2.7 DWORD: BITFIELD_RANGE(30, 31); }; struct { DWORD Value; }; } DW26; // DWORD 27 union { struct { DWORD HUES0DARK : BITFIELD_RANGE(0, 10); // U3.8 DWORD HUES1DARK : BITFIELD_RANGE(11, 21); // U3.8 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW27; // DWORD 28 union { struct { DWORD HUES2DARK : BITFIELD_RANGE(0, 10); // U3.8 DWORD HUES3DARK : BITFIELD_RANGE(11, 21); // U3.8 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW28; // ACE state // DWORD 29 union { struct { DWORD ACEEnable : BITFIELD_BIT(0); DWORD FullImageHistogram : BITFIELD_BIT(1); DWORD SkinThreshold : BITFIELD_RANGE(2, 6); // U5 DWORD: BITFIELD_RANGE(7, 31); }; struct { DWORD Value; }; } DW29; // DWORD 30 union { struct { DWORD Ymin : BITFIELD_RANGE(0, 7); DWORD Y1 : BITFIELD_RANGE(8, 15); DWORD Y2 : BITFIELD_RANGE(16, 23); DWORD Y3 : BITFIELD_RANGE(24, 31); }; struct { DWORD Value; }; } DW30; // DWORD 31 union { struct { DWORD Y4 : BITFIELD_RANGE(0, 7); DWORD Y5 : BITFIELD_RANGE(8, 15); DWORD Y6 : BITFIELD_RANGE(16, 23); DWORD Y7 : BITFIELD_RANGE(24, 31); }; struct { DWORD Value; }; } DW31; // DWORD 32 union { struct { DWORD Y8 : BITFIELD_RANGE(0, 7); DWORD Y9 : BITFIELD_RANGE(8, 15); DWORD Y10 : BITFIELD_RANGE(16, 23); DWORD Ymax : BITFIELD_RANGE(24, 31); }; struct { DWORD Value; }; } DW32; // DWORD 33 union { struct { DWORD B1 : BITFIELD_RANGE(0, 7); // U8 DWORD B2 : BITFIELD_RANGE(8, 15); // U8 DWORD B3 : BITFIELD_RANGE(16, 23); // U8 DWORD B4 : BITFIELD_RANGE(24, 31); // U8 }; struct { DWORD Value; }; } DW33; // DWORD 34 union { struct { DWORD B5 : BITFIELD_RANGE(0, 7); // U8 DWORD B6 : BITFIELD_RANGE(8, 15); // U8 DWORD B7 : BITFIELD_RANGE(16, 23); // U8 DWORD B8 : BITFIELD_RANGE(24, 31); // U8 }; struct { DWORD Value; }; } DW34; // DWORD 35 union { struct { DWORD B9 : BITFIELD_RANGE(0, 7); // U8 DWORD B10 : BITFIELD_RANGE(8, 15); // U8 DWORD: BITFIELD_RANGE(16, 31); }; struct { DWORD Value; }; } DW35; // DWORD 36 union { struct { DWORD S0 : BITFIELD_RANGE(0, 10); // U11 DWORD: BITFIELD_RANGE(11, 15); DWORD S1 : BITFIELD_RANGE(16, 26); // U11 DWORD: BITFIELD_RANGE(27, 31); }; struct { DWORD Value; }; } DW36; // DWORD 37 union { struct { DWORD S2 : BITFIELD_RANGE(0, 10); // U11 DWORD: BITFIELD_RANGE(11, 15); DWORD S3 : BITFIELD_RANGE(16, 26); // U11 DWORD: BITFIELD_RANGE(27, 31); }; struct { DWORD Value; }; } DW37; // DWORD 38 union { struct { DWORD S4 : BITFIELD_RANGE(0, 10); // U11 DWORD: BITFIELD_RANGE(11, 15); DWORD S5 : BITFIELD_RANGE(16, 26); // U11 DWORD: BITFIELD_RANGE(27, 31); }; struct { DWORD Value; }; } DW38; // DWORD 39 union { struct { DWORD S6 : BITFIELD_RANGE(0, 10); // U11 DWORD: BITFIELD_RANGE(11, 15); DWORD S7 : BITFIELD_RANGE(16, 26); // U11 DWORD: BITFIELD_RANGE(27, 31); }; struct { DWORD Value; }; } DW39; // DWORD 40 union { struct { DWORD S8 : BITFIELD_RANGE(0, 10); // U11 DWORD: BITFIELD_RANGE(11, 15); DWORD S9 : BITFIELD_RANGE(16, 26); // U11 DWORD: BITFIELD_RANGE(27, 31); }; struct { DWORD Value; }; } DW40; // DWORD 41 union { struct { DWORD S10 : BITFIELD_RANGE(0, 10); // U11 DWORD: BITFIELD_RANGE(11, 31); }; struct { DWORD Value; }; } DW41; // TCC State // DWORD 42 union { struct { DWORD: BITFIELD_RANGE(0, 6); DWORD TCCEnable : BITFIELD_BIT(7); DWORD SatFactor1 : BITFIELD_RANGE(8, 15); // U8 DWORD SatFactor2 : BITFIELD_RANGE(16, 23); // U8 DWORD SatFactor3 : BITFIELD_RANGE(24, 31); // U8 }; struct { DWORD Value; }; } DW42; // DWORD 43 union { struct { DWORD: BITFIELD_RANGE(0, 7); DWORD SatFactor4 : BITFIELD_RANGE(8, 15); // U8 DWORD SatFactor5 : BITFIELD_RANGE(16, 23); // U8 DWORD SatFactor6 : BITFIELD_RANGE(24, 31); // U8 }; struct { DWORD Value; }; } DW43; // DWORD 44 union { struct { DWORD BaseColor1 : BITFIELD_RANGE(0, 9); // U10 DWORD BaseColor2 : BITFIELD_RANGE(10, 19); // U10 DWORD BaseColor3 : BITFIELD_RANGE(20, 29); // U10 DWORD: BITFIELD_RANGE(30, 31); }; struct { DWORD Value; }; } DW44; // DWORD 45 union { struct { DWORD BaseColor4 : BITFIELD_RANGE(0, 9); // U10 DWORD BaseColor5 : BITFIELD_RANGE(10, 19); // U10 DWORD BaseColor6 : BITFIELD_RANGE(20, 29); // U10 DWORD: BITFIELD_RANGE(30, 31); }; struct { DWORD Value; }; } DW45; // DWORD 46 union { struct { DWORD ColorTransitSlope12 : BITFIELD_RANGE(0, 15); // U16 DWORD ColorTransitSlope23 : BITFIELD_RANGE(16, 31); // U16 }; struct { DWORD Value; }; } DW46; // DWORD 47 union { struct { DWORD ColorTransitSlope34 : BITFIELD_RANGE(0, 15); // U16 DWORD ColorTransitSlope45 : BITFIELD_RANGE(16, 31); // U16 }; struct { DWORD Value; }; } DW47; // DWORD 48 union { struct { DWORD ColorTransitSlope56 : BITFIELD_RANGE(0, 15); // U16 DWORD ColorTransitSlope61 : BITFIELD_RANGE(16, 31); // U16 }; struct { DWORD Value; }; } DW48; // DWORD 49 union { struct { DWORD: BITFIELD_RANGE(0, 1); DWORD ColorBias1 : BITFIELD_RANGE(2, 11); // U10 DWORD ColorBias2 : BITFIELD_RANGE(12, 21); // U10 DWORD ColorBias3 : BITFIELD_RANGE(22, 31); // U10 }; struct { DWORD Value; }; } DW49; // DWORD 50 union { struct { DWORD: BITFIELD_RANGE(0, 1); DWORD ColorBias4 : BITFIELD_RANGE(2, 11); // U10 DWORD ColorBias5 : BITFIELD_RANGE(12, 21); // U10 DWORD ColorBias6 : BITFIELD_RANGE(22, 31); // U10 }; struct { DWORD Value; }; } DW50; // DWORD 51 union { struct { DWORD STESlopeBits : BITFIELD_RANGE(0, 2); // U3 DWORD: BITFIELD_RANGE(3, 7); DWORD STEThreshold : BITFIELD_RANGE(8, 12); // U5 DWORD: BITFIELD_RANGE(13, 15); DWORD UVThresholdBits : BITFIELD_RANGE(16, 18); // U5 DWORD: BITFIELD_RANGE(19, 23); DWORD UVThreshold : BITFIELD_RANGE(24, 30); // U7 DWORD: BITFIELD_BIT(31); }; struct { DWORD Value; }; } DW51; // DWORD 52 union { struct { DWORD UVMaxColor : BITFIELD_RANGE(0, 8); // U9 DWORD: BITFIELD_RANGE(9, 15); DWORD InvUVMaxColor : BITFIELD_RANGE(16, 31); // U16 }; struct { DWORD Value; }; } DW52; // ProcAmp State // DWORD 53 union { struct { DWORD ProcAmpEnable : BITFIELD_BIT(0); DWORD Brightness : BITFIELD_RANGE(1, 12); // S7.4 DWORD: BITFIELD_RANGE(13, 16); DWORD Contrast : BITFIELD_RANGE(17, 27); // U7.4 DWORD: BITFIELD_RANGE(28, 31); }; struct { DWORD Value; }; } DW53; // DWORD 54 union { struct { DWORD SINCS : BITFIELD_RANGE(0, 15); // S7.8 DWORD COSCS : BITFIELD_RANGE(16, 31); // S7.8 }; struct { DWORD Value; }; } DW54; // CSC State // DWORD 55 union { struct { DWORD TransformEnable : BITFIELD_BIT(0); DWORD YUVChannelSwap : BITFIELD_BIT(1); DWORD: BITFIELD_BIT(2); DWORD C0 : BITFIELD_RANGE(3, 15); // S2.10 DWORD C1 : BITFIELD_RANGE(16, 28); // S2.10 DWORD: BITFIELD_RANGE(29, 31); }; struct { DWORD Value; }; } DW55; // DWORD 56 union { struct { DWORD C2 : BITFIELD_RANGE(0, 12); // S2.10 DWORD C3 : BITFIELD_RANGE(13, 25); // S2.10 DWORD: BITFIELD_RANGE(26, 31); }; struct { DWORD Value; }; } DW56; // DWORD 57 union { struct { DWORD C4 : BITFIELD_RANGE(0, 12); // S2.10 DWORD C5 : BITFIELD_RANGE(13, 25); // S2.10 DWORD: BITFIELD_RANGE(26, 31); }; struct { DWORD Value; }; } DW57; // DWORD 58 union { struct { DWORD C6 : BITFIELD_RANGE(0, 12); // S2.10 DWORD C7 : BITFIELD_RANGE(13, 25); // S2.10 DWORD: BITFIELD_RANGE(26, 31); }; struct { DWORD Value; }; } DW58; // DWORD 59 union { struct { DWORD C8 : BITFIELD_RANGE(0, 12); // S2.10 DWORD: BITFIELD_RANGE(13, 31); }; struct { DWORD Value; }; } DW59; // DWORD 60 union { struct { DWORD OffsetIn1 : BITFIELD_RANGE(0, 10); // S10 DWORD OffsetOut1 : BITFIELD_RANGE(11, 21); // S10 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW60; // DWORD 61 union { struct { DWORD OffsetIn2 : BITFIELD_RANGE(0, 10); // S10 DWORD OffsetOut2 : BITFIELD_RANGE(11, 21); // S10 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW61; // DWORD 62 union { struct { DWORD OffsetIn3 : BITFIELD_RANGE(0, 10); // S10 DWORD OffsetOut3 : BITFIELD_RANGE(11, 21); // S10 DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW62; // DWORD 63 union { struct { DWORD ColorPipeAlpha : BITFIELD_RANGE(0, 11); // U12 DWORD: BITFIELD_RANGE(12, 15); DWORD AlphaFromStateSelect : BITFIELD_BIT(16); DWORD: BITFIELD_RANGE(17, 31); }; struct { DWORD Value; }; } DW63; // Area of Interest // DWORD 64 union { struct { DWORD AOIMinX : BITFIELD_RANGE(0, 15); // U16 DWORD AOIMaxX : BITFIELD_RANGE(16, 31); // U16 }; struct { DWORD Value; }; } DW64; // DWORD 65 union { struct { DWORD AOIMinY : BITFIELD_RANGE(0, 15); // U16 DWORD AOIMaxY : BITFIELD_RANGE(16, 31); // U16 }; struct { DWORD Value; }; } DW65; // Color Correction Matrix // DWORD 66 union { struct { DWORD C1Coeff : BITFIELD_RANGE(0, 20); // S8.12 DWORD: BITFIELD_RANGE(21, 29); DWORD VignetteCorrectionFormat : BITFIELD_BIT(30); DWORD ColorCorrectionMatrixEnable : BITFIELD_BIT(31); }; struct { DWORD Value; }; } DW66; // DWORD 67 union { struct { DWORD C0Coeff : BITFIELD_RANGE(0, 20); // S8.12 DWORD: BITFIELD_RANGE(21, 31); }; struct { DWORD Value; }; } DW67; // DWORD 68 union { struct { DWORD C3Coeff : BITFIELD_RANGE(0, 20); // S8.12 DWORD: BITFIELD_RANGE(21, 31); }; struct { DWORD Value; }; } DW68; // DWORD 69 union { struct { DWORD C2Coeff : BITFIELD_RANGE(0, 20); // S8.12 DWORD: BITFIELD_RANGE(21, 31); }; struct { DWORD Value; }; } DW69; // DWORD 70 union { struct { DWORD C5Coeff : BITFIELD_RANGE(0, 20); // S8.12 DWORD: BITFIELD_RANGE(21, 31); }; struct { DWORD Value; }; } DW70; // DWORD 71 union { struct { DWORD C4Coeff : BITFIELD_RANGE(0, 20); // S8.12 DWORD: BITFIELD_RANGE(21, 31); }; struct { DWORD Value; }; } DW71; // DWORD 72 union { struct { DWORD C7Coeff : BITFIELD_RANGE(0, 20); // S8.12 DWORD: BITFIELD_RANGE(21, 31); }; struct { DWORD Value; }; } DW72; // DWORD 73 union { struct { DWORD C6Coeff : BITFIELD_RANGE(0, 20); // S8.12 DWORD: BITFIELD_RANGE(21, 31); }; struct { DWORD Value; }; } DW73; // DWORD 74 union { struct { DWORD C8Coeff : BITFIELD_RANGE(0, 20); // S8.12 DWORD: BITFIELD_RANGE(21, 31); }; struct { DWORD Value; }; } DW74; // DWORD 75 union { struct { DWORD BlackPointOffsetR : BITFIELD_RANGE(0, 12); // S12 DWORD: BITFIELD_RANGE(13, 31); }; struct { DWORD Value; }; } DW75; // DWORD 76 union { struct { DWORD BlackPointOffsetB : BITFIELD_RANGE(0, 12); // S12 DWORD BlackPointOffsetG : BITFIELD_RANGE(13, 25); // S12 DWORD: BITFIELD_RANGE(26, 31); }; struct { DWORD Value; }; } DW76; // Forward Gamma Correction // DWORD 77 union { struct { DWORD ForwardGammaCorrectionEnable : BITFIELD_BIT(0); DWORD: BITFIELD_RANGE(1, 7); DWORD PWLFwdGammaPoint1 : BITFIELD_RANGE(8, 15); DWORD PWLFwdGammaPoint2 : BITFIELD_RANGE(16, 23); DWORD PWLFwdGammaPoint3 : BITFIELD_RANGE(24, 31); }; struct { DWORD Value; }; } DW77; // DWORD 78 union { struct { DWORD PWLFwdGammaPoint4 : BITFIELD_RANGE(0, 7); DWORD PWLFwdGammaPoint5 : BITFIELD_RANGE(8, 15); DWORD PWLFwdGammaPoint6 : BITFIELD_RANGE(16, 23); DWORD PWLFwdGammaPoint7 : BITFIELD_RANGE(24, 31); }; struct { DWORD Value; }; } DW78; // DWORD 79 union { struct { DWORD PWLFwdGammaPoint8 : BITFIELD_RANGE(0, 7); DWORD PWLFwdGammaPoint9 : BITFIELD_RANGE(8, 15); DWORD PWLFwdGammaPoint10 : BITFIELD_RANGE(16, 23); DWORD PWLFwdGammaPoint11 : BITFIELD_RANGE(24, 31); }; struct { DWORD Value; }; } DW79; // DWORD 80 union { struct { DWORD PWLFwdGammaBias1 : BITFIELD_RANGE(0, 7); DWORD PWLFwdGammaBias2 : BITFIELD_RANGE(8, 15); DWORD PWLFwdGammaBias3 : BITFIELD_RANGE(16, 23); DWORD PWLFwdGammaBias4 : BITFIELD_RANGE(24, 31); }; struct { DWORD Value; }; } DW80; // DWORD 81 union { struct { DWORD PWLFwdGammaBias5 : BITFIELD_RANGE(0, 7); DWORD PWLFwdGammaBias6 : BITFIELD_RANGE(8, 15); DWORD PWLFwdGammaBias7 : BITFIELD_RANGE(16, 23); DWORD PWLFwdGammaBias8 : BITFIELD_RANGE(24, 31); }; struct { DWORD Value; }; } DW81; // DWORD 82 union { struct { DWORD PWLFwdGammaBias9 : BITFIELD_RANGE(0, 7); DWORD PWLFwdGammaBias10 : BITFIELD_RANGE(8, 15); DWORD PWLFwdGammaBias11 : BITFIELD_RANGE(16, 23); DWORD: BITFIELD_RANGE(24, 31); }; struct { DWORD Value; }; } DW82; // DWORD 83 union { struct { DWORD PWLFwdGammaSlope0 : BITFIELD_RANGE(0, 11); // U4.8 DWORD: BITFIELD_RANGE(12, 15); DWORD PWLFwdGammaSlope1 : BITFIELD_RANGE(16, 27); // U4.8 DWORD: BITFIELD_RANGE(28, 31); }; struct { DWORD Value; }; } DW83; // DWORD 84 union { struct { DWORD PWLFwdGammaSlope2 : BITFIELD_RANGE(0, 11); // U4.8 DWORD: BITFIELD_RANGE(12, 15); DWORD PWLFwdGammaSlope3 : BITFIELD_RANGE(16, 27); // U4.8 DWORD: BITFIELD_RANGE(28, 31); }; struct { DWORD Value; }; } DW84; // DWORD 85 union { struct { DWORD PWLFwdGammaSlope4 : BITFIELD_RANGE(0, 11); // U4.8 DWORD: BITFIELD_RANGE(12, 15); DWORD PWLFwdGammaSlope5 : BITFIELD_RANGE(16, 27); // U4.8 DWORD: BITFIELD_RANGE(28, 31); }; struct { DWORD Value; }; } DW85; // DWORD 86 union { struct { DWORD PWLFwdGammaSlope6 : BITFIELD_RANGE(0, 11); // U4.8 DWORD: BITFIELD_RANGE(12, 15); DWORD PWLFwdGammaSlope7 : BITFIELD_RANGE(16, 27); // U4.8 DWORD: BITFIELD_RANGE(28, 31); }; struct { DWORD Value; }; } DW86; // DWORD 87 union { struct { DWORD PWLFwdGammaSlope8 : BITFIELD_RANGE(0, 11); // U4.8 DWORD: BITFIELD_RANGE(12, 15); DWORD PWLFwdGammaSlope9 : BITFIELD_RANGE(16, 27); // U4.8 DWORD: BITFIELD_RANGE(28, 31); }; struct { DWORD Value; }; } DW87; // DWORD 88 union { struct { DWORD PWLFwdGammaSlope10 : BITFIELD_RANGE(0, 11); // U4.8 DWORD: BITFIELD_RANGE(12, 15); DWORD PWLFwdGammaSlope11 : BITFIELD_RANGE(16, 27); // U4.8 DWORD: BITFIELD_RANGE(28, 31); }; struct { DWORD Value; }; } DW88; // Front-End CSC // DWORD 89 union { struct { DWORD FrontEndCSCTransformEnable : BITFIELD_BIT(0); DWORD: BITFIELD_RANGE(1, 2); DWORD FECSCC0Coeff : BITFIELD_RANGE(3, 15); // S2.10 DWORD FECSCC1Coeff : BITFIELD_RANGE(16, 28); // S2.10 DWORD: BITFIELD_RANGE(29, 31); }; struct { DWORD Value; }; } DW89; // DWORD 90 union { struct { DWORD FECSCC2Coeff : BITFIELD_RANGE(0, 12); // S2.10 DWORD FECSCC3Coeff : BITFIELD_RANGE(13, 25); // S2.10 DWORD: BITFIELD_RANGE(26, 31); }; struct { DWORD Value; }; } DW90; // DWORD 91 union { struct { DWORD FECSCC4Coeff : BITFIELD_RANGE(0, 12); // S2.10 DWORD FECSCC5Coeff : BITFIELD_RANGE(13, 25); // S2.10 DWORD: BITFIELD_RANGE(26, 31); }; struct { DWORD Value; }; } DW91; // DWORD 92 union { struct { DWORD FECSCC6Coeff : BITFIELD_RANGE(0, 12); // S2.10 DWORD FECSCC7Coeff : BITFIELD_RANGE(13, 25); // S2.10 DWORD: BITFIELD_RANGE(26, 31); }; struct { DWORD Value; }; } DW92; // DWORD 93 union { struct { DWORD FECSCC8Coeff : BITFIELD_RANGE(0, 12); // S2.10 DWORD: BITFIELD_RANGE(13, 31); }; struct { DWORD Value; }; } DW93; // DWORD 94 union { struct { DWORD FECSCCOffsetIn1 : BITFIELD_RANGE(0, 10); DWORD FECSCCOffsetOut1 : BITFIELD_RANGE(11, 21); DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW94; // DWORD 95 union { struct { DWORD FECSCCOffsetIn2 : BITFIELD_RANGE(0, 10); DWORD FECSCCOffsetOut2 : BITFIELD_RANGE(11, 21); DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW95; // DWORD 96 union { struct { DWORD FECSCCOffsetIn3 : BITFIELD_RANGE(0, 10); DWORD FECSCCOffsetOut3 : BITFIELD_RANGE(11, 21); DWORD: BITFIELD_RANGE(22, 31); }; struct { DWORD Value; }; } DW96; // Padding for 32-byte alignment, VEBOX_IECP_STATE_G8 is 97 DWORDs DWORD dwPad[7]; } VEBOX_IECP_STATE_G8, *PVEBOX_IECP_STATE_G8; typedef struct _VEBOX_CAPTURE_PIPE_STATE_G8 { // DWORD 0 union { struct { DWORD BadAvgMinCostTh : 8; // U8 DWORD THColorTh : 8; // U8 DWORD ScaleForAvgMinCost : 4; // U4 DWORD ShiftMinCost : 3; // U3 DWORD: 1; // Reserved DWORD GoodPixelTh : 6; // U6 DWORD: 2; // Reserved }; struct { DWORD Value; }; } DW0; // DWORD 1 union { struct { DWORD BadTH3 : 4; // U4 DWORD: 4; // Reserved DWORD BadTH2 : 8; // U8 DWORD BadTH1 : 8; // U8 DWORD: 4; // Reserved DWORD ScaleForMinCost : 4; // U4 }; struct { DWORD Value; }; } DW1; // DWORD 2 union { struct { DWORD: 8; // Reserved DWORD UVThresholdValue : 8; // U8 DWORD YOutlierValue : 8; // U8 DWORD YBrightValue : 8; // U8 }; struct { DWORD Value; }; } DW2; // Padding for 32-byte alignment, VEBOX_CAPTURE_PIPE_STATE_G8 is 3 DWORDs DWORD dwPad[5]; } VEBOX_CAPTURE_PIPE_STATE_G8, *PVEBOX_CAPTURE_PIPE_STATE_G8; typedef struct __CM_VEBOX_PARAM_G8 { PVEBOX_DNDI_STATE_G8 pDndiState; unsigned char padding1[4032]; PVEBOX_IECP_STATE_G8 pIecpState; unsigned char padding2[3680]; PVEBOX_GAMUT_STATE_G75 pGamutState; unsigned char padding3[3936]; PVEBOX_VERTEX_TABLE_G75 pVertexTable; unsigned char padding4[2048]; PVEBOX_CAPTURE_PIPE_STATE_G8 pCapturePipe; }CM_VEBOX_PARAM_G8, PCM_VEBOX_PARAM_G8; #endif // __CM_RT_G8_H__