Skip to content

Commit ba51cf5

Browse files
Bring back adjustPlatformForProductFamily() method
Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
1 parent 7330f98 commit ba51cf5

File tree

8 files changed

+100
-0
lines changed

8 files changed

+100
-0
lines changed

opencl/source/gen12lp/windows/hw_info_config_gen12lp.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ int HwInfoConfigHw<IGFX_TIGERLAKE_LP>::configureHardwareCustom(HardwareInfo *hwI
2323
return 0;
2424
}
2525

26+
template <>
27+
void HwInfoConfigHw<IGFX_TIGERLAKE_LP>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {
28+
PLATFORM *platform = &hwInfo->platform;
29+
platform->eRenderCoreFamily = IGFX_GEN12LP_CORE;
30+
platform->eDisplayCoreFamily = IGFX_GEN12LP_CORE;
31+
}
32+
2633
template class HwInfoConfigHw<IGFX_TIGERLAKE_LP>;
2734
#endif
2835
#ifdef SUPPORT_DG1
@@ -34,6 +41,13 @@ int HwInfoConfigHw<IGFX_DG1>::configureHardwareCustom(HardwareInfo *hwInfo, OSIn
3441
return 0;
3542
}
3643

44+
template <>
45+
void HwInfoConfigHw<IGFX_DG1>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {
46+
PLATFORM *platform = &hwInfo->platform;
47+
platform->eRenderCoreFamily = IGFX_GEN12LP_CORE;
48+
platform->eDisplayCoreFamily = IGFX_GEN12LP_CORE;
49+
}
50+
3751
template <>
3852
bool HwInfoConfigHw<IGFX_DG1>::isEvenContextCountRequired() {
3953
return true;
@@ -54,6 +68,13 @@ int HwInfoConfigHw<IGFX_ROCKETLAKE>::configureHardwareCustom(HardwareInfo *hwInf
5468
return 0;
5569
}
5670

71+
template <>
72+
void HwInfoConfigHw<IGFX_ROCKETLAKE>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {
73+
PLATFORM *platform = &hwInfo->platform;
74+
platform->eRenderCoreFamily = IGFX_GEN12LP_CORE;
75+
platform->eDisplayCoreFamily = IGFX_GEN12LP_CORE;
76+
}
77+
5778
template class HwInfoConfigHw<IGFX_ROCKETLAKE>;
5879
#endif
5980
#ifdef SUPPORT_ADLS
@@ -65,6 +86,13 @@ int HwInfoConfigHw<IGFX_ALDERLAKE_S>::configureHardwareCustom(HardwareInfo *hwIn
6586
return 0;
6687
}
6788

89+
template <>
90+
void HwInfoConfigHw<IGFX_ALDERLAKE_S>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {
91+
PLATFORM *platform = &hwInfo->platform;
92+
platform->eRenderCoreFamily = IGFX_GEN12LP_CORE;
93+
platform->eDisplayCoreFamily = IGFX_GEN12LP_CORE;
94+
}
95+
6896
template class HwInfoConfigHw<IGFX_ALDERLAKE_S>;
6997
#endif
7098
} // namespace NEO

opencl/test/unit_test/gen12lp/windows/hw_info_config_tests_gen12lp.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,15 @@ GEN12LPTEST_F(HwInfoConfigTestWindowsGen12lp, givenE2ECSetByKmdWhenConfiguringHw
3030
EXPECT_FALSE(outHwInfo.capabilityTable.ftrRenderCompressedBuffers);
3131
EXPECT_FALSE(outHwInfo.capabilityTable.ftrRenderCompressedImages);
3232
}
33+
34+
GEN12LPTEST_F(HwInfoConfigTestWindows, givenGen12LpProductWhenAdjustPlatformForProductFamilyCalledThenOverrideWithCorrectFamily) {
35+
auto hwInfoConfig = HwInfoConfig::get(productFamily);
36+
37+
PLATFORM *testPlatform = &outHwInfo.platform;
38+
testPlatform->eDisplayCoreFamily = IGFX_GEN11_CORE;
39+
testPlatform->eRenderCoreFamily = IGFX_GEN11_CORE;
40+
hwInfoConfig->adjustPlatformForProductFamily(&outHwInfo);
41+
42+
EXPECT_EQ(IGFX_GEN12LP_CORE, testPlatform->eRenderCoreFamily);
43+
EXPECT_EQ(IGFX_GEN12LP_CORE, testPlatform->eDisplayCoreFamily);
44+
}

opencl/test/unit_test/gen12lp/windows/wddm_tests_gen12lp.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include "shared/source/command_stream/preemption.h"
99
#include "shared/source/execution_environment/root_device_environment.h"
10+
#include "shared/source/os_interface/os_interface.h"
1011
#include "shared/source/os_interface/windows/gdi_interface.h"
1112

1213
#include "opencl/test/unit_test/mocks/mock_execution_environment.h"
@@ -61,3 +62,34 @@ GEN12LPTEST_F(Gen12LpWddmTest, whenConfigureDeviceAddressSpaceThenObtainMinAddre
6162

6263
EXPECT_EQ(minAddress, wddm->getWddmMinAddress());
6364
}
65+
66+
using Gen12LpWddmHwInfoTest = ::testing::Test;
67+
68+
GEN12LPTEST_F(Gen12LpWddmHwInfoTest, givenIncorrectProductFamiliyWhenInitCalledThenOverride) {
69+
HardwareInfo localHwInfo = *defaultHwInfo;
70+
71+
localHwInfo.platform.eRenderCoreFamily = GFXCORE_FAMILY::IGFX_UNKNOWN_CORE;
72+
localHwInfo.platform.eDisplayCoreFamily = GFXCORE_FAMILY::IGFX_UNKNOWN_CORE;
73+
74+
std::unique_ptr<OsLibrary> mockGdiDll(setAdapterInfo(&localHwInfo.platform,
75+
&localHwInfo.gtSystemInfo,
76+
localHwInfo.capabilityTable.gpuAddressSpace));
77+
78+
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
79+
auto rootDeviceEnvironment = executionEnvironment->rootDeviceEnvironments[0].get();
80+
rootDeviceEnvironment->osInterface = std::make_unique<OSInterface>();
81+
82+
auto localWddm = std::unique_ptr<Wddm>(Wddm::createWddm(nullptr, *rootDeviceEnvironment));
83+
localWddm->init();
84+
85+
auto newHwInfo = rootDeviceEnvironment->getHardwareInfo();
86+
87+
EXPECT_EQ(GFXCORE_FAMILY::IGFX_GEN12LP_CORE, newHwInfo->platform.eRenderCoreFamily);
88+
EXPECT_EQ(GFXCORE_FAMILY::IGFX_GEN12LP_CORE, newHwInfo->platform.eDisplayCoreFamily);
89+
90+
// reset mock gdi globals
91+
localHwInfo = *defaultHwInfo;
92+
mockGdiDll.reset(setAdapterInfo(&localHwInfo.platform,
93+
&localHwInfo.gtSystemInfo,
94+
localHwInfo.capabilityTable.gpuAddressSpace));
95+
}

opencl/test/unit_test/os_interface/linux/hw_info_config_linux_tests.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<IGFX_UNKNOWN>::getHos
5050
return 0;
5151
}
5252

53+
template <>
54+
void HwInfoConfigHw<IGFX_UNKNOWN>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {
55+
}
56+
5357
template <>
5458
cl_unified_shared_memory_capabilities_intel HwInfoConfigHw<IGFX_UNKNOWN>::getDeviceMemCapabilities() {
5559
return 0;
@@ -512,3 +516,17 @@ TEST_F(HwInfoConfigTestLinuxDummy, givenFailingGttSizeIoctlWhenInitializingHwInf
512516
EXPECT_NE(0u, outHwInfo.capabilityTable.gpuAddressSpace);
513517
EXPECT_EQ(pInHwInfo.capabilityTable.gpuAddressSpace, outHwInfo.capabilityTable.gpuAddressSpace);
514518
}
519+
520+
TEST(HwInfoConfigLinuxTest, whenAdjustPlatformForProductFamilyCalledThenDoNothing) {
521+
HardwareInfo localHwInfo = *defaultHwInfo;
522+
523+
auto hwInfoConfig = HwInfoConfig::get(localHwInfo.platform.eProductFamily);
524+
525+
localHwInfo.platform.eDisplayCoreFamily = GFXCORE_FAMILY::IGFX_UNKNOWN_CORE;
526+
localHwInfo.platform.eRenderCoreFamily = GFXCORE_FAMILY::IGFX_UNKNOWN_CORE;
527+
528+
hwInfoConfig->adjustPlatformForProductFamily(&localHwInfo);
529+
530+
EXPECT_EQ(GFXCORE_FAMILY::IGFX_UNKNOWN_CORE, localHwInfo.platform.eRenderCoreFamily);
531+
EXPECT_EQ(GFXCORE_FAMILY::IGFX_UNKNOWN_CORE, localHwInfo.platform.eDisplayCoreFamily);
532+
}

opencl/test/unit_test/os_interface/windows/hw_info_config_win_tests.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ int HwInfoConfigHw<IGFX_UNKNOWN>::configureHardwareCustom(HardwareInfo *hwInfo,
4848
return 0;
4949
}
5050

51+
template <>
52+
void HwInfoConfigHw<IGFX_UNKNOWN>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {
53+
}
54+
5155
template <>
5256
bool HwInfoConfigHw<IGFX_UNKNOWN>::isEvenContextCountRequired() {
5357
return false;

shared/source/os_interface/hw_info_config.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class HwInfoConfig {
2727
}
2828
int configureHwInfo(const HardwareInfo *inHwInfo, HardwareInfo *outHwInfo, OSInterface *osIface);
2929
virtual int configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) = 0;
30+
virtual void adjustPlatformForProductFamily(HardwareInfo *hwInfo) = 0;
3031
virtual uint64_t getHostMemCapabilities(const HardwareInfo *hwInfo) = 0;
3132
virtual uint64_t getDeviceMemCapabilities() = 0;
3233
virtual uint64_t getSingleDeviceSharedMemCapabilities() = 0;
@@ -44,6 +45,7 @@ class HwInfoConfigHw : public HwInfoConfig {
4445
return &instance;
4546
}
4647
int configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) override;
48+
void adjustPlatformForProductFamily(HardwareInfo *hwInfo) override;
4749
uint64_t getHostMemCapabilities(const HardwareInfo *hwInfo) override;
4850
uint64_t getDeviceMemCapabilities() override;
4951
uint64_t getSingleDeviceSharedMemCapabilities() override;

shared/source/os_interface/hw_info_config.inl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,7 @@ bool HwInfoConfigHw<gfxProduct>::isEvenContextCountRequired() {
1414
return false;
1515
}
1616

17+
template <PRODUCT_FAMILY gfxProduct>
18+
void HwInfoConfigHw<gfxProduct>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {}
19+
1720
} // namespace NEO

shared/source/os_interface/windows/wddm/wddm.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ bool Wddm::init() {
9494

9595
HwInfoConfig *hwConfig = HwInfoConfig::get(productFamily);
9696

97+
hwConfig->adjustPlatformForProductFamily(hardwareInfo.get());
9798
if (hwConfig->configureHwInfo(hardwareInfo.get(), hardwareInfo.get(), nullptr)) {
9899
return false;
99100
}

0 commit comments

Comments
 (0)