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