From 44fe17526d180c1500e7038e025b82b027bddd9b Mon Sep 17 00:00:00 2001 From: mkarigan Date: Tue, 29 Mar 2022 18:08:34 +0000 Subject: [PATCH] Add support for DG2 256 Add support for DG2 256 --- IGC/Compiler/CISACodeGen/Platform.hpp | 15 ++++- IGC/Compiler/CMakeLists.txt | 2 + IGC/Compiler/igc_workaround.cpp | 8 +++ IGC/LLVM3DBuilder/BuiltinsFrontend.hpp | 2 + inc/common/igfxfmid.h | 5 ++ skuwa/iacm_g12_hw_wa.c | 87 ++++++++++++++++++++++++++ skuwa/iacm_g12_rev_id.h | 17 +++++ skuwa/iacm_g12_sw_wa.c | 34 ++++++++++ skuwa/wa_def.h | 8 +++ 9 files changed, 176 insertions(+), 2 deletions(-) create mode 100644 skuwa/iacm_g12_hw_wa.c create mode 100644 skuwa/iacm_g12_rev_id.h create mode 100644 skuwa/iacm_g12_sw_wa.c diff --git a/IGC/Compiler/CISACodeGen/Platform.hpp b/IGC/Compiler/CISACodeGen/Platform.hpp index 99512bd8c..704da6ad4 100644 --- a/IGC/Compiler/CISACodeGen/Platform.hpp +++ b/IGC/Compiler/CISACodeGen/Platform.hpp @@ -17,6 +17,7 @@ SPDX-License-Identifier: MIT #include "../../../skuwa/iacm_g10_rev_id.h" #include "../../../skuwa/iacm_g11_rev_id.h" +#include "../../../skuwa/iacm_g12_rev_id.h" namespace IGC { @@ -163,6 +164,7 @@ bool isProductChildOf(PRODUCT_FAMILY product) const bool supports8DWLSCMessage() const { return (SI_WA_FROM(m_platformInfo.usRevId, ACM_G10_GT_REV_ID_B0) && m_platformInfo.eProductFamily == IGFX_DG2) || GFX_IS_DG2_G11_CONFIG(m_platformInfo.usDeviceID) + || GFX_IS_DG2_G12_CONFIG(m_platformInfo.usDeviceID) || m_platformInfo.eProductFamily == IGFX_PVC; } @@ -662,6 +664,7 @@ bool hasHalfSIMDLSC() const { return (m_platformInfo.eProductFamily == IGFX_DG2 && SI_WA_FROM(m_platformInfo.usRevId, ACM_G10_GT_REV_ID_B0)) || GFX_IS_DG2_G11_CONFIG(m_platformInfo.usDeviceID) || + GFX_IS_DG2_G12_CONFIG(m_platformInfo.usDeviceID) || // false for PVC XL A0 RevID==0x0, true from PVC XT A0 RevID==0x3==REVISION_B (m_platformInfo.eProductFamily == IGFX_PVC && m_platformInfo.usRevId >= REVISION_B); } @@ -777,9 +780,14 @@ bool LSCEnabled(SIMDMode m = SIMDMode::UNKNOWN) const if (m == SIMDMode::UNKNOWN) { // Must generate LSC after A0 (not include A0) - return (SI_WA_FROM(m_platformInfo.usRevId, ACM_G10_GT_REV_ID_B0) || GFX_IS_DG2_G11_CONFIG(m_platformInfo.usDeviceID)); + return (SI_WA_FROM(m_platformInfo.usRevId, ACM_G10_GT_REV_ID_B0) || + GFX_IS_DG2_G11_CONFIG(m_platformInfo.usDeviceID) || + GFX_IS_DG2_G12_CONFIG(m_platformInfo.usDeviceID) + ); } - return ((SI_WA_FROM(m_platformInfo.usRevId, ACM_G10_GT_REV_ID_B0) || GFX_IS_DG2_G11_CONFIG(m_platformInfo.usDeviceID)) + return ((SI_WA_FROM(m_platformInfo.usRevId, ACM_G10_GT_REV_ID_B0) || + GFX_IS_DG2_G11_CONFIG(m_platformInfo.usDeviceID) || + GFX_IS_DG2_G12_CONFIG(m_platformInfo.usDeviceID)) && m == SIMDMode::SIMD8) || m == SIMDMode::SIMD16; default: @@ -895,9 +903,11 @@ bool typedReadSupportsAllRenderableFormats() const bool isChildOfDG2B0 = SI_WA_FROM(m_platformInfo.usRevId, ACM_G10_GT_REV_ID_B0); bool isChildOfDG2C0 = SI_WA_FROM(m_platformInfo.usRevId, ACM_G10_GT_REV_ID_C0); bool isDG2G11Config = GFX_IS_DG2_G11_CONFIG(m_platformInfo.usDeviceID); + bool isDG2G12Config = GFX_IS_DG2_G12_CONFIG(m_platformInfo.usDeviceID); if ((m_platformInfo.eProductFamily == IGFX_DG2 && isChildOfDG2C0) || (m_platformInfo.eProductFamily == IGFX_DG2 && isDG2G11Config && isChildOfDG2B0) || + (m_platformInfo.eProductFamily == IGFX_DG2 && isDG2G12Config ) || (m_platformInfo.eProductFamily == IGFX_PVC)) { return IGC_IS_FLAG_DISABLED(ForceFormatConversionDG2Plus); @@ -1018,6 +1028,7 @@ bool supportAIParameterCombiningWithLODBiasEnabled() const { return IGC_IS_FLAG_ENABLED(EnableAIParameterCombiningWithLODBias) && (m_platformInfo.eProductFamily == IGFX_DG2 && SI_WA_FROM(m_platformInfo.usRevId, ACM_G10_GT_REV_ID_B0)) || + GFX_IS_DG2_G12_CONFIG(m_platformInfo.usDeviceID) || GFX_IS_DG2_G11_CONFIG(m_platformInfo.usDeviceID); } diff --git a/IGC/Compiler/CMakeLists.txt b/IGC/Compiler/CMakeLists.txt index 648c139dd..6b5027bc3 100644 --- a/IGC/Compiler/CMakeLists.txt +++ b/IGC/Compiler/CMakeLists.txt @@ -91,6 +91,8 @@ set(IGC_BUILD__SRC__Compiler "${IGC_BUILD__GFX_DEV_SRC_DIR}/skuwa/iacm_g10_sw_wa.c" "${IGC_BUILD__GFX_DEV_SRC_DIR}/skuwa/iacm_g11_hw_wa.c" "${IGC_BUILD__GFX_DEV_SRC_DIR}/skuwa/iacm_g11_sw_wa.c" + "${IGC_BUILD__GFX_DEV_SRC_DIR}/skuwa/iacm_g12_hw_wa.c" + "${IGC_BUILD__GFX_DEV_SRC_DIR}/skuwa/iacm_g12_sw_wa.c" "${IGC_BUILD__GFX_DEV_SRC_DIR}/skuwa/ipvc_hw_wa.c" "${IGC_BUILD__GFX_DEV_SRC_DIR}/skuwa/ipvc_xt_hw_wa.c" "${IGC_BUILD__GFX_DEV_SRC_DIR}/skuwa/irkl_hw_wa.c" diff --git a/IGC/Compiler/igc_workaround.cpp b/IGC/Compiler/igc_workaround.cpp index 3affa2a49..aec28f139 100644 --- a/IGC/Compiler/igc_workaround.cpp +++ b/IGC/Compiler/igc_workaround.cpp @@ -103,11 +103,19 @@ namespace IGC InitXeHPSDVSwWaTable(&waTable, pSkuFeatureTable, &stWaInitParam); break; case IGFX_DG2: + /* 128 */ if (TRUE == GFX_IS_DG2_G11_CONFIG(platform->getPlatformInfo().usDeviceID)) { InitAcm_G11HwWaTable(&waTable, pSkuFeatureTable, &stWaInitParam); InitAcm_G11SwWaTable(&waTable, pSkuFeatureTable, &stWaInitParam); } + /* 256 */ + else if (TRUE == GFX_IS_DG2_G12_CONFIG(platform->getPlatformInfo().usDeviceID)) + { + InitAcm_G12HwWaTable(&waTable,pSkuFeatureTable, &stWaInitParam); + InitAcm_G12SwWaTable(&waTable,pSkuFeatureTable, &stWaInitParam); + } + /* 512 */ else { InitAcm_G10HwWaTable(&waTable, pSkuFeatureTable, &stWaInitParam); diff --git a/IGC/LLVM3DBuilder/BuiltinsFrontend.hpp b/IGC/LLVM3DBuilder/BuiltinsFrontend.hpp index 0a449c081..e21c95737 100644 --- a/IGC/LLVM3DBuilder/BuiltinsFrontend.hpp +++ b/IGC/LLVM3DBuilder/BuiltinsFrontend.hpp @@ -25,6 +25,7 @@ SPDX-License-Identifier: MIT #include "../common/EmUtils.h" #include "../../../skuwa/iacm_g10_rev_id.h" #include "../../../skuwa/iacm_g11_rev_id.h" +#include "../../../skuwa/iacm_g12_rev_id.h" struct genplatform { @@ -49,6 +50,7 @@ inline bool genplatform::hasSupportForAllOCLImageFormats() const bool isDG2B0Plus = SI_WA_FROM(m_platformInfo->usRevId, ACM_G10_GT_REV_ID_B0); bool isDG2C0Plus = SI_WA_FROM(m_platformInfo->usRevId, ACM_G10_GT_REV_ID_C0); bool isDG2G11EUConfig = GFX_IS_DG2_G11_CONFIG(m_platformInfo->usDeviceID); + bool isDG2G12EUConfig = GFX_IS_DG2_G12_CONFIG(m_platformInfo->usDeviceID); if ((m_platformInfo->eProductFamily == IGFX_DG2 && isDG2C0Plus) || (m_platformInfo->eProductFamily == IGFX_DG2 && isDG2G11EUConfig && isDG2B0Plus)) { diff --git a/inc/common/igfxfmid.h b/inc/common/igfxfmid.h index caa46922c..9795be193 100644 --- a/inc/common/igfxfmid.h +++ b/inc/common/igfxfmid.h @@ -686,4 +686,9 @@ typedef enum __NATIVEGTTYPE ( d == DEV_ID_4F87 ) || \ ( d == DEV_ID_4F88 )) +#define GFX_IS_DG2_G12_CONFIG(d) ( ( d == DEV_ID_4F85 ) || \ + ( d == DEV_ID_4F86 ) || \ + ( d == DEV_ID_56A3 ) || \ + ( d == DEV_ID_56A4 )) + #endif diff --git a/skuwa/iacm_g12_hw_wa.c b/skuwa/iacm_g12_hw_wa.c new file mode 100644 index 000000000..13b676745 --- /dev/null +++ b/skuwa/iacm_g12_hw_wa.c @@ -0,0 +1,87 @@ +/*========================== begin_copyright_notice ============================ + +Copyright (C) 2021 Intel Corporation + +SPDX-License-Identifier: MIT + +============================= end_copyright_notice ===========================*/ + + +#include "wa_def.h" +#include "iacm_g12_rev_id.h" + +//******************* Main Wa Initializer for ACM_G12 ******************** + +void InitAcm_G12HwWaTable(PWA_TABLE pWaTable, PSKU_FEATURE_TABLE pSkuTable, PWA_INIT_PARAM pWaParam) +{ + int iStepId_ACM_G12 = (int)pWaParam->usRevId; + + + SI_WA_ENABLE( + Wa_14014414195, + "No Link Provided", + "No Link Provided", + PLATFORM_ALL, + SI_WA_BETWEEN(iStepId_ACM_G12, ACM_G12_GT_REV_ID_A0, FUTURE_PROJECT)); + + + SI_WA_ENABLE( + Wa_16013338947, + "No Link Provided", + "No HWSightingLink provided", + PLATFORM_ALL, + SI_WA_BETWEEN(iStepId_ACM_G12, ACM_G12_GT_REV_ID_A0, FUTURE_PROJECT)); + + + + SI_WA_ENABLE( + Wa_16012061344, + "No Link Provided", + "No HWSightingLink provided", + PLATFORM_ALL, + SI_WA_BETWEEN(iStepId_ACM_G12, ACM_G12_GT_REV_ID_A0, FUTURE_PROJECT)); + + + SI_WA_ENABLE( + Wa_14013341720, + "No Link Provided", + "No HWSightingLink provided", + PLATFORM_ALL, + SI_WA_BETWEEN(iStepId_ACM_G12, ACM_G12_GT_REV_ID_A0, FUTURE_PROJECT)); + + + SI_WA_ENABLE( + Wa_16012292205, + "No Link Provided", + "No HWSightingLink provided", + PLATFORM_ALL, + SI_WA_BETWEEN(iStepId_ACM_G12, ACM_G12_GT_REV_ID_A0, FUTURE_PROJECT)); + + SI_WA_ENABLE( + Wa_22012856258, + "No Link Provided", + "No HWSightingLink provided", + PLATFORM_ALL, + SI_WA_BETWEEN(iStepId_ACM_G12, ACM_G12_GT_REV_ID_A0, FUTURE_PROJECT)); + + SI_WA_ENABLE( + Wa_22013689345, + "No Link Provided", + "No Link Provided", + PLATFORM_ALL, + SI_WA_BETWEEN(iStepId_ACM_G12, ACM_G12_GT_REV_ID_A0, FUTURE_PROJECT)); + + SI_WA_ENABLE( + Wa_22013880840, + "No Link Provided", + "No HWSightingLink provided", + PLATFORM_ALL, + SI_WA_BETWEEN(iStepId_ACM_G12, ACM_G12_GT_REV_ID_A0, FUTURE_PROJECT)); + + SI_WA_ENABLE( + Wa_18012201914, + "No Link Provided", + "No HWSightingLink provided", + PLATFORM_ALL, + SI_WA_BETWEEN(iStepId_ACM_G12, ACM_G12_GT_REV_ID_A0, FUTURE_PROJECT)); +} diff --git a/skuwa/iacm_g12_rev_id.h b/skuwa/iacm_g12_rev_id.h new file mode 100644 index 000000000..6210e7acd --- /dev/null +++ b/skuwa/iacm_g12_rev_id.h @@ -0,0 +1,17 @@ +/*========================== begin_copyright_notice ============================ + +Copyright (C) 2021 Intel Corporation + +SPDX-License-Identifier: MIT + +============================= end_copyright_notice ===========================*/ + +// Platform Revision Ids for ACM_G12 + +// AUTO-GENERATED FILE. DO NOT EDIT. + +#include "wa_def.h" + +#define ACM_G12_GT_REV_ID_A0 SI_REV_ID(0,0) + + diff --git a/skuwa/iacm_g12_sw_wa.c b/skuwa/iacm_g12_sw_wa.c new file mode 100644 index 000000000..2efee56ae --- /dev/null +++ b/skuwa/iacm_g12_sw_wa.c @@ -0,0 +1,34 @@ +/*========================== begin_copyright_notice ============================ + +Copyright (C) 2021 Intel Corporation + +SPDX-License-Identifier: MIT + +============================= end_copyright_notice ===========================*/ + + +#include "wa_def.h" +#include "iacm_g12_rev_id.h" + + +void InitAcm_G12SwWaTable(PWA_TABLE pWaTable, PSKU_FEATURE_TABLE pSkuTable, PWA_INIT_PARAM pWaParam) +{ + int StepId_ACM_G12 = (int)pWaParam->usRevId; + + SI_WA_ENABLE( + WaMixModeSelInstDstNotPacked, + "No HWBugLink provided", + "No Link Provided", + PLATFORM_ALL, + SI_WA_FOR_EVER); + + +} + +#ifdef __KCH +void InitAcm_G12HASWaTable(PHW_DEVICE_EXTENSION pKchContext, PWA_TABLE pWaTable, PSKU_FEATURE_TABLE pSkuTable, PWA_INIT_PARAM pWaParam) +{ + + +} +#endif // __KCH diff --git a/skuwa/wa_def.h b/skuwa/wa_def.h index 354fbdd0d..8fcc6a349 100644 --- a/skuwa/wa_def.h +++ b/skuwa/wa_def.h @@ -343,6 +343,10 @@ void InitAcm_G11HwWaTable( PWA_TABLE pWaTable, PSKU_FEATURE_TABLE pSkuTable, PWA_INIT_PARAM pWaParam); +void InitAcm_G12HwWaTable( + PWA_TABLE pWaTable, + PSKU_FEATURE_TABLE pSkuTable, + PWA_INIT_PARAM pWaParam); void InitAcm_G11SwWaTable( PWA_TABLE pWaTable, PSKU_FEATURE_TABLE pSkuTable, @@ -351,6 +355,10 @@ void InitAcm_G10SwWaTable( PWA_TABLE pWaTable, PSKU_FEATURE_TABLE pSkuTable, PWA_INIT_PARAM pWaParam); +void InitAcm_G12SwWaTable( + PWA_TABLE pWaTable, + PSKU_FEATURE_TABLE pSkuTable, + PWA_INIT_PARAM pWaParam); void InitPvcHwWaTable( PWA_TABLE pWaTable, PSKU_FEATURE_TABLE pSkuTable,