mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 06:24:51 +08:00
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:
committed by
Compute-Runtime-Automation
parent
006e853f2b
commit
ff380058de
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -19,6 +19,7 @@ enum class ReleaseType {
|
||||
release1271,
|
||||
release1274,
|
||||
release2001,
|
||||
release2002,
|
||||
release2004,
|
||||
release3000,
|
||||
release3001,
|
||||
|
||||
@@ -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
|
||||
|
||||
56
shared/source/release_helper/release_helper_2002.cpp
Normal file
56
shared/source/release_helper/release_helper_2002.cpp
Normal 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>;
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user