From d3f28b92c92786ea4f842c005f4de0ad08647219 Mon Sep 17 00:00:00 2001 From: Bartosz Dunajski Date: Mon, 6 May 2024 17:05:22 +0000 Subject: [PATCH] fix: report sync dispatch extension only if implicit scaling enabled Related-To: NEO-8171 Signed-off-by: Bartosz Dunajski --- .../core/source/driver/driver_handle_imp.cpp | 2 +- .../sources/cmdlist/test_in_order_cmdlist.cpp | 38 +++++++++++++++++++ .../unit_tests/sources/driver/test_driver.cpp | 2 +- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/level_zero/core/source/driver/driver_handle_imp.cpp b/level_zero/core/source/driver/driver_handle_imp.cpp index 8e96a9b5ef..0eab55491c 100644 --- a/level_zero/core/source/driver/driver_handle_imp.cpp +++ b/level_zero/core/source/driver/driver_handle_imp.cpp @@ -153,7 +153,7 @@ ze_result_t DriverHandleImp::getExtensionProperties(uint32_t *pCount, } devices[0]->getL0GfxCoreHelper().appendPlatformSpecificExtensions(additionalExtensions, devices[0]->getProductHelper(), devices[0]->getHwInfo()); - if (devices[0]->getL0GfxCoreHelper().synchronizedDispatchSupported()) { + if (devices[0]->getL0GfxCoreHelper().synchronizedDispatchSupported() && devices[0]->isImplicitScalingCapable()) { additionalExtensions.emplace_back(ZE_SYNCHRONIZED_DISPATCH_EXP_NAME, ZE_SYNCHRONIZED_DISPATCH_EXP_VERSION_CURRENT); } diff --git a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp index fe941314be..141b8bb742 100644 --- a/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp +++ b/level_zero/core/test/unit_tests/sources/cmdlist/test_in_order_cmdlist.cpp @@ -4217,6 +4217,23 @@ HWTEST2_F(InOrderCmdListTests, givenInOrderModeWhenProgrammingKernelSplitWithEve alignedFree(alignedPtr); } +HWTEST2_F(InOrderCmdListTests, givenImplicitScalingEnabledWhenAskingForExtensionsThenReturnSyncDispatchExtension, IsAtLeastXeHpCore) { + uint32_t count = 0; + ze_result_t res = driverHandle->getExtensionProperties(&count, nullptr); + EXPECT_EQ(ZE_RESULT_SUCCESS, res); + + std::vector extensionProperties(count); + + res = driverHandle->getExtensionProperties(&count, extensionProperties.data()); + EXPECT_EQ(ZE_RESULT_SUCCESS, res); + + auto it = std::find_if(extensionProperties.begin(), extensionProperties.end(), [](const auto ¶m) { + return (strcmp(param.name, ZE_SYNCHRONIZED_DISPATCH_EXP_NAME) == 0); + }); + + EXPECT_EQ(extensionProperties.end(), it); +} + struct MultiTileInOrderCmdListTests : public InOrderCmdListTests { void SetUp() override { NEO::debugManager.flags.CreateMultipleSubDevices.set(partitionCount); @@ -4308,6 +4325,27 @@ HWTEST2_F(MultiTileInOrderCmdListTests, givenStandaloneEventAndKernelSplitWhenCa context->freeMem(hostAddress); } +HWTEST2_F(MultiTileInOrderCmdListTests, givenImplicitScalingEnabledWhenAskingForExtensionsThenReturnSyncDispatchExtension, IsAtLeastXeHpCore) { + uint32_t count = 0; + ze_result_t res = driverHandle->getExtensionProperties(&count, nullptr); + EXPECT_EQ(ZE_RESULT_SUCCESS, res); + + std::vector extensionProperties(count); + + res = driverHandle->getExtensionProperties(&count, extensionProperties.data()); + EXPECT_EQ(ZE_RESULT_SUCCESS, res); + + auto it = std::find_if(extensionProperties.begin(), extensionProperties.end(), [](const auto ¶m) { + return (strcmp(param.name, ZE_SYNCHRONIZED_DISPATCH_EXP_NAME) == 0); + }); + + if (device->getL0GfxCoreHelper().synchronizedDispatchSupported()) { + EXPECT_NE(extensionProperties.end(), it); + } else { + EXPECT_EQ(extensionProperties.end(), it); + } +} + HWTEST2_F(MultiTileInOrderCmdListTests, givenStandaloneEventAndCopyOnlyCmdListWhenCallingAppendThenSuccess, IsAtLeastXeHpCore) { uint64_t counterValue = 2; auto hostAddress = reinterpret_cast(allocHostMem(sizeof(uint64_t))); diff --git a/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp b/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp index 6e7a17ca89..4e4bd5c887 100644 --- a/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp +++ b/level_zero/core/test/unit_tests/sources/driver/test_driver.cpp @@ -118,7 +118,7 @@ TEST_F(DriverVersionTest, givenCallToGetExtensionPropertiesThenSupportedExtensio std::vector> additionalExtensions; device->getL0GfxCoreHelper().appendPlatformSpecificExtensions(additionalExtensions, device->getProductHelper(), device->getHwInfo()); - if (device->getL0GfxCoreHelper().synchronizedDispatchSupported()) { + if (device->getL0GfxCoreHelper().synchronizedDispatchSupported() && device->isImplicitScalingCapable()) { additionalExtensions.emplace_back(ZE_SYNCHRONIZED_DISPATCH_EXP_NAME, ZE_SYNCHRONIZED_DISPATCH_EXP_VERSION_CURRENT); }