diff --git a/opencl/source/platform/platform.cpp b/opencl/source/platform/platform.cpp index 098b0d6465..42101c01ee 100644 --- a/opencl/source/platform/platform.cpp +++ b/opencl/source/platform/platform.cpp @@ -161,6 +161,11 @@ bool Platform::initialize(std::vector> devices) { this->platformInfo->extensions = this->clDevices[0]->getDeviceInfo().deviceExtensions; + auto preferredPlatformName = this->clDevices[0]->getHardwareInfo().capabilityTable.preferredPlatformName; + if (preferredPlatformName != nullptr) { + this->platformInfo->name = preferredPlatformName; + } + if (DebugManager.flags.OverridePlatformName.get() != "unk") { this->platformInfo->name.assign(DebugManager.flags.OverridePlatformName.get().c_str()); } diff --git a/opencl/source/platform/platform.h b/opencl/source/platform/platform.h index 132e99387d..b9f026d475 100644 --- a/opencl/source/platform/platform.h +++ b/opencl/source/platform/platform.h @@ -15,8 +15,6 @@ #include #include -struct PlatformInfo; - namespace NEO { class CompilerInterface; @@ -24,6 +22,7 @@ class Device; class ExecutionEnvironment; class GmmHelper; class GmmClientContext; +struct PlatformInfo; struct HardwareInfo; template <> diff --git a/opencl/source/platform/platform_info.h b/opencl/source/platform/platform_info.h index 4f342265e6..6b1eab47e1 100644 --- a/opencl/source/platform/platform_info.h +++ b/opencl/source/platform/platform_info.h @@ -6,11 +6,14 @@ */ #pragma once + #include "CL/cl.h" #include #include +namespace NEO { + struct PlatformInfo { std::vector extensionsWithVersion; std::string profile = "FULL_PROFILE"; @@ -21,3 +24,5 @@ struct PlatformInfo { std::string icdSuffixKhr = "INTEL"; cl_version numericVersion = 0; }; + +} // namespace NEO diff --git a/opencl/test/unit_test/platform/platform_tests.cpp b/opencl/test/unit_test/platform/platform_tests.cpp index bf45f54b06..3207d8ae2f 100644 --- a/opencl/test/unit_test/platform/platform_tests.cpp +++ b/opencl/test/unit_test/platform/platform_tests.cpp @@ -23,6 +23,7 @@ #include "shared/test/common/mocks/mock_sip.h" #include "opencl/source/cl_device/cl_device.h" +#include "opencl/source/platform/platform_info.h" #include "opencl/source/sharings/sharing_factory.h" #include "opencl/test/unit_test/fixtures/platform_fixture.h" #include "opencl/test/unit_test/mocks/mock_cl_device.h" @@ -438,6 +439,16 @@ TEST(PlatformInitTest, GivenDebuggingEnabledWhenPlatformIsInitializedThenL0Debug EXPECT_NE(nullptr, platform()->getClDevice(0)->getDevice().getL0Debugger()); } +TEST(PlatformInitTest, GivenPreferredPlatformNameWhenPlatformIsInitializedThenOverridePlatformName) { + std::vector> devices; + auto executionEnvironment = new MockExecutionEnvironment(defaultHwInfo.get(), false, 1); + executionEnvironment->rootDeviceEnvironments[0]->getMutableHardwareInfo()->capabilityTable.preferredPlatformName = "Overridden Platform Name"; + devices.push_back(std::make_unique(executionEnvironment, 0)); + auto status = platform()->initialize(std::move(devices)); + EXPECT_TRUE(status); + EXPECT_STREQ("Overridden Platform Name", platform()->getPlatformInfo().name.c_str()); +} + TEST(PlatformGroupDevicesTest, whenMultipleDevicesAreCreatedThenGroupDevicesCreatesVectorPerEachProductFamily) { DebugManagerStateRestore restorer; const size_t numRootDevices = 5u; diff --git a/shared/source/ail/ail_configuration.h b/shared/source/ail/ail_configuration.h index 1a728c6852..369877b0f9 100644 --- a/shared/source/ail/ail_configuration.h +++ b/shared/source/ail/ail_configuration.h @@ -35,6 +35,7 @@ enum class AILEnumeration : uint32_t { DISABLE_COMPRESSION, ENABLE_FP64, DISABLE_HOST_PTR_TRACKING, + ENABLE_LEGACY_PLATFORM_NAME, AIL_MAX_OPTIONS_COUNT }; diff --git a/shared/source/gen11/hw_info_ehl.cpp b/shared/source/gen11/hw_info_ehl.cpp index 205327d4db..bdd33da9c9 100644 --- a/shared/source/gen11/hw_info_ehl.cpp +++ b/shared/source/gen11/hw_info_ehl.cpp @@ -38,6 +38,7 @@ const RuntimeCapabilityTable EHL::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen11/hw_info_icllp.cpp b/shared/source/gen11/hw_info_icllp.cpp index cfd20b5841..9a9ce5e57c 100644 --- a/shared/source/gen11/hw_info_icllp.cpp +++ b/shared/source/gen11/hw_info_icllp.cpp @@ -38,6 +38,7 @@ const RuntimeCapabilityTable ICLLP::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen11/hw_info_lkf.cpp b/shared/source/gen11/hw_info_lkf.cpp index d63f48893c..fe85a48fb4 100644 --- a/shared/source/gen11/hw_info_lkf.cpp +++ b/shared/source/gen11/hw_info_lkf.cpp @@ -38,6 +38,7 @@ const RuntimeCapabilityTable LKF::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen12lp/hw_info_adln.cpp b/shared/source/gen12lp/hw_info_adln.cpp index 70ee54a7f2..8482a2b709 100644 --- a/shared/source/gen12lp/hw_info_adln.cpp +++ b/shared/source/gen12lp/hw_info_adln.cpp @@ -41,6 +41,7 @@ const RuntimeCapabilityTable ADLN::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen12lp/hw_info_adlp.cpp b/shared/source/gen12lp/hw_info_adlp.cpp index 286b50321c..c23f8cec4d 100644 --- a/shared/source/gen12lp/hw_info_adlp.cpp +++ b/shared/source/gen12lp/hw_info_adlp.cpp @@ -41,6 +41,7 @@ const RuntimeCapabilityTable ADLP::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen12lp/hw_info_adls.cpp b/shared/source/gen12lp/hw_info_adls.cpp index 5b9c71b529..3478c7611a 100644 --- a/shared/source/gen12lp/hw_info_adls.cpp +++ b/shared/source/gen12lp/hw_info_adls.cpp @@ -41,6 +41,7 @@ const RuntimeCapabilityTable ADLS::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen12lp/hw_info_dg1.cpp b/shared/source/gen12lp/hw_info_dg1.cpp index 49fb4db1c1..e22cbb3d15 100644 --- a/shared/source/gen12lp/hw_info_dg1.cpp +++ b/shared/source/gen12lp/hw_info_dg1.cpp @@ -41,6 +41,7 @@ const RuntimeCapabilityTable DG1::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen12lp/hw_info_rkl.cpp b/shared/source/gen12lp/hw_info_rkl.cpp index bf6f8f380e..dbbcdfd75b 100644 --- a/shared/source/gen12lp/hw_info_rkl.cpp +++ b/shared/source/gen12lp/hw_info_rkl.cpp @@ -41,6 +41,7 @@ const RuntimeCapabilityTable RKL::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen12lp/hw_info_tgllp.cpp b/shared/source/gen12lp/hw_info_tgllp.cpp index 479d922d46..78b936ae31 100644 --- a/shared/source/gen12lp/hw_info_tgllp.cpp +++ b/shared/source/gen12lp/hw_info_tgllp.cpp @@ -41,6 +41,7 @@ const RuntimeCapabilityTable TGLLP::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen8/hw_info_bdw.cpp b/shared/source/gen8/hw_info_bdw.cpp index 4768c7a2b9..664e034a1b 100644 --- a/shared/source/gen8/hw_info_bdw.cpp +++ b/shared/source/gen8/hw_info_bdw.cpp @@ -38,6 +38,7 @@ const RuntimeCapabilityTable BDW::capabilityTable{ 80, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::Disabled, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen9/hw_info_bxt.cpp b/shared/source/gen9/hw_info_bxt.cpp index fd3a327042..b1e0437f6e 100644 --- a/shared/source/gen9/hw_info_bxt.cpp +++ b/shared/source/gen9/hw_info_bxt.cpp @@ -38,6 +38,7 @@ const RuntimeCapabilityTable BXT::capabilityTable{ 52.083, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen9/hw_info_cfl.cpp b/shared/source/gen9/hw_info_cfl.cpp index e92494d8f6..4a05d323d0 100644 --- a/shared/source/gen9/hw_info_cfl.cpp +++ b/shared/source/gen9/hw_info_cfl.cpp @@ -39,6 +39,7 @@ const RuntimeCapabilityTable CFL::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen9/hw_info_glk.cpp b/shared/source/gen9/hw_info_glk.cpp index f33a87f9c8..d007adfd58 100644 --- a/shared/source/gen9/hw_info_glk.cpp +++ b/shared/source/gen9/hw_info_glk.cpp @@ -38,6 +38,7 @@ const RuntimeCapabilityTable GLK::capabilityTable{ 52.083, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen9/hw_info_kbl.cpp b/shared/source/gen9/hw_info_kbl.cpp index 0bc5f5da45..a65d619e40 100644 --- a/shared/source/gen9/hw_info_kbl.cpp +++ b/shared/source/gen9/hw_info_kbl.cpp @@ -39,6 +39,7 @@ const RuntimeCapabilityTable KBL::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/gen9/hw_info_skl.cpp b/shared/source/gen9/hw_info_skl.cpp index 056626a0cd..36409d9bd7 100644 --- a/shared/source/gen9/hw_info_skl.cpp +++ b/shared/source/gen9/hw_info_skl.cpp @@ -38,6 +38,7 @@ const RuntimeCapabilityTable SKL::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::MidThread, // defaultPreemptionMode aub_stream::ENGINE_RCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/helpers/hw_info.h b/shared/source/helpers/hw_info.h index b00b9d8661..fefae92359 100644 --- a/shared/source/helpers/hw_info.h +++ b/shared/source/helpers/hw_info.h @@ -15,6 +15,7 @@ #include "sku_info.h" namespace NEO { + enum PreemptionMode : uint32_t; class CompilerProductHelper; @@ -26,6 +27,7 @@ struct RuntimeCapabilityTable { double defaultProfilingTimerResolution; size_t requiredPreemptionSurfaceSize; const char *deviceName; + const char *preferredPlatformName; PreemptionMode defaultPreemptionMode; aub_stream::EngineType defaultEngineType; uint32_t maxRenderFrequency; diff --git a/shared/source/xe_hpc_core/hw_info_pvc.cpp b/shared/source/xe_hpc_core/hw_info_pvc.cpp index 9a8b1f33b0..7375d591c9 100644 --- a/shared/source/xe_hpc_core/hw_info_pvc.cpp +++ b/shared/source/xe_hpc_core/hw_info_pvc.cpp @@ -53,6 +53,7 @@ const RuntimeCapabilityTable PVC::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::ThreadGroup, // defaultPreemptionMode aub_stream::ENGINE_CCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/xe_hpg_core/hw_info_dg2.cpp b/shared/source/xe_hpg_core/hw_info_dg2.cpp index 2bb18663c3..81477168dc 100644 --- a/shared/source/xe_hpg_core/hw_info_dg2.cpp +++ b/shared/source/xe_hpg_core/hw_info_dg2.cpp @@ -44,6 +44,7 @@ const RuntimeCapabilityTable DG2::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::ThreadGroup, // defaultPreemptionMode aub_stream::ENGINE_CCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/source/xe_hpg_core/hw_info_mtl.cpp b/shared/source/xe_hpg_core/hw_info_mtl.cpp index 825a281673..fb4818b080 100644 --- a/shared/source/xe_hpg_core/hw_info_mtl.cpp +++ b/shared/source/xe_hpg_core/hw_info_mtl.cpp @@ -39,6 +39,7 @@ const RuntimeCapabilityTable MTL::capabilityTable{ 83.333, // defaultProfilingTimerResolution MemoryConstants::pageSize, // requiredPreemptionSurfaceSize "", // deviceName + nullptr, // preferredPlatformName PreemptionMode::ThreadGroup, // defaultPreemptionMode aub_stream::ENGINE_CCS, // defaultEngineType 0, // maxRenderFrequency diff --git a/shared/test/unit_test/device/neo_device_tests.cpp b/shared/test/unit_test/device/neo_device_tests.cpp index 5fc5d3a1e2..7098dc354d 100644 --- a/shared/test/unit_test/device/neo_device_tests.cpp +++ b/shared/test/unit_test/device/neo_device_tests.cpp @@ -1050,3 +1050,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, DeviceTests, givenXeHPAndLaterProductWhenRequestedV EXPECT_FALSE(defaultHwInfo->capabilityTable.ftrSupportsVmeAvcTextureSampler); EXPECT_FALSE(defaultHwInfo->capabilityTable.ftrSupportsVmeAvcPreemption); } + +TEST_F(DeviceTests, whenCheckingPreferredPlatformNameThenNullIsReturned) { + EXPECT_EQ(nullptr, defaultHwInfo->capabilityTable.preferredPlatformName); +}