feature: add support for release 20.2 (BMG G31)

Related-To: NEO-15006

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2025-06-13 09:36:29 +00:00
committed by Compute-Runtime-Automation
parent 006e853f2b
commit ff380058de
12 changed files with 188 additions and 5 deletions

View File

@@ -270,7 +270,7 @@ if(SUPPORT_XE2_HPG_CORE)
ADD_AOT_DEFINITION(XE2_HPG)
ADD_AOT_DEFINITION(BMG)
set(BMG_XE2_HPG_CORE_REVISIONS 0)
set(BMG_XE2_HPG_CORE_RELEASES "20.1.0")
set(BMG_XE2_HPG_CORE_RELEASES "20.1.0" "20.2.0")
ADD_PRODUCT("SUPPORTED" "BMG" "IGFX_BMG")
ADD_PLATFORM_FOR_CORE_TYPE("SUPPORTED" "XE2_HPG_CORE" "BMG")
ADD_PLATFORM_FOR_CORE_TYPE("SUPPORTED_IMAGES" "XE2_HPG_CORE" "BMG")

View File

@@ -41,7 +41,7 @@ components:
dest_dir: kernels_bin
type: git
branch: kernels_bin
revision: 3436-4390
revision: 3436-4394
kmdaf:
branch: kmdaf
dest_dir: kmdaf

View File

@@ -10,7 +10,7 @@
using namespace NEO;
TEST_F(DeviceIdTests, GivenBmgSupportedDeviceIdThenDeviceDescriptorTableExists) {
std::array<DeviceDescriptor, 9> expectedDescriptors = {{
std::array<DeviceDescriptor, 13> expectedDescriptors = {{
{0xE202, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
{0xE20B, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
{0xE20C, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
@@ -20,6 +20,10 @@ TEST_F(DeviceIdTests, GivenBmgSupportedDeviceIdThenDeviceDescriptorTableExists)
{0xE212, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
{0xE215, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
{0xE216, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
{0xE220, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
{0xE221, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
{0xE222, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
{0xE223, &BmgHwConfig::hwInfo, &BmgHwConfig::setupHardwareInfo},
}};
testImpl(expectedDescriptors);

View File

@@ -31,6 +31,10 @@ DEVICE(0xE211, BmgHwConfig)
DEVICE(0xE212, BmgHwConfig)
DEVICE(0xE215, BmgHwConfig)
DEVICE(0xE216, BmgHwConfig)
DEVICE(0xE220, BmgHwConfig)
DEVICE(0xE221, BmgHwConfig)
DEVICE(0xE222, BmgHwConfig)
DEVICE(0xE223, BmgHwConfig)
#endif
#ifdef SUPPORT_LNL
NAMEDDEVICE(0x6420, LnlHwConfig, "Intel(R) Graphics")

View File

@@ -17,6 +17,7 @@ DEVICE_CONFIG(PTL_U_A1, PtlHwConfig, ptlUDeviceIds, XE3_FAMILY, XE3_LPG_RELEASE)
#if SUPPORT_XE2_HPG_CORE
#ifdef SUPPORT_BMG
DEVICE_CONFIG(BMG_G31_A0, BmgHwConfig, bmgG31DeviceIds, XE2_FAMILY, XE2_HPG_RELEASE)
DEVICE_CONFIG(BMG_G21_A0, BmgHwConfig, bmgG21DeviceIds, XE2_FAMILY, XE2_HPG_RELEASE)
DEVICE_CONFIG(BMG_G21_A1_RESERVED, BmgHwConfig, bmgG21DeviceIds, XE2_FAMILY, XE2_HPG_RELEASE)
DEVICE_CONFIG(BMG_G21_B0_RESERVED, BmgHwConfig, bmgG21DeviceIds, XE2_FAMILY, XE2_HPG_RELEASE)

View File

@@ -23,6 +23,7 @@ set(NEO_CORE_RELEASE_HELPER
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_1271.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_1274.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_2001.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_2002.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_2004.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_3000.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_3001.cpp
@@ -34,7 +35,7 @@ set(NEO_CORE_RELEASE_HELPER
set_property(GLOBAL APPEND PROPERTY NEO_CORE_ENABLE_RELEASE_HELPER
${CMAKE_CURRENT_SOURCE_DIR}/enable_release_helper_xe.cpp
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}enable_release_helper_xe2.cpp
${CMAKE_CURRENT_SOURCE_DIR}/enable_release_helper_xe2.cpp
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}enable_release_helper_xe3.cpp
)
set_property(GLOBAL APPEND PROPERTY NEO_CORE_RELEASE_HELPER ${NEO_CORE_RELEASE_HELPER})

View File

@@ -19,6 +19,7 @@ enum class ReleaseType {
release1271,
release1274,
release2001,
release2002,
release2004,
release3000,
release3001,

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -16,5 +16,6 @@ inline createReleaseHelperFunctionType releaseHelperFactoryXe2[maxReleaseXe2]{};
EnableReleaseHelperArchitecture<20> enableReleaseHelperArchitecture20(releaseHelperFactoryXe2);
EnableReleaseHelper<ReleaseType::release2001> enablerReleaseHelper2001{releaseHelperFactoryXe2[1]};
EnableReleaseHelper<ReleaseType::release2002> enablerReleaseHelper2002{releaseHelperFactoryXe2[2]};
EnableReleaseHelper<ReleaseType::release2004> enablerReleaseHelper2004{releaseHelperFactoryXe2[4]};
} // namespace NEO

View File

@@ -0,0 +1,56 @@
/*
* Copyright (C) 2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/release_helper/release_helper.h"
#include "shared/source/release_helper/release_helper_base.inl"
#include "shared/source/xe2_hpg_core/hw_cmds_base.h"
#include "release_definitions.h"
namespace NEO {
constexpr auto release = ReleaseType::release2002;
template <>
inline bool ReleaseHelperHw<release>::isAuxSurfaceModeOverrideRequired() const {
return true;
}
template <>
bool ReleaseHelperHw<release>::isLocalOnlyAllowed() const {
return false;
}
template <>
bool ReleaseHelperHw<release>::isBindlessAddressingDisabled() const {
return false;
}
template <>
const SizeToPreferredSlmValueArray &ReleaseHelperHw<release>::getSizeToPreferredSlmValue(bool isHeapless) const {
using PREFERRED_SLM_ALLOCATION_SIZE = typename Xe2HpgCoreFamily::INTERFACE_DESCRIPTOR_DATA::PREFERRED_SLM_ALLOCATION_SIZE;
static const SizeToPreferredSlmValueArray sizeToPreferredSlmValue = {{
{0, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_0K},
{16 * MemoryConstants::kiloByte, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_16K},
{32 * MemoryConstants::kiloByte, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_32K},
{64 * MemoryConstants::kiloByte, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_64K},
{96 * MemoryConstants::kiloByte, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_96K},
{128 * MemoryConstants::kiloByte, PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_128K},
{std::numeric_limits<uint32_t>::max(), PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_SLM_ENCODES_160K},
}};
return sizeToPreferredSlmValue;
}
template <>
bool ReleaseHelperHw<release>::programmAdditionalStallPriorToBarrierWithTimestamp() const {
return true;
}
} // namespace NEO
#include "shared/source/release_helper/release_helper_common_xe2_hpg.inl"
template class NEO::ReleaseHelperHw<NEO::release>;

View File

@@ -11,4 +11,5 @@
namespace NEO {
const std::vector<unsigned short> bmgG21DeviceIds{0xE202, 0xE20B, 0xE20C, 0xE20D, 0xE210, 0xE211, 0xE212, 0xE215, 0xE216};
const std::vector<unsigned short> bmgG31DeviceIds{0xE220, 0xE221, 0xE222, 0xE223};
} // namespace NEO

View File

@@ -18,6 +18,7 @@ target_sources(neo_shared_tests PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_12_71_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_12_74_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_20_01_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_20_02_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_20_04_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_30_00_tests.cpp
${CMAKE_CURRENT_SOURCE_DIR}/release_helper_30_01_tests.cpp

View File

@@ -0,0 +1,113 @@
/*
* Copyright (C) 2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/release_helper/release_helper.h"
#include "shared/test/unit_test/release_helper/release_helper_tests_base.h"
#include "gtest/gtest.h"
struct ReleaseHelper2002Tests : public ReleaseHelperTests<20, 2> {
std::vector<uint32_t> getRevisions() override {
return {0};
}
};
TEST_F(ReleaseHelper2002Tests, whenGettingCapabilitiesThenCorrectPropertiesAreReturned) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;
releaseHelper = ReleaseHelper::create(ipVersion);
ASSERT_NE(nullptr, releaseHelper);
EXPECT_FALSE(releaseHelper->isAdjustWalkOrderAvailable());
EXPECT_TRUE(releaseHelper->isMatrixMultiplyAccumulateSupported());
EXPECT_TRUE(releaseHelper->isDotProductAccumulateSystolicSupported());
EXPECT_FALSE(releaseHelper->isPipeControlPriorToNonPipelinedStateCommandsWARequired());
EXPECT_FALSE(releaseHelper->isPipeControlPriorToPipelineSelectWaRequired());
EXPECT_FALSE(releaseHelper->isProgramAllStateComputeCommandFieldsWARequired());
EXPECT_FALSE(releaseHelper->isSplitMatrixMultiplyAccumulateSupported());
EXPECT_TRUE(releaseHelper->isBFloat16ConversionSupported());
EXPECT_TRUE(releaseHelper->isResolvingSubDeviceIDNeeded());
EXPECT_FALSE(releaseHelper->isDirectSubmissionSupported());
EXPECT_TRUE(releaseHelper->isAuxSurfaceModeOverrideRequired());
EXPECT_TRUE(releaseHelper->isRcsExposureDisabled());
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
EXPECT_TRUE(releaseHelper->isNumRtStacksPerDssFixedValue());
}
}
TEST_F(ReleaseHelper2002Tests, whenGettingSupportedNumGrfsThenCorrectValuesAreReturned) {
whenGettingSupportedNumGrfsThenValues128And256Returned();
}
TEST_F(ReleaseHelper2002Tests, whenGettingThreadsPerEuConfigsThen4And8AreReturned) {
whenGettingThreadsPerEuConfigsThen4And8AreReturned();
}
TEST_F(ReleaseHelper2002Tests, whenGettingTotalMemBankSizeThenReturn32GB) {
whenGettingTotalMemBankSizeThenReturn32GB();
}
TEST_F(ReleaseHelper2002Tests, whenGettingAdditionalFp16AtomicCapabilitiesThenReturnNoCapabilities) {
whenGettingAdditionalFp16AtomicCapabilitiesThenReturnNoCapabilities();
}
TEST_F(ReleaseHelper2002Tests, whenGettingAdditionalExtraKernelCapabilitiesThenReturnNoCapabilities) {
whenGettingAdditionalExtraKernelCapabilitiesThenReturnNoCapabilities();
}
TEST_F(ReleaseHelper2002Tests, whenIsLocalOnlyAllowedCalledThenFalseReturned) {
whenIsLocalOnlyAllowedCalledThenFalseReturned();
}
TEST_F(ReleaseHelper2002Tests, whenIsDummyBlitWaRequiredCalledThenFalseReturned) {
whenIsDummyBlitWaRequiredCalledThenFalseReturned();
}
TEST_F(ReleaseHelper2002Tests, whenIsBlitImageAllowedForDepthFormatCalledThenTrueReturned) {
whenIsBlitImageAllowedForDepthFormatCalledThenTrueReturned();
}
TEST_F(ReleaseHelper2002Tests, whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey) {
whenGettingNumThreadsPerEuThenCorrectValueIsReturnedBasedOnOverrideNumThreadsPerEuDebugKey();
}
TEST_F(ReleaseHelper2002Tests, whenGettingPreferredSlmSizeThenAllEntriesHaveCorrectValues) {
for (auto &revision : getRevisions()) {
ipVersion.revision = revision;
releaseHelper = ReleaseHelper::create(ipVersion);
ASSERT_NE(nullptr, releaseHelper);
constexpr uint32_t kB = 1024;
auto &preferredSlmValueArray = releaseHelper->getSizeToPreferredSlmValue(false);
EXPECT_EQ(0u, preferredSlmValueArray[0].upperLimit);
EXPECT_EQ(0u, preferredSlmValueArray[0].valueToProgram);
EXPECT_EQ(16 * kB, preferredSlmValueArray[1].upperLimit);
EXPECT_EQ(1u, preferredSlmValueArray[1].valueToProgram);
EXPECT_EQ(32 * kB, preferredSlmValueArray[2].upperLimit);
EXPECT_EQ(2u, preferredSlmValueArray[2].valueToProgram);
EXPECT_EQ(64 * kB, preferredSlmValueArray[3].upperLimit);
EXPECT_EQ(3u, preferredSlmValueArray[3].valueToProgram);
EXPECT_EQ(96 * kB, preferredSlmValueArray[4].upperLimit);
EXPECT_EQ(4u, preferredSlmValueArray[4].valueToProgram);
EXPECT_EQ(128 * kB, preferredSlmValueArray[5].upperLimit);
EXPECT_EQ(5u, preferredSlmValueArray[5].valueToProgram);
EXPECT_EQ(std::numeric_limits<uint32_t>::max(), preferredSlmValueArray[6].upperLimit);
EXPECT_EQ(6u, preferredSlmValueArray[6].valueToProgram);
}
}