/* * 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_g9.h //! \brief Contains Definitions for CM on Gen 9 //! #ifndef __CM_RT_G9_H__ #define __CM_RT_G9_H__ #define SKL_L3_PLANE_DEFAULT CM_L3_PLANE_DEFAULT #define SKL_L3_PLANE_1 CM_L3_PLANE_1 #define SKL_L3_PLANE_2 CM_L3_PLANE_2 #define SKL_L3_PLANE_3 CM_L3_PLANE_3 #define SKL_L3_PLANE_4 CM_L3_PLANE_4 #define SKL_L3_PLANE_5 CM_L3_PLANE_5 #define SKL_L3_PLANE_6 CM_L3_PLANE_6 #define SKL_L3_PLANE_7 CM_L3_PLANE_7 #define SKL_L3_CONFIG_COUNT 8 #define SKL_SLM_PLANE_DEFAULT = SKL_L3_PLANE_5 static const L3ConfigRegisterValues SKL_L3_PLANE[SKL_L3_CONFIG_COUNT] = { // SLM URB Rest DC RO I/S C T Sum {0x00000000, 0x00000000, 0x00000000, 0x60000060}, //{0, 48, 48, 0, 0, 0, 0, 0, 96}, {0x00000000, 0x00000000, 0x00000000,0x00808060}, //{0, 48, 0, 16, 32, 0, 0, 0, 96}, {0x00000000, 0x00000000, 0x00000000,0x00818040}, //{0, 32, 0, 16, 48, 0, 0, 0, 96}, {0x00000000, 0x00000000, 0x00000000,0x00030040}, //{0, 32, 0, 0, 64, 0, 0, 0, 96}, {0x00000000, 0x00000000, 0x00000000,0x80000040}, //{0, 32, 64, 0, 0, 0, 0, 0, 96}, {0x00000000, 0x00000000, 0x00000000,0x60000121}, //{32, 16, 48, 0, 0, 0, 0, 0, 96}, {0x00000000, 0x00000000, 0x00000000,0x00410121}, //{32, 16, 0, 16, 32, 0, 0, 0, 96}, {0x00000000, 0x00000000, 0x00000000,0x00808121} //{32, 16, 0, 32, 16, 0, 0, 0, 96} }; typedef struct _VEBOX_SURFACE_CONTROL_BITS_G9 { // DWORD 0 union { struct { DWORD Reserved0 : BITFIELD_BIT(0); DWORD IndexToMemoryObjectControlStateMocsTables : BITFIELD_RANGE(1, 6); DWORD MemoryCompressionEnable : BITFIELD_BIT(7); DWORD MemoryCompressionMode : BITFIELD_BIT(8); DWORD TiledResourceMode : BITFIELD_RANGE(9, 10); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 31); }; DWORD Value; } DW0; } VEBOX_SURFACE_CONTROL_BITS_G9, *PVEBOX_SURFACE_CONTROL_BITS_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_DNDI_STATE_G9 { // Temporal DN // DWORD 0 union { struct { DWORD DenoiseMovingPixelThreshold : BITFIELD_RANGE(0, 4); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(5, 7); DWORD DenoiseHistoryIncrease : BITFIELD_RANGE(8, 11); DWORD DenoiseMaximumHistory : BITFIELD_RANGE(12, 19); DWORD DenoiseStadThreshold : BITFIELD_RANGE(20, 31); }; DWORD Value; } DW0; // DWORD 1 union { struct { DWORD LowTemporalDifferenceThreshold : BITFIELD_RANGE(0, 9); DWORD TemporalDifferenceThreshold : BITFIELD_RANGE(10, 19); DWORD DenoiseAsdThreshold : BITFIELD_RANGE(20, 31); }; DWORD Value; } DW1; // DWORD 2 union { struct { DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 9); DWORD InitialDenoiseHistory : BITFIELD_RANGE(10, 15); DWORD DenoiseThresholdForSumOfComplexityMeasure : BITFIELD_RANGE(16, 27); DWORD ProgressiveDn : BITFIELD_BIT(28); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31); }; DWORD Value; } DW2; // Global Noise estimate and hot pixel detection // DWORD 3 union { struct { DWORD BlockNoiseEstimateNoiseThreshold : BITFIELD_RANGE(0, 11); DWORD BlockNoiseEstimateEdgeThreshold : BITFIELD_RANGE(12, 19); DWORD HotPixelThreshold : BITFIELD_RANGE(20, 27); DWORD HotPixelCount : BITFIELD_RANGE(28, 31); }; DWORD Value; } DW3; // Chroma DN // DWORD 4 union { struct { DWORD ChromaLowTemporalDifferenceThreshold : BITFIELD_RANGE(0, 5); DWORD ChromaTemporalDifferenceThreshold : BITFIELD_RANGE(6, 11); DWORD ChromaDenoiseEnable : BITFIELD_BIT(12); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15); DWORD ChromaDenoiseStadThreshold : BITFIELD_RANGE(16, 23); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW4; // 5x5 Spatial Denoise // DWORD 5 union { struct { DWORD DnWr0 : BITFIELD_RANGE(0, 4); DWORD DnWr1 : BITFIELD_RANGE(5, 9); DWORD DnWr2 : BITFIELD_RANGE(10, 14); DWORD DnWr3 : BITFIELD_RANGE(15, 19); DWORD DnWr4 : BITFIELD_RANGE(20, 24); DWORD DnWr5 : BITFIELD_RANGE(25, 29); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31); }; DWORD Value; } DW5; // DWORD 6 union { struct { DWORD DnThmin : BITFIELD_RANGE(0, 12); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15); DWORD DnThmax : BITFIELD_RANGE(16, 28); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31); }; DWORD Value; } DW6; // DWORD 7 union { struct { DWORD DnDynThmin : BITFIELD_RANGE(0, 12); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15); DWORD DnPrt5 : BITFIELD_RANGE(16, 28); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31); }; DWORD Value; } DW7; // DWORD 8 union { struct { DWORD DnPrt3 : BITFIELD_RANGE(0, 12); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15); DWORD DnPrt4 : BITFIELD_RANGE(16, 28); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31); }; DWORD Value; } DW8; // DWORD 9 union { struct { DWORD DnPrt1 : BITFIELD_RANGE(0, 12); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15); DWORD DnPrt2 : BITFIELD_RANGE(16, 28); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31); }; DWORD Value; } DW9; // DWORD 10 union { struct { DWORD DnWd20 : BITFIELD_RANGE(0, 4); DWORD DnWd21 : BITFIELD_RANGE(5, 9); DWORD DnWd22 : BITFIELD_RANGE(10, 14); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(15); DWORD DnPrt0 : BITFIELD_RANGE(16, 28); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(29, 31); }; DWORD Value; } DW10; // DWORD 11 union { struct { DWORD DnWd00 : BITFIELD_RANGE(0, 4); DWORD DnWd01 : BITFIELD_RANGE(5, 9); DWORD DnWd02 : BITFIELD_RANGE(10, 14); DWORD DnWd10 : BITFIELD_RANGE(15, 19); DWORD DnWd11 : BITFIELD_RANGE(20, 24); DWORD DnWd12 : BITFIELD_RANGE(25, 29); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31); }; DWORD Value; } DW11; // FMD and DI // DWORD 12 union { struct { DWORD SmoothMvThreshold : BITFIELD_RANGE(0, 1); DWORD SadTightThreshold : BITFIELD_RANGE(2, 5); DWORD ContentAdaptiveThresholdSlope : BITFIELD_RANGE(6, 9); DWORD StmmC2 : BITFIELD_RANGE(10, 12); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 31); }; DWORD Value; } DW12; // DWORD 13 union { struct { DWORD MaximumStmm : BITFIELD_RANGE(0, 7); DWORD MultiplierForVecm : BITFIELD_RANGE(8, 13); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(14, 15); DWORD BlendingConstantAcrossTimeForSmallValuesOfStmm : BITFIELD_RANGE(16, 23); DWORD BlendingConstantAcrossTimeForLargeValuesOfStmm : BITFIELD_RANGE(24, 30); DWORD StmmBlendingConstantSelect : BITFIELD_BIT(31); }; DWORD Value; } DW13; // DWORD 14 union { struct { DWORD SdiDelta : BITFIELD_RANGE(0, 7); DWORD SdiThreshold : BITFIELD_RANGE(8, 15); DWORD StmmOutputShift : BITFIELD_RANGE(16, 19); DWORD StmmShiftUp : BITFIELD_RANGE(20, 21); DWORD StmmShiftDown : BITFIELD_RANGE(22, 23); DWORD MinimumStmm : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW14; // DWORD 15 union { struct { DWORD FmdTemporalDifferenceThreshold : BITFIELD_RANGE(0, 7); DWORD SdiFallbackMode2ConstantAngle2X1 : BITFIELD_RANGE(8, 15); DWORD SdiFallbackMode1T2Constant : BITFIELD_RANGE(16, 23); DWORD SdiFallbackMode1T1Constant : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW15; // DWORD 16 union { struct { DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 2); DWORD DnDiTopFirst : BITFIELD_BIT(3); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(4, 6); DWORD McdiEnable : BITFIELD_BIT(7); DWORD FmdTearThreshold : BITFIELD_RANGE(8, 13); DWORD CatThreshold : BITFIELD_RANGE(14, 15); DWORD Fmd2VerticalDifferenceThreshold : BITFIELD_RANGE(16, 23); DWORD Fmd1VerticalDifferenceThreshold : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW16; // DWORD 17 union { struct { DWORD SadTha : BITFIELD_RANGE(0, 3); DWORD SadThb : BITFIELD_RANGE(4, 7); DWORD FmdFor1StFieldOfCurrentFrame : BITFIELD_RANGE(8, 9); DWORD McPixelConsistencyThreshold : BITFIELD_RANGE(10, 15); DWORD FmdFor2NdFieldOfPreviousFrame : BITFIELD_RANGE(16, 17); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(18); DWORD NeighborPixelThreshold : BITFIELD_RANGE(19, 22); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(23, 31); }; DWORD Value; } DW17; } VEBOX_DNDI_STATE_G9, *PVEBOX_DNDI_STATE_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_STD_STE_STATE_G9 { // DWORD 0 union { struct { DWORD StdEnable : BITFIELD_BIT(0); DWORD SteEnable : BITFIELD_BIT(1); DWORD OutputControl : BITFIELD_BIT(2); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(3); DWORD SatMax : BITFIELD_RANGE(4, 9); DWORD HueMax : BITFIELD_RANGE(10, 15); DWORD UMid : BITFIELD_RANGE(16, 23); DWORD VMid : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW0; // DWORD 1 union { struct { DWORD Sin : BITFIELD_RANGE(0, 7); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(8, 9); DWORD Cos : BITFIELD_RANGE(10, 17); DWORD HsMargin : BITFIELD_RANGE(18, 20); DWORD DiamondDu : BITFIELD_RANGE(21, 27); DWORD DiamondMargin : BITFIELD_RANGE(28, 30); DWORD StdScoreOutput : BITFIELD_BIT(31); }; DWORD Value; } DW1; // DWORD 2 union { struct { DWORD DiamondDv : BITFIELD_RANGE(0, 6); DWORD DiamondTh : BITFIELD_RANGE(7, 12); DWORD DiamondAlpha : BITFIELD_RANGE(13, 20); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(21, 31); }; DWORD Value; } DW2; // DWORD 3 union { struct { DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 6); DWORD VyStdEnable : BITFIELD_BIT(7); DWORD YPoint1 : BITFIELD_RANGE(8, 15); DWORD YPoint2 : BITFIELD_RANGE(16, 23); DWORD YPoint3 : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW3; // DWORD 4 union { struct { DWORD YPoint4 : BITFIELD_RANGE(0, 7); DWORD YSlope1 : BITFIELD_RANGE(8, 12); DWORD YSlope2 : BITFIELD_RANGE(13, 17); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(18, 31); }; DWORD Value; } DW4; // DWORD 5 union { struct { DWORD InvMarginVyl : BITFIELD_RANGE(0, 15); DWORD InvSkinTypesMargin : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW5; // DWORD 6 union { struct { DWORD InvMarginVyu : BITFIELD_RANGE(0, 15); DWORD P0L : BITFIELD_RANGE(16, 23); DWORD P1L : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW6; // DWORD 7 union { struct { DWORD P2L : BITFIELD_RANGE(0, 7); DWORD P3L : BITFIELD_RANGE(8, 15); DWORD B0L : BITFIELD_RANGE(16, 23); DWORD B1L : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW7; // DWORD 8 union { struct { DWORD B2L : BITFIELD_RANGE(0, 7); DWORD B3L : BITFIELD_RANGE(8, 15); DWORD S0L : BITFIELD_RANGE(16, 26); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31); }; DWORD Value; } DW8; // DWORD 9 union { struct { DWORD S1L : BITFIELD_RANGE(0, 10); DWORD S2L : BITFIELD_RANGE(11, 21); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW9; // DWORD 10 union { struct { DWORD S3L : BITFIELD_RANGE(0, 10); DWORD P0U : BITFIELD_RANGE(11, 18); DWORD P1U : BITFIELD_RANGE(19, 26); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31); }; DWORD Value; } DW10; // DWORD 11 union { struct { DWORD P2U : BITFIELD_RANGE(0, 7); DWORD P3U : BITFIELD_RANGE(8, 15); DWORD B0U : BITFIELD_RANGE(16, 23); DWORD B1U : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW11; // DWORD 12 union { struct { DWORD B2U : BITFIELD_RANGE(0, 7); DWORD B3U : BITFIELD_RANGE(8, 15); DWORD S0U : BITFIELD_RANGE(16, 26); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31); }; DWORD Value; } DW12; // DWORD 13 union { struct { DWORD S1U : BITFIELD_RANGE(0, 10); DWORD S2U : BITFIELD_RANGE(11, 21); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW13; // DWORD 14 union { struct { DWORD S3U : BITFIELD_RANGE(0, 10); DWORD SkinTypesEnable : BITFIELD_BIT(11); DWORD SkinTypesThresh : BITFIELD_RANGE(12, 19); DWORD SkinTypesMargin : BITFIELD_RANGE(20, 27); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(28, 31); }; DWORD Value; } DW14; // DWORD 15 union { struct { DWORD Satp1 : BITFIELD_RANGE(0, 6); DWORD Satp2 : BITFIELD_RANGE(7, 13); DWORD Satp3 : BITFIELD_RANGE(14, 20); DWORD Satb1 : BITFIELD_RANGE(21, 30); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31); }; DWORD Value; } DW15; // DWORD 16 union { struct { DWORD Satb2 : BITFIELD_RANGE(0, 9); DWORD Satb3 : BITFIELD_RANGE(10, 19); DWORD Sats0 : BITFIELD_RANGE(20, 30); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31); }; DWORD Value; } DW16; // DWORD 17 union { struct { DWORD Sats1 : BITFIELD_RANGE(0, 10); DWORD Sats2 : BITFIELD_RANGE(11, 21); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW17; // DWORD 18 union { struct { DWORD Sats3 : BITFIELD_RANGE(0, 10); DWORD Huep1 : BITFIELD_RANGE(11, 17); DWORD Huep2 : BITFIELD_RANGE(18, 24); DWORD Huep3 : BITFIELD_RANGE(25, 31); }; DWORD Value; } DW18; // DWORD 19 union { struct { DWORD Hueb1 : BITFIELD_RANGE(0, 9); DWORD Hueb2 : BITFIELD_RANGE(10, 19); DWORD Hueb3 : BITFIELD_RANGE(20, 29); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31); }; DWORD Value; } DW19; // DWORD 20 union { struct { DWORD Hues0 : BITFIELD_RANGE(0, 10); DWORD Hues1 : BITFIELD_RANGE(11, 21); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW20; // DWORD 21 union { struct { DWORD Hues2 : BITFIELD_RANGE(0, 10); DWORD Hues3 : BITFIELD_RANGE(11, 21); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW21; // DWORD 22 union { struct { DWORD Satp1Dark : BITFIELD_RANGE(0, 6); DWORD Satp2Dark : BITFIELD_RANGE(7, 13); DWORD Satp3Dark : BITFIELD_RANGE(14, 20); DWORD Satb1Dark : BITFIELD_RANGE(21, 30); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31); }; DWORD Value; } DW22; // DWORD 23 union { struct { DWORD Satb2Dark : BITFIELD_RANGE(0, 9); DWORD Satb3Dark : BITFIELD_RANGE(10, 19); DWORD Sats0Dark : BITFIELD_RANGE(20, 30); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31); }; DWORD Value; } DW23; // DWORD 24 union { struct { DWORD Sats1Dark : BITFIELD_RANGE(0, 10); DWORD Sats2Dark : BITFIELD_RANGE(11, 21); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW24; // DWORD 25 union { struct { DWORD Sats3Dark : BITFIELD_RANGE(0, 10); DWORD Huep1Dark : BITFIELD_RANGE(11, 17); DWORD Huep2Dark : BITFIELD_RANGE(18, 24); DWORD Huep3Dark : BITFIELD_RANGE(25, 31); }; DWORD Value; } DW25; // DWORD 26 union { struct { DWORD Hueb1Dark : BITFIELD_RANGE(0, 9); DWORD Hueb2Dark : BITFIELD_RANGE(10, 19); DWORD Hueb3Dark : BITFIELD_RANGE(20, 29); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31); }; DWORD Value; } DW26; // DWORD 27 union { struct { DWORD Hues0Dark : BITFIELD_RANGE(0, 10); DWORD Hues1Dark : BITFIELD_RANGE(11, 21); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW27; // DWORD 28 union { struct { DWORD Hues2Dark : BITFIELD_RANGE(0, 10); DWORD Hues3Dark : BITFIELD_RANGE(11, 21); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW28; } VEBOX_STD_STE_STATE_G9, *PVEBOX_STD_STE_STATE_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_ACE_LACE_STATE_G9 { // DWORD 0 union { struct { DWORD AceEnable : BITFIELD_BIT(0); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(1); DWORD SkinThreshold : BITFIELD_RANGE(2, 6); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(7, 11); DWORD LaceHistogramEnable : BITFIELD_BIT(12); DWORD LaceHistogramSize : BITFIELD_BIT(13); DWORD LaceSingleHistogramSet : BITFIELD_RANGE(14, 15); DWORD MinAceLuma : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW0; // DWORD 1 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); }; DWORD Value; } DW1; // DWORD 2 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); }; DWORD Value; } DW2; // DWORD 3 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); }; DWORD Value; } DW3; // DWORD 4 union { struct { DWORD B1 : BITFIELD_RANGE(0, 7); DWORD B2 : BITFIELD_RANGE(8, 15); DWORD B3 : BITFIELD_RANGE(16, 23); DWORD B4 : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW4; // DWORD 5 union { struct { DWORD B5 : BITFIELD_RANGE(0, 7); DWORD B6 : BITFIELD_RANGE(8, 15); DWORD B7 : BITFIELD_RANGE(16, 23); DWORD B8 : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW5; // DWORD 6 union { struct { DWORD B9 : BITFIELD_RANGE(0, 7); DWORD B10 : BITFIELD_RANGE(8, 15); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW6; // DWORD 7 union { struct { DWORD S0 : BITFIELD_RANGE(0, 10); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15); DWORD S1 : BITFIELD_RANGE(16, 26); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31); }; DWORD Value; } DW7; // DWORD 8 union { struct { DWORD S2 : BITFIELD_RANGE(0, 10); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15); DWORD S3 : BITFIELD_RANGE(16, 26); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31); }; DWORD Value; } DW8; // DWORD 9 union { struct { DWORD S4 : BITFIELD_RANGE(0, 10); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15); DWORD S5 : BITFIELD_RANGE(16, 26); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31); }; DWORD Value; } DW9; // DWORD 10 union { struct { DWORD S6 : BITFIELD_RANGE(0, 10); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15); DWORD S7 : BITFIELD_RANGE(16, 26); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31); }; DWORD Value; } DW10; // DWORD 11 union { struct { DWORD S8 : BITFIELD_RANGE(0, 10); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15); DWORD S9 : BITFIELD_RANGE(16, 26); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(27, 31); }; DWORD Value; } DW11; // DWORD 12 union { struct { DWORD S10 : BITFIELD_RANGE(0, 10); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(11, 15); DWORD MaxAceLuma : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW12; } VEBOX_ACE_LACE_STATE_G9, *PVEBOX_ACE_LACE_STATE_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_TCC_STATE_G9 { // DWORD 0 union { struct { DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 6); DWORD TccEnable : BITFIELD_BIT(7); DWORD SatFactor1 : BITFIELD_RANGE(8, 15); DWORD SatFactor2 : BITFIELD_RANGE(16, 23); DWORD SatFactor3 : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW0; // DWORD 1 union { struct { DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 7); DWORD SatFactor4 : BITFIELD_RANGE(8, 15); DWORD SatFactor5 : BITFIELD_RANGE(16, 23); DWORD SatFactor6 : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW1; // DWORD 2 union { struct { DWORD BaseColor1 : BITFIELD_RANGE(0, 9); DWORD BaseColor2 : BITFIELD_RANGE(10, 19); DWORD BaseColor3 : BITFIELD_RANGE(20, 29); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31); }; DWORD Value; } DW2; // DWORD 3 union { struct { DWORD BaseColo4 : BITFIELD_RANGE(0, 9); DWORD BaseColor5 : BITFIELD_RANGE(10, 19); DWORD BaseColor6 : BITFIELD_RANGE(20, 29); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31); }; DWORD Value; } DW3; // DWORD 4 union { struct { DWORD ColorTransitSlope2 : BITFIELD_RANGE(0, 15); DWORD ColorTransitSlope23 : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW4; // DWORD 5 union { struct { DWORD ColorTransitSlope34 : BITFIELD_RANGE(0, 15); DWORD ColorTransitSlope45 : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW5; // DWORD 6 union { struct { DWORD ColorTransitSlope56 : BITFIELD_RANGE(0, 15); DWORD ColorTransitSlope61 : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW6; // DWORD 7 union { struct { DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 1); DWORD ColorBias1 : BITFIELD_RANGE(2, 11); DWORD ColorBias2 : BITFIELD_RANGE(12, 21); DWORD ColorBias3 : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW7; // DWORD 8 union { struct { DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(0, 1); DWORD ColorBias4 : BITFIELD_RANGE(2, 11); DWORD ColorBias5 : BITFIELD_RANGE(12, 21); DWORD ColorBias6 : BITFIELD_RANGE(22, 31); }; DWORD Value; } DW8; // DWORD 9 union { struct { DWORD SteSlopeBits : BITFIELD_RANGE(0, 2); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(3, 7); DWORD SteThreshold : BITFIELD_RANGE(8, 12); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 15); DWORD UvThresholdBits : BITFIELD_RANGE(16, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 23); DWORD UvThreshold : BITFIELD_RANGE(24, 30); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(31); }; DWORD Value; } DW9; // DWORD 10 union { struct { DWORD UVMaxColor : BITFIELD_RANGE(0, 8); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(9, 15); DWORD InvUvmaxColor : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW10; } VEBOX_TCC_STATE_G9, *PVEBOX_TCC_STATE_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_PROCAMP_STATE_G9 { // DWORD 0 union { struct { DWORD ProcampEnable : BITFIELD_BIT(0); DWORD Brightness : BITFIELD_RANGE(1, 12); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(13, 16); DWORD Contrast : BITFIELD_RANGE(17, 27); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(28, 31); }; DWORD Value; } DW0; // DWORD 1 union { struct { DWORD SinCS : BITFIELD_RANGE(0, 15); DWORD CosCS : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW1; } VEBOX_PROCAMP_STATE_G9, *PVEBOX_PROCAMP_STATE_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_CSC_STATE_G9 { // DWORD 0 union { struct { DWORD C0 : BITFIELD_RANGE(0, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 29); DWORD YuvChannelSwap : BITFIELD_BIT(30); DWORD TransformEnable : BITFIELD_BIT(31); }; DWORD Value; } DW0; // DWORD 1 union { struct { DWORD C1 : BITFIELD_RANGE(0, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW1; // DWORD 2 union { struct { DWORD C2 : BITFIELD_RANGE(0, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW2; // DWORD 3 union { struct { DWORD C3 : BITFIELD_RANGE(0, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW3; // DWORD 4 union { struct { DWORD C4 : BITFIELD_RANGE(0, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW4; // DWORD 5 union { struct { DWORD C5 : BITFIELD_RANGE(0, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW5; // DWORD 6 union { struct { DWORD C6 : BITFIELD_RANGE(0, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW6; // DWORD 7 union { struct { DWORD C7 : BITFIELD_RANGE(0, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW7; // DWORD 8 union { struct { DWORD C8 : BITFIELD_RANGE(0, 18); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW8; // DWORD 9 union { struct { DWORD OffsetIn1 : BITFIELD_RANGE(0, 15); DWORD OffsetOut1 : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW9; // DWORD 10 union { struct { DWORD OffsetIn2 : BITFIELD_RANGE(0, 15); DWORD OffsetOut2 : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW10; // DWORD 11 union { struct { DWORD OffsetIn3 : BITFIELD_RANGE(0, 15); DWORD OffsetOut3 : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW11; } VEBOX_CSC_STATE_G9, *PVEBOX_CSC_STATE_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_ALPHA_AOI_STATE_G9 { // DWORD 0 union { struct { DWORD ColorPipeAlpha : BITFIELD_RANGE(0, 15); DWORD AlphaFromStateSelect : BITFIELD_BIT(16); DWORD FullImageHistogram : BITFIELD_BIT(17); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(18, 31); }; DWORD Value; } DW0; // DWORD 1 union { struct { DWORD AoiMinX : BITFIELD_RANGE(0, 13); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(14, 15); DWORD AoiMaxX : BITFIELD_RANGE(16, 29); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31); }; DWORD Value; } DW1; // DWORD 2 union { struct { DWORD AoiMinY : BITFIELD_RANGE(0, 13); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(14, 15); DWORD AoiMaxY : BITFIELD_RANGE(16, 29); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31); }; DWORD Value; } DW2; } VEBOX_ALPHA_AOI_STATE_G9, *PVEBOX_ALPHA_AOI_STATE_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_CCM_STATE_G9 { // DWORD 0 union { struct { DWORD C1 : BITFIELD_RANGE(0, 16); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 30); DWORD ColorCorrectionMatrixEnable : BITFIELD_BIT(31); }; DWORD Value; } DW0; // DWORD 1 union { struct { DWORD C0 : BITFIELD_RANGE(0, 16); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31); }; DWORD Value; } DW1; // DWORD 2 union { struct { DWORD C3 : BITFIELD_RANGE(0, 16); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31); }; DWORD Value; } DW2; // DWORD 3 union { struct { DWORD C2 : BITFIELD_RANGE(0, 16); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31); }; DWORD Value; } DW3; // DWORD 4 union { struct { DWORD C5 : BITFIELD_RANGE(0, 16); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31); }; DWORD Value; } DW4; // DWORD 5 union { struct { DWORD C4 : BITFIELD_RANGE(0, 16); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31); }; DWORD Value; } DW5; // DWORD 6 union { struct { DWORD C7 : BITFIELD_RANGE(0, 16); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31); }; DWORD Value; } DW6; // DWORD 7 union { struct { DWORD C6 : BITFIELD_RANGE(0, 16); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31); }; DWORD Value; } DW7; // DWORD 8 union { struct { DWORD C8 : BITFIELD_RANGE(0, 16); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(17, 31); }; DWORD Value; } DW8; } VEBOX_CCM_STATE_G9, *PVEBOX_CCM_STATE_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_FRONT_END_CSC_STATE_G9 { // DWORD 0 union { struct { DWORD FecscC0TransformCoefficient : BITFIELD_RANGE(0, 18); DWORD Rserved : BITFIELD_RANGE(19, 30); DWORD FrontEndCscTransformEnable : BITFIELD_BIT(31); }; DWORD Value; } DW0; // DWORD 1 union { struct { DWORD FecscC1TransformCoefficient : BITFIELD_RANGE(0, 18); DWORD Rserved : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW1; // DWORD 2 union { struct { DWORD FecscC2TransformCoefficient : BITFIELD_RANGE(0, 18); DWORD Rserved : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW2; // DWORD 3 union { struct { DWORD FecscC3TransformCoefficient : BITFIELD_RANGE(0, 18); DWORD Rserved : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW3; // DWORD 4 union { struct { DWORD FecscC4TransformCoefficient : BITFIELD_RANGE(0, 18); DWORD Rserved : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW4; // DWORD 5 union { struct { DWORD FecscC5TransformCoefficient : BITFIELD_RANGE(0, 18); DWORD Rserved : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW5; // DWORD 6 union { struct { DWORD FecscC6TransformCoefficient : BITFIELD_RANGE(0, 18); DWORD Rserved : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW6; // DWORD 7 union { struct { DWORD FecscC7TransformCoefficient : BITFIELD_RANGE(0, 18); DWORD Rserved : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW7; // DWORD 8 union { struct { DWORD FecscC8TransformCoefficient : BITFIELD_RANGE(0, 18); DWORD Rserved : BITFIELD_RANGE(19, 31); }; DWORD Value; } DW8; // DWORD 9 union { struct { DWORD FecScOffsetIn1OffsetInForYR : BITFIELD_RANGE(0, 15); DWORD FecScOffsetOut1OffsetOutForYR : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW9; // DWORD 10 union { struct { DWORD FecScOffsetIn2OffsetOutForUG : BITFIELD_RANGE(0, 15); DWORD FecScOffsetOut2OffsetOutForUG : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW10; // DWORD 11 union { struct { DWORD FecScOffsetIn3OffsetOutForVB : BITFIELD_RANGE(0, 15); DWORD FecScOffsetOut3OffsetOutForVB : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW11; } VEBOX_FRONT_END_CSC_STATE_G9, *PVEBOX_FRONT_END_CSC_STATE_G9; // Defined in vol2c "Vebox" typedef struct _VEBOX_IECP_STATE_G9 { // DWORD 0_28 VEBOX_STD_STE_STATE_G9 StdSteState; // DWORD 29_41 VEBOX_ACE_LACE_STATE_G9 AceLaceState; // DWORD 42_52 VEBOX_TCC_STATE_G9 TccState; // DWORD 53_54 VEBOX_PROCAMP_STATE_G9 ProcAmpState; // DWORD 55_66 VEBOX_CSC_STATE_G9 CscState; // DWORD 67_69 VEBOX_ALPHA_AOI_STATE_G9 AlphaAoiState; // DWORD 70_78 VEBOX_CCM_STATE_G9 CcmState; // DWORD 79_90 VEBOX_FRONT_END_CSC_STATE_G9 FrontEndCscState; } VEBOX_IECP_STATE_G9, *PVEBOX_IECP_STATE_G9; // Defined in vol2c "VEBOX" typedef struct _VEBOX_CAPTURE_PIPE_STATE_G9 { // DWORD 0 union { struct { DWORD GoodPixelNeighborThreshold : BITFIELD_RANGE(0, 5); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(6, 7); DWORD AverageColorThreshold : BITFIELD_RANGE(8, 15); DWORD GreenImbalanceThreshold : BITFIELD_RANGE(16, 19); DWORD ShiftMinCost : BITFIELD_RANGE(20, 22); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_BIT(23); DWORD GoodPixelThreshold : BITFIELD_RANGE(24, 29); DWORD __CODEGEN_UNIQUE(Reserved) : BITFIELD_RANGE(30, 31); }; DWORD Value; } DW0; // DWORD 1 union { struct { DWORD BadColorThreshold3 : BITFIELD_RANGE(0, 3); DWORD NumberBigPixelTheshold : BITFIELD_RANGE(4, 7); DWORD BadColorThreshold2 : BITFIELD_RANGE(8, 15); DWORD BadColorThreshold1 : BITFIELD_RANGE(16, 23); DWORD GoodIntesityThreshold : BITFIELD_RANGE(24, 27); DWORD ScaleForMinCost : BITFIELD_RANGE(28, 31); }; DWORD Value; } DW1; // DWORD 2 union { struct { DWORD WhiteBalanceCorrectionEnable : BITFIELD_BIT(0); DWORD BlackPointCorrectionEnable : BITFIELD_BIT(1); DWORD VignetteCorrectionFormat : BITFIELD_BIT(2); DWORD RgbHistogramEnable : BITFIELD_BIT(3); DWORD BlackPointOffsetGreenBottomMsb : BITFIELD_BIT(4); DWORD BlackPointOffsetBlueMsb : BITFIELD_BIT(5); DWORD BlackPointOffsetGreenTopMsb : BITFIELD_BIT(6); DWORD BlackPointOffsetRedMsb : BITFIELD_BIT(7); DWORD UvThresholdValue : BITFIELD_RANGE(8, 15); DWORD YOutlierValue : BITFIELD_RANGE(16, 23); DWORD YBrightValue : BITFIELD_RANGE(24, 31); }; DWORD Value; } DW2; // DWORD 3 union { struct { DWORD BlackPointOffsetGreenTop : BITFIELD_RANGE(0, 15); DWORD BlackPointOffsetRed : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW3; // DWORD 4 union { struct { DWORD BlackPointOffsetGreenBottom : BITFIELD_RANGE(0, 15); DWORD BlackPointOffsetBlue : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW4; // DWORD 5 union { struct { DWORD WhiteBalanceGreenTopCorrection : BITFIELD_RANGE(0, 15); DWORD WhiteBalanceRedCorrection : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW5; // DWORD 6 union { struct { DWORD WhiteBalanceGreenBottomCorrection : BITFIELD_RANGE(0, 15); DWORD WhiteBalanceBlueCorrection : BITFIELD_RANGE(16, 31); }; DWORD Value; } DW6; } VEBOX_CAPTURE_PIPE_STATE_G9, *PVEBOX_CAPTURE_PIPE_STATE_G9; typedef struct __CM_VEBOX_PARAM_G9 { PVEBOX_DNDI_STATE_G9 pDndiState; unsigned char padding1[4024]; PVEBOX_IECP_STATE_G9 pIecpState; unsigned char padding2[3732]; PVEBOX_GAMUT_STATE_G75 pGamutState; unsigned char padding3[3936]; PVEBOX_VERTEX_TABLE_G75 pVertexTable; unsigned char padding4[2048]; PVEBOX_CAPTURE_PIPE_STATE_G9 pCapturePipe; }CM_VEBOX_PARAM_G9, PCM_VEBOX_PARAM_G9; #endif //__CM_RT_G9_H__