| /* |
| * 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 media_sysinfo_g9.cpp |
| //! |
| |
| #include "igfxfmid.h" |
| #include "linux_system_info.h" |
| #include "skuwa_factory.h" |
| #include "linux_skuwa_debug.h" |
| #include "linux_media_skuwa.h" |
| #include "linux_shadow_skuwa.h" |
| |
| //extern template class DeviceInfoFactory<GfxDeviceInfo>; |
| typedef DeviceInfoFactory<GfxDeviceInfo> base_fact; |
| |
| #define GEN9_THREADS_PER_EU 7 |
| #define GEN9_LCIA_THREADS_PER_EU 6 |
| static bool InitGen9MediaSysInfo(struct GfxDeviceInfo *devInfo, MEDIA_GT_SYSTEM_INFO *sysInfo) |
| { |
| if ((devInfo == nullptr) || (sysInfo == nullptr)) |
| { |
| DEVINFO_ERROR("null ptr is passed\n"); |
| return false; |
| } |
| |
| if (!sysInfo->SliceCount) |
| { |
| sysInfo->SliceCount = devInfo->SliceCount; |
| } |
| |
| if (!sysInfo->SubSliceCount) |
| { |
| sysInfo->SubSliceCount = devInfo->SubSliceCount; |
| } |
| |
| if (!sysInfo->EUCount) |
| { |
| sysInfo->EUCount = devInfo->EUCount; |
| } |
| |
| sysInfo->L3CacheSizeInKb = devInfo->L3CacheSizeInKb; |
| sysInfo->L3BankCount = devInfo->L3BankCount; |
| sysInfo->VDBoxInfo.Instances.Bits.VDBox0Enabled = 1; |
| sysInfo->VEBoxInfo.Instances.Bits.VEBox0Enabled = 1; |
| sysInfo->MaxEuPerSubSlice = devInfo->MaxEuPerSubSlice; |
| sysInfo->MaxSlicesSupported = sysInfo->SliceCount; |
| sysInfo->MaxSubSlicesSupported = sysInfo->SubSliceCount; |
| |
| sysInfo->VEBoxInfo.NumberOfVEBoxEnabled = 1; |
| sysInfo->VDBoxInfo.NumberOfVDBoxEnabled = 1; |
| if ((devInfo->eGTType == GTTYPE_GT3) || |
| (devInfo->eGTType == GTTYPE_GT4)) |
| { |
| sysInfo->VDBoxInfo.Instances.Bits.VDBox1Enabled = 1; |
| sysInfo->VEBoxInfo.Instances.Bits.VEBox1Enabled = 1; |
| sysInfo->VEBoxInfo.NumberOfVEBoxEnabled++; |
| sysInfo->VDBoxInfo.NumberOfVDBoxEnabled++; |
| } |
| |
| sysInfo->ThreadCount = sysInfo->EUCount * GEN9_THREADS_PER_EU; |
| |
| sysInfo->VEBoxInfo.IsValid = true; |
| sysInfo->VDBoxInfo.IsValid = true; |
| |
| /* the GMM doesn't care the real size of ERAM/LLC. Instead it is used to |
| * indicate whether the LLC/ERAM exists |
| */ |
| if (devInfo->hasERAM) |
| { |
| // 64M |
| sysInfo->EdramSizeInKb = 64 * 1024; |
| } |
| if (devInfo->hasLLC) |
| { |
| // 2M |
| sysInfo->LLCCacheSizeInKb = 2 * 1024; |
| } |
| |
| if ((devInfo->eGTType == GTTYPE_GT4) && devInfo->hasERAM) |
| { |
| // 128M on GT4e |
| sysInfo->EdramSizeInKb = 128 * 1024; |
| } |
| |
| return true; |
| } |
| |
| static bool InitGen9ShadowSku(struct GfxDeviceInfo *devInfo, |
| SHADOW_MEDIA_FEATURE_TABLE *skuTable, |
| struct LinuxDriverInfo *drvInfo) |
| { |
| if ((devInfo == nullptr) || (skuTable == nullptr) || (drvInfo == nullptr)) |
| { |
| DEVINFO_ERROR("null ptr is passed\n"); |
| return false; |
| } |
| |
| skuTable->FtrVERing = 0; |
| if (drvInfo->hasVebox) |
| { |
| skuTable->FtrVERing = 1; |
| } |
| |
| skuTable->FtrVcs2 = 0; |
| if (((devInfo->eGTType == GTTYPE_GT3) || (devInfo->eGTType == GTTYPE_GT4)) && |
| drvInfo->hasBsd2) |
| { |
| skuTable->FtrVcs2 = 1; |
| } |
| |
| skuTable->FtrULT = 0; |
| |
| skuTable->FtrPPGTT = 1; |
| skuTable->FtrIA32eGfxPTEs = 1; |
| |
| skuTable->FtrDisplayYTiling = 1; |
| skuTable->FtrEDram = devInfo->hasERAM; |
| |
| return true; |
| } |
| |
| static bool InitGen9ShadowWa(struct GfxDeviceInfo *devInfo, |
| SHADOW_MEDIA_WA_TABLE *waTable, |
| struct LinuxDriverInfo *drvInfo) |
| { |
| if ((devInfo == nullptr) || (waTable == nullptr) || (drvInfo == nullptr)) |
| { |
| DEVINFO_ERROR("null ptr is passed\n"); |
| return false; |
| } |
| |
| /* by default PPGTT is enabled */ |
| waTable->WaForceGlobalGTT = 0; |
| if (drvInfo->hasPpgtt == 0) |
| { |
| waTable->WaForceGlobalGTT = 1; |
| } |
| |
| waTable->WaDisregardPlatformChecks = 1; |
| waTable->WaLosslessCompressionSurfaceStride = 1; |
| waTable->WaFbcLinearSurfaceStride = 1; |
| waTable->Wa4kAlignUVOffsetNV12LinearSurface = 1; |
| |
| if (devInfo->productFamily == IGFX_SKYLAKE) |
| { |
| waTable->WaEncryptedEdramOnlyPartials = 1; |
| waTable->WaDisableEdramForDisplayRT = 1; |
| } |
| else |
| if (devInfo->productFamily == IGFX_COFFEELAKE) |
| { |
| waTable->WaEncryptedEdramOnlyPartials = 1; |
| } |
| |
| return true; |
| } |
| |
| static bool InitLCIAMediaSysInfo(struct GfxDeviceInfo *devInfo, MEDIA_GT_SYSTEM_INFO *sysInfo) |
| { |
| if ((devInfo == nullptr) || (sysInfo == nullptr)) |
| { |
| DEVINFO_ERROR("null ptr is passed\n"); |
| return false; |
| } |
| |
| if (!sysInfo->SliceCount) |
| { |
| sysInfo->SliceCount = devInfo->SliceCount; |
| } |
| |
| if (!sysInfo->SubSliceCount) |
| { |
| sysInfo->SubSliceCount = devInfo->SubSliceCount; |
| } |
| |
| if (!sysInfo->EUCount) |
| { |
| sysInfo->EUCount = devInfo->EUCount; |
| } |
| |
| sysInfo->L3CacheSizeInKb = devInfo->L3CacheSizeInKb; |
| sysInfo->L3BankCount = devInfo->L3BankCount; |
| sysInfo->VDBoxInfo.Instances.Bits.VDBox0Enabled = 1; |
| sysInfo->VEBoxInfo.Instances.Bits.VEBox0Enabled = 1; |
| sysInfo->MaxEuPerSubSlice = devInfo->MaxEuPerSubSlice; |
| sysInfo->MaxSlicesSupported = sysInfo->SliceCount; |
| sysInfo->MaxSubSlicesSupported = sysInfo->SubSliceCount; |
| |
| sysInfo->VEBoxInfo.NumberOfVEBoxEnabled = 1; |
| sysInfo->VDBoxInfo.NumberOfVDBoxEnabled = 1; |
| |
| sysInfo->ThreadCount = sysInfo->EUCount * GEN9_LCIA_THREADS_PER_EU; |
| |
| sysInfo->VEBoxInfo.IsValid = true; |
| sysInfo->VDBoxInfo.IsValid = true; |
| |
| sysInfo->EdramSizeInKb = 0; |
| sysInfo->LLCCacheSizeInKb = 0; |
| |
| return true; |
| } |
| |
| static bool InitLCIAShadowSku(struct GfxDeviceInfo *devInfo, |
| SHADOW_MEDIA_FEATURE_TABLE *skuTable, |
| struct LinuxDriverInfo *drvInfo) |
| { |
| if ((devInfo == nullptr) || (skuTable == nullptr) || (drvInfo == nullptr)) |
| { |
| DEVINFO_ERROR("null ptr is passed\n"); |
| return false; |
| } |
| |
| skuTable->FtrVERing = 0; |
| if (drvInfo->hasVebox) |
| { |
| skuTable->FtrVERing = 1; |
| } |
| |
| skuTable->FtrVcs2 = 0; |
| skuTable->FtrULT = 1; |
| skuTable->FtrPPGTT = 1; |
| skuTable->FtrIA32eGfxPTEs = 1; |
| |
| skuTable->FtrDisplayYTiling = 1; |
| skuTable->FtrEDram = 0; |
| skuTable->FtrLCIA = 1; |
| |
| skuTable->FtrTileY = 1; |
| |
| return true; |
| } |
| |
| static bool InitLCIAShadowWa(struct GfxDeviceInfo *devInfo, |
| SHADOW_MEDIA_WA_TABLE *waTable, |
| struct LinuxDriverInfo *drvInfo) |
| { |
| if ((devInfo == nullptr) || (waTable == nullptr) || (drvInfo == nullptr)) |
| { |
| DEVINFO_ERROR("null ptr is passed\n"); |
| return false; |
| } |
| |
| /* by default PPGTT is enabled */ |
| waTable->WaForceGlobalGTT = 0; |
| if (drvInfo->hasPpgtt == 0) |
| { |
| waTable->WaForceGlobalGTT = 1; |
| } |
| |
| waTable->WaDisregardPlatformChecks = 1; |
| waTable->WaFbcLinearSurfaceStride = 1; |
| waTable->Wa4kAlignUVOffsetNV12LinearSurface = 1; |
| waTable->WaLLCCachingUnsupported = 1; |
| |
| return true; |
| } |
| |
| static struct GfxDeviceInfo sklGt1Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_SKYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT1, |
| .L3CacheSizeInKb = 384, |
| .L3BankCount = 2, |
| .EUCount = 12, |
| .SliceCount = 1, |
| .SubSliceCount = 2, |
| .MaxEuPerSubSlice = 6, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo sklGt1f5Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_SKYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT1_5, |
| .L3CacheSizeInKb = 768, |
| .L3BankCount = 4, |
| .EUCount = 18, |
| .SliceCount = 1, |
| .SubSliceCount = 3, |
| .MaxEuPerSubSlice = 6, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo sklGt2Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_SKYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT2, |
| .L3CacheSizeInKb = 768, |
| .L3BankCount = 4, |
| .EUCount = 24, |
| .SliceCount = 1, |
| .SubSliceCount = 3, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo sklGt3Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_SKYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT3, |
| .L3CacheSizeInKb = 1536, |
| .L3BankCount = 8, |
| .EUCount = 48, |
| .SliceCount = 2, |
| .SubSliceCount = 6, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo sklGt3eInfo = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_SKYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT3, |
| .L3CacheSizeInKb = 1536, |
| .L3BankCount = 8, |
| .EUCount = 48, |
| .SliceCount = 2, |
| .SubSliceCount = 6, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 1, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo sklGt4Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_SKYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT4, |
| .L3CacheSizeInKb = 2304, |
| .L3BankCount = 12, |
| .EUCount = 72, |
| .SliceCount = 3, |
| .SubSliceCount = 9, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo sklGt4eInfo = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_SKYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT4, |
| .L3CacheSizeInKb = 2304, |
| .L3BankCount = 12, |
| .EUCount = 72, |
| .SliceCount = 3, |
| .SubSliceCount = 9, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 1, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo bxtGt1Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_BROXTON, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT1, |
| .L3CacheSizeInKb = 384, |
| .L3BankCount = 2, |
| .EUCount = 18, |
| .SliceCount = 1, |
| .SubSliceCount = 3, |
| .MaxEuPerSubSlice = 6, |
| .isLCIA = 1, |
| .hasLLC = 0, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitLCIAMediaSysInfo, |
| .InitShadowSku = InitLCIAShadowSku, |
| .InitShadowWa = InitLCIAShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo glkGt1Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_GEMINILAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT1, |
| .L3CacheSizeInKb = 384, |
| .L3BankCount = 2, |
| .EUCount = 18, |
| .SliceCount = 1, |
| .SubSliceCount = 3, |
| .MaxEuPerSubSlice = 6, |
| .isLCIA = 1, |
| .hasLLC = 0, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitLCIAMediaSysInfo, |
| .InitShadowSku = InitLCIAShadowSku, |
| .InitShadowWa = InitLCIAShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo kblGt1Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_KABYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT1, |
| .L3CacheSizeInKb = 384, |
| .L3BankCount = 2, |
| .EUCount = 12, |
| .SliceCount = 1, |
| .SubSliceCount = 2, |
| .MaxEuPerSubSlice = 6, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo kblGt1f5Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_KABYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT1_5, |
| .L3CacheSizeInKb = 768, |
| .L3BankCount = 4, |
| .EUCount = 18, |
| .SliceCount = 1, |
| .SubSliceCount = 3, |
| .MaxEuPerSubSlice = 6, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo kblGt2Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_KABYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT2, |
| .L3CacheSizeInKb = 768, |
| .L3BankCount = 4, |
| .EUCount = 24, |
| .SliceCount = 1, |
| .SubSliceCount = 3, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo kblGt3Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_KABYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT3, |
| .L3CacheSizeInKb = 1536, |
| .L3BankCount = 8, |
| .EUCount = 48, |
| .SliceCount = 2, |
| .SubSliceCount = 6, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo kblGt3eInfo = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_KABYLAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT3, |
| .L3CacheSizeInKb = 1536, |
| .L3BankCount = 8, |
| .EUCount = 48, |
| .SliceCount = 2, |
| .SubSliceCount = 6, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 1, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo cflGt1Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_COFFEELAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT1, |
| .L3CacheSizeInKb = 384, |
| .L3BankCount = 2, |
| .EUCount = 12, |
| .SliceCount = 1, |
| .SubSliceCount = 2, |
| .MaxEuPerSubSlice = 6, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo cflGt2Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_COFFEELAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT2, |
| .L3CacheSizeInKb = 768, |
| .L3BankCount = 4, |
| .EUCount = 24, |
| .SliceCount = 1, |
| .SubSliceCount = 3, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo cflGt3Info = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_COFFEELAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT3, |
| .L3CacheSizeInKb = 1536, |
| .L3BankCount = 8, |
| .EUCount = 48, |
| .SliceCount = 2, |
| .SubSliceCount = 6, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 0, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static struct GfxDeviceInfo cflGt3eInfo = { |
| .platformType = PLATFORM_MOBILE, |
| .productFamily = IGFX_COFFEELAKE, |
| .displayFamily = IGFX_GEN9_CORE, |
| .renderFamily = IGFX_GEN9_CORE, |
| .eGTType = GTTYPE_GT3, |
| .L3CacheSizeInKb = 1536, |
| .L3BankCount = 8, |
| .EUCount = 48, |
| .SliceCount = 2, |
| .SubSliceCount = 6, |
| .MaxEuPerSubSlice = 8, |
| .isLCIA = 0, |
| .hasLLC = 1, |
| .hasERAM = 1, |
| .InitMediaSysInfo = InitGen9MediaSysInfo, |
| .InitShadowSku = InitGen9ShadowSku, |
| .InitShadowWa = InitGen9ShadowWa, |
| }; |
| |
| static bool sklDevice1902 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1902, &sklGt1Info); |
| |
| static bool sklDevice1906 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1906, &sklGt1Info); |
| |
| static bool sklDevice190a = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x190a, &sklGt1Info); |
| |
| static bool sklDevice190b = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x190b, &sklGt1Info); |
| |
| static bool sklDevice190e = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x190e, &sklGt1Info); |
| |
| static bool sklDevice1913 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1913, &sklGt1f5Info); |
| |
| static bool sklDevice1915 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1915, &sklGt1f5Info); |
| |
| static bool sklDevice1917 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1917, &sklGt1f5Info); |
| |
| static bool sklDevice1912 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1912, &sklGt2Info); |
| |
| static bool sklDevice1916 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1916, &sklGt2Info); |
| |
| static bool sklDevice191a = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x191a, &sklGt2Info); |
| |
| static bool sklDevice191b = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x191b, &sklGt2Info); |
| |
| static bool sklDevice191d = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x191d, &sklGt2Info); |
| |
| static bool sklDevice191e = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x191e, &sklGt2Info); |
| |
| static bool sklDevice1921 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1921, &sklGt2Info); |
| |
| static bool sklDevice1923 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1923, &sklGt3Info); |
| |
| static bool sklDevice192b = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x192b, &sklGt3eInfo); |
| |
| static bool sklDevice1926 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1926, &sklGt3eInfo); |
| |
| static bool sklDevice1927 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1927, &sklGt3eInfo); |
| |
| static bool sklDevice192d = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x192d, &sklGt3eInfo); |
| |
| /* GT4 */ |
| static bool sklDevice192a = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x192a, &sklGt4Info); |
| |
| static bool sklDevice1932 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1932, &sklGt4Info); |
| |
| static bool sklDevice193a = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x193a, &sklGt4eInfo); |
| |
| static bool sklDevice193b = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x193b, &sklGt4eInfo); |
| |
| static bool sklDevice193d = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x193d, &sklGt4eInfo); |
| |
| static bool bxtDevice1a84 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1a84, &bxtGt1Info); |
| |
| static bool bxtDevice1a85 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x1a85, &bxtGt1Info); |
| |
| static bool bxtDevice5a84 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5a84, &bxtGt1Info); |
| |
| static bool bxtDevice5a85 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5a85, &bxtGt1Info); |
| |
| static bool glkDevice3a84 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3184, &glkGt1Info); |
| |
| static bool glkDevice3a85 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3185, &glkGt1Info); |
| |
| static bool kblDevice5906 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5906, &kblGt1Info); |
| |
| static bool kblDevice5902 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5902, &kblGt1Info); |
| |
| static bool kblDevice5908 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5908, &kblGt1Info); |
| |
| static bool kblDevice590a = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x590a, &kblGt1Info); |
| |
| static bool kblDevice590b = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x590b, &kblGt1Info); |
| |
| static bool kblDevice590e = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x590e, &kblGt1Info); |
| |
| static bool kblDevice5913 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5913, &kblGt1f5Info); |
| |
| static bool kblDevice5915 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5915, &kblGt1f5Info); |
| |
| static bool kblDevice5916 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5916, &kblGt2Info); |
| |
| static bool kblDevice5917 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5917, &kblGt2Info); |
| |
| static bool kblDevice5912 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5912, &kblGt2Info); |
| |
| static bool kblDevice591e = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x591e, &kblGt2Info); |
| |
| static bool kblDevice591a = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x591a, &kblGt2Info); |
| |
| static bool kblDevice591b = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x591b, &kblGt2Info); |
| |
| static bool kblDevice591d = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x591d, &kblGt2Info); |
| |
| static bool kblDevice5921 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5921, &kblGt2Info); |
| |
| static bool kblDevice5923 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5923, &kblGt3Info); |
| |
| static bool kblDevice5926 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5926, &kblGt3eInfo); |
| |
| static bool kblDevice5927 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5927, &kblGt3eInfo); |
| |
| static bool kblDevice593b = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x593b, &kblGt3Info); |
| |
| static bool kblDevice5932 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x5932, &kblGt3Info); |
| |
| static bool kblDevice592b = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x592b, &kblGt3Info); |
| |
| static bool kblDevice592a = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x592a, &kblGt3Info); |
| |
| static bool cflDevice3e93 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e93, &cflGt1Info); |
| |
| static bool cflDevice3e99 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e99, &cflGt1Info); |
| |
| static bool cflDevice3e90 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e90, &cflGt1Info); |
| |
| static bool cflDevice3e92 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e92, &cflGt2Info); |
| |
| static bool cflDevice3e94 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e94, &cflGt2Info); |
| |
| static bool cflDevice3e91 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e91, &cflGt2Info); |
| |
| static bool cflDevice3e96 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e96, &cflGt2Info); |
| |
| static bool cflDevice3e98 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e98, &cflGt2Info); |
| |
| static bool cflDevice3e9a = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e9a, &cflGt2Info); |
| |
| static bool cflDevice3e9b = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e9b, &cflGt2Info); |
| |
| static bool cflDevice3e9c = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3e9c, &cflGt1Info); |
| |
| static bool cflDevice3ea5 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea5, &cflGt3eInfo); |
| |
| static bool cflDevice3ea6 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea6, &cflGt3eInfo); |
| |
| static bool cflDevice3ea7 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea7, &cflGt3eInfo); |
| |
| static bool cflDevice3ea8 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea8, &cflGt3eInfo); |
| |
| static bool cflDevice3ea9 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea9, &cflGt2Info); |
| |
| static bool cflDevice3ea1 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea1, &cflGt1Info); |
| |
| static bool cflDevice3ea4 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea4, &cflGt1Info); |
| |
| static bool cflDevice3ea0 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea0, &cflGt2Info); |
| |
| static bool cflDevice3ea3 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea3, &cflGt2Info); |
| |
| static bool cflDevice3ea2 = DeviceInfoFactory<GfxDeviceInfo>:: |
| RegisterDevice(0x3ea2, &cflGt3eInfo); |
| |