Skip to content

Commit 3e45cf2

Browse files
feature: add debug key to expose L0 DDI Handles extension
Related-To: NEO-13121, NEO-13917 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
1 parent 70f3342 commit 3e45cf2

File tree

4 files changed

+43
-6
lines changed

4 files changed

+43
-6
lines changed

level_zero/core/source/driver/driver_handle_imp.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,15 @@ ze_result_t DriverHandleImp::getProperties(ze_driver_properties_t *properties) {
124124
uint64_t uniqueId = (properties->driverVersion) | (uuidTimestamp & 0xFFFFFFFF00000000);
125125
memcpy_s(properties->uuid.id, sizeof(uniqueId), &uniqueId, sizeof(uniqueId));
126126

127+
auto pNext = reinterpret_cast<ze_base_properties_t *>(properties->pNext);
128+
while (pNext) {
129+
if (pNext->stype == ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES && NEO::debugManager.flags.EnableDdiHandlesExtension.get()) {
130+
ze_driver_ddi_handles_ext_properties_t *pDdiHandlesExtProperties = reinterpret_cast<ze_driver_ddi_handles_ext_properties_t *>(pNext);
131+
pDdiHandlesExtProperties->flags = ze_driver_ddi_handle_ext_flag_t::ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED;
132+
}
133+
pNext = reinterpret_cast<ze_base_properties_t *>(pNext->pNext);
134+
}
135+
127136
return ZE_RESULT_SUCCESS;
128137
}
129138

level_zero/core/test/unit_tests/sources/driver/test_driver.cpp

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ TEST_F(DriverVersionTest, givenExternalAllocatorWhenCallingGetExtensionPropertie
231231
}
232232

233233
TEST_F(DriverVersionTest, WhenGettingDriverVersionThenExpectedDriverVersionIsReturned) {
234-
ze_driver_properties_t properties;
234+
ze_driver_properties_t properties{ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES};
235235
ze_result_t res = driverHandle->getProperties(&properties);
236236
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
237237

@@ -244,7 +244,7 @@ TEST_F(DriverVersionTest, GivenDebugOverrideWhenGettingDriverVersionThenExpected
244244
DebugManagerStateRestore restorer;
245245
NEO::debugManager.flags.OverrideDriverVersion.set(0);
246246

247-
ze_driver_properties_t properties;
247+
ze_driver_properties_t properties{ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES};
248248
ze_result_t res = driverHandle->getProperties(&properties);
249249
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
250250

@@ -270,7 +270,7 @@ TEST_F(DriverVersionTest, GivenDebugOverrideWhenGettingDriverVersionThenExpected
270270

271271
TEST_F(DriverVersionTest, givenCallToGetDriverPropertiesThenUuidIsSet) {
272272

273-
ze_driver_properties_t properties;
273+
ze_driver_properties_t properties{ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES};
274274
ze_result_t res = driverHandle->getProperties(&properties);
275275
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
276276

@@ -288,12 +288,12 @@ TEST_F(DriverVersionTest, givenCallToGetDriverPropertiesThenUuidIsSet) {
288288

289289
TEST_F(DriverVersionTest, whenCallingGetDriverPropertiesRepeatedlyThenTheSameUuidIsReturned) {
290290

291-
ze_driver_properties_t properties;
291+
ze_driver_properties_t properties{ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES};
292292
ze_result_t res = driverHandle->getProperties(&properties);
293293
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
294294

295295
for (uint32_t i = 0; i < 32; i++) {
296-
ze_driver_properties_t newProperties;
296+
ze_driver_properties_t newProperties{ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES};
297297
res = driverHandle->getProperties(&newProperties);
298298
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
299299

@@ -1006,7 +1006,7 @@ TEST_F(DriverHandleTest, givenValidDriverHandleWhenClearErrorDescriptionIsCalled
10061006
TEST(zeDriverHandleGetProperties, whenZeDriverGetPropertiesIsCalledThenGetPropertiesIsCalled) {
10071007
ze_result_t result = ZE_RESULT_SUCCESS;
10081008
Mock<DriverHandle> driverHandle;
1009-
ze_driver_properties_t properties;
1009+
ze_driver_properties_t properties{ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES};
10101010
ze_result_t expectedResult = ZE_RESULT_ERROR_INSUFFICIENT_PERMISSIONS;
10111011

10121012
driverHandle.getPropertiesResult = expectedResult;
@@ -1015,6 +1015,32 @@ TEST(zeDriverHandleGetProperties, whenZeDriverGetPropertiesIsCalledThenGetProper
10151015
EXPECT_EQ(1u, driverHandle.getPropertiesCalled);
10161016
}
10171017

1018+
using GetDriverPropertiesTest = Test<DeviceFixture>;
1019+
1020+
TEST_F(GetDriverPropertiesTest, whenGettingDdiHandlesExtensionPropertiesThenSupportIsExposedOnlyWhenDebugKeyIsSet) {
1021+
DebugManagerStateRestore restorer;
1022+
1023+
ze_driver_properties_t driverProperties = {ZE_STRUCTURE_TYPE_DRIVER_PROPERTIES};
1024+
ze_driver_ddi_handles_ext_properties_t ddiHandlesExtProperties = {ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES};
1025+
driverProperties.pNext = &ddiHandlesExtProperties;
1026+
1027+
ze_result_t result = driverHandle->getProperties(&driverProperties);
1028+
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
1029+
EXPECT_EQ(0u, ddiHandlesExtProperties.flags);
1030+
1031+
ddiHandlesExtProperties = {ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES};
1032+
NEO::debugManager.flags.EnableDdiHandlesExtension.set(0);
1033+
result = driverHandle->getProperties(&driverProperties);
1034+
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
1035+
EXPECT_EQ(0u, ddiHandlesExtProperties.flags);
1036+
1037+
ddiHandlesExtProperties = {ZE_STRUCTURE_TYPE_DRIVER_DDI_HANDLES_EXT_PROPERTIES};
1038+
NEO::debugManager.flags.EnableDdiHandlesExtension.set(1);
1039+
result = driverHandle->getProperties(&driverProperties);
1040+
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
1041+
EXPECT_EQ(ze_driver_ddi_handle_ext_flag_t::ZE_DRIVER_DDI_HANDLE_EXT_FLAG_DDI_HANDLE_EXT_SUPPORTED, ddiHandlesExtProperties.flags);
1042+
}
1043+
10181044
TEST(zeDriverHandleGetApiVersion, whenZeDriverGetApiIsCalledThenGetApiVersionIsCalled) {
10191045
ze_result_t result = ZE_RESULT_SUCCESS;
10201046
Mock<DriverHandle> driverHandle;

shared/source/debug_settings/debug_variables_base.inl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ DECLARE_DEBUG_VARIABLE(bool, SkipInOrderNonWalkerSignalingAllowed, false, "Allow
9191
DECLARE_DEBUG_VARIABLE(bool, PipelinedPipelineSelect, false, "Restore usage of default pipeline select command")
9292
DECLARE_DEBUG_VARIABLE(bool, AbortHostSyncOnNonHostVisibleEvent, false, "Aborts execution when user calls zeEventHostSynchronize on event without host signal scope")
9393
DECLARE_DEBUG_VARIABLE(bool, IgnoreProductSpecificIoctlHelper, false, "When set then product specific ioctl helper is not created even if available, generic one is used")
94+
DECLARE_DEBUG_VARIABLE(bool, EnableDdiHandlesExtension, false, "Enable L0 Driver Direct Device Interface (DDI) Handles Extension")
9495
DECLARE_DEBUG_VARIABLE(std::string, ForceDeviceId, std::string("unk"), "Override device id in AUB/TBX mode")
9596
DECLARE_DEBUG_VARIABLE(std::string, FilterDeviceId, std::string("unk"), "Device id filter, adapter matching device id will be opened; ignored when unk")
9697
DECLARE_DEBUG_VARIABLE(std::string, FilterBdfPath, std::string("unk"), "Linux-only, BDF path filter, only matching paths will be opened; ignored when unk")

shared/test/common/test_files/igdrcl.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,7 @@ ForceRunAloneContext = -1
458458
AppendMemoryPrefetchForKmdMigratedSharedAllocations = 1
459459
ForceMemoryPrefetchForKmdMigratedSharedAllocations = 0
460460
ClKhrExternalMemoryExtension = 1
461+
EnableDdiHandlesExtension = 0
461462
WaitForMemoryRelease = 0
462463
KMDSupportForCrossTileMigrationPolicy = -1
463464
CreateContextWithAccessCounters = -1

0 commit comments

Comments
 (0)