Skip to content

Commit c8eb085

Browse files
feature: expose source ids for metric groups
Related-To: NEO-13480 Signed-off-by: Joshua Santosh Ranjan <[email protected]>
1 parent b113223 commit c8eb085

File tree

11 files changed

+198
-16
lines changed

11 files changed

+198
-16
lines changed

level_zero/core/source/driver/driver_handle_imp_helper.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,6 @@ const std::vector<std::pair<std::string, uint32_t>> DriverHandleImp::extensionsS
4747
{ZE_INTEL_KERNEL_GET_PROGRAM_BINARY_EXP_NAME, ZE_INTEL_KERNEL_GET_PROGRAM_BINARY_EXP_VERSION_CURRENT},
4848

4949
// Metrics Driver experimental extensions
50-
{ZET_INTEL_METRIC_APPEND_MARKER_EXP_NAME, ZET_INTEL_METRIC_APPEND_MARKER_EXP_VERSION_CURRENT}};
50+
{ZET_INTEL_METRIC_APPEND_MARKER_EXP_NAME, ZET_INTEL_METRIC_APPEND_MARKER_EXP_VERSION_CURRENT},
51+
{ZET_INTEL_METRIC_SOURCE_ID_EXP_NAME, ZET_INTEL_METRIC_SOURCE_ID_EXP_VERSION_CURRENT}};
5152
} // namespace L0

level_zero/include/level_zero/ze_stypes.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#define _ZE_STYPES_H
1010

1111
#include <level_zero/ze_api.h>
12+
#include <level_zero/zet_api.h>
1213

1314
#define ZE_STRUCTURE_TYPE_PITCHED_ALLOC_DEVICE_EXP_PROPERTIES (ze_structure_type_t)0x0002001D
1415
#define ZE_STRUCTURE_TYPE_BINDLESS_IMAGE_EXP_DESC (ze_structure_type_t)0x0002001E
@@ -34,4 +35,6 @@
3435
#define ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_EXP (ze_structure_type_t)0x00030024
3536
#define ZE_INTEL_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_WAIT_PARAMS_EXP (ze_structure_type_t)0x00030025
3637

38+
// Metric structure types
39+
#define ZET_INTEL_STRUCTURE_TYPE_METRIC_SOURCE_ID_EXP (zet_structure_type_t)0x0001000a // NOLINT(clang-analyzer-optin.core.EnumCastOutOfRange), NEO-12901
3740
#endif

level_zero/include/level_zero/zet_intel_gpu_metric.h

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#ifndef _ZET_INTEL_GPU_METRIC_H
99
#define _ZET_INTEL_GPU_METRIC_H
1010

11+
#include "level_zero/include/level_zero/ze_stypes.h"
1112
#include <level_zero/zet_api.h>
1213

1314
#if defined(__cplusplus)
@@ -22,6 +23,29 @@ extern "C" {
2223
#define ZET_INTEL_MAX_METRIC_GROUP_NAME_PREFIX_EXP 64u
2324
#define ZET_INTEL_METRIC_PROGRAMMABLE_PARAM_TYPE_GENERIC_EXP (0x7ffffffe)
2425

26+
#ifndef ZET_INTEL_METRIC_SOURCE_ID_EXP_NAME
27+
/// @brief Extension name for query to read the Intel Level Zero Driver Version String
28+
#define ZET_INTEL_METRIC_SOURCE_ID_EXP_NAME "ZET_intel_metric_source_id"
29+
#endif // ZET_INTEL_METRIC_SOURCE_ID_EXP_NAME
30+
31+
///////////////////////////////////////////////////////////////////////////////
32+
/// @brief Metric Source Id extension Version(s)
33+
typedef enum _zet_intel_metric_source_id_exp_version_t {
34+
ZET_INTEL_METRIC_SOURCE_ID_EXP_VERSION_1_0 = ZE_MAKE_VERSION(1, 0), ///< version 1.0
35+
ZET_INTEL_METRIC_SOURCE_ID_EXP_VERSION_CURRENT = ZE_MAKE_VERSION(1, 0), ///< latest known version
36+
ZET_INTEL_METRIC_SOURCE_ID_EXP_VERSION_FORCE_UINT32 = 0x7fffffff
37+
} zet_intel_metric_source_id_exp_version_t;
38+
39+
///////////////////////////////////////////////////////////////////////////////
40+
/// @brief Query an unique identifier representing the source of a metric group
41+
/// This structure can be passed in the 'pNext' of zet_metric_group_properties_t
42+
typedef struct _zet_intel_metric_source_id_exp_t {
43+
zet_structure_type_t stype; ///< [in] type of this structure
44+
const void *pNext; ///< [in][optional] must be null or a pointer to an extension-specific
45+
///< structure (i.e. contains stype and pNext).
46+
uint32_t sourceId; ///< [out] Returns an unique source Id of the metric group
47+
} zet_intel_metric_source_id_exp_t;
48+
2549
#ifndef ZET_INTEL_METRIC_APPEND_MARKER_EXP_NAME
2650
/// @brief Extension name for query to read the Intel Level Zero Driver Version String
2751
#define ZET_INTEL_METRIC_APPEND_MARKER_EXP_NAME "ZET_intel_metric_append_marker"

level_zero/tools/source/metrics/metric.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2020-2024 Intel Corporation
2+
* Copyright (C) 2020-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -22,6 +22,12 @@
2222

2323
namespace L0 {
2424

25+
void MetricSource::getMetricGroupSourceIdProperty(zet_base_properties_t *property) {
26+
27+
zet_intel_metric_source_id_exp_t *groupProperty = reinterpret_cast<zet_intel_metric_source_id_exp_t *>(property);
28+
groupProperty->sourceId = type;
29+
}
30+
2531
MetricDeviceContext::MetricDeviceContext(Device &inputDevice) : device(inputDevice) {
2632
auto deviceNeo = device.getNEODevice();
2733
std::tuple<uint32_t, uint32_t, uint32_t> subDeviceMap;

level_zero/tools/source/metrics/metric.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ class MetricSource {
9393

9494
protected:
9595
uint32_t type = MetricSource::metricSourceTypeUndefined;
96+
void getMetricGroupSourceIdProperty(zet_base_properties_t *property);
9697
};
9798

9899
class MultiDomainDeferredActivationTracker {

level_zero/tools/source/metrics/metric_ip_sampling_source.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -212,22 +212,23 @@ ze_result_t IpSamplingMetricSourceImp::handleMetricGroupExtendedProperties(zet_m
212212
while (pNext) {
213213
auto extendedProperties = reinterpret_cast<zet_base_properties_t *>(pNext);
214214

215-
if (extendedProperties->stype == ZET_STRUCTURE_TYPE_METRIC_GLOBAL_TIMESTAMPS_RESOLUTION_EXP) {
215+
if (extendedProperties->stype == ZET_INTEL_STRUCTURE_TYPE_METRIC_SOURCE_ID_EXP) {
216+
217+
getMetricGroupSourceIdProperty(extendedProperties);
218+
retVal = ZE_RESULT_SUCCESS;
219+
} else if (extendedProperties->stype == ZET_STRUCTURE_TYPE_METRIC_GLOBAL_TIMESTAMPS_RESOLUTION_EXP) {
216220

217221
zet_metric_global_timestamps_resolution_exp_t *metricsTimestampProperties =
218222
reinterpret_cast<zet_metric_global_timestamps_resolution_exp_t *>(extendedProperties);
219223

220224
getTimerResolution(metricsTimestampProperties->timerResolution);
221225
getTimestampValidBits(metricsTimestampProperties->timestampValidBits);
222226
retVal = ZE_RESULT_SUCCESS;
223-
}
224-
225-
if (extendedProperties->stype == ZET_STRUCTURE_TYPE_METRIC_GROUP_TYPE_EXP) {
227+
} else if (extendedProperties->stype == ZET_STRUCTURE_TYPE_METRIC_GROUP_TYPE_EXP) {
226228
zet_metric_group_type_exp_t *groupType = reinterpret_cast<zet_metric_group_type_exp_t *>(extendedProperties);
227229
groupType->type = ZET_METRIC_GROUP_TYPE_EXP_FLAG_OTHER;
228230
retVal = ZE_RESULT_SUCCESS;
229231
}
230-
231232
pNext = extendedProperties->pNext;
232233
}
233234

level_zero/tools/source/metrics/metric_oa_enumeration_imp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ void MetricEnumeration::updateMetricProgrammablesFromPrototypes(
613613
properties.tierNumber = getMetricTierNumber(metricPrototypeParams->UsageFlagsMask);
614614
properties.samplingType = getSamplingTypeFromApiMask(metricPrototypeParams->ApiMask);
615615
properties.parameterCount = metricPrototypeParams->OptionDescriptorCount;
616-
properties.sourceId = oaSourceId;
616+
properties.sourceId = MetricSource::metricSourceTypeOa;
617617
auto pMetricProgrammable = OaMetricProgrammableImp::create(properties, concurrentGroup, *metricPrototype, metricSource);
618618
metricProgrammables.push_back(pMetricProgrammable);
619619
}

level_zero/tools/source/metrics/metric_oa_enumeration_imp.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2020-2024 Intel Corporation
2+
* Copyright (C) 2020-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -20,7 +20,6 @@ static constexpr std::string_view globalSymbolOaMaxBufferSize = "OABufferMaxSize
2020
static constexpr std::string_view globalSymbolOaMaxTimestamp = "MaxTimestamp";
2121

2222
struct MetricEnumeration {
23-
static const uint32_t oaSourceId = 0x0A;
2423
MetricEnumeration(OaMetricSourceImp &metricSource);
2524
virtual ~MetricEnumeration();
2625

level_zero/tools/source/metrics/metric_oa_source.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,11 @@ ze_result_t OaMetricSourceImp::handleMetricGroupExtendedProperties(zet_metric_gr
208208
while (pNext) {
209209
auto extendedProperties = reinterpret_cast<zet_base_properties_t *>(pNext);
210210

211-
if (extendedProperties->stype == ZET_STRUCTURE_TYPE_METRIC_GLOBAL_TIMESTAMPS_RESOLUTION_EXP) {
211+
if (extendedProperties->stype == ZET_INTEL_STRUCTURE_TYPE_METRIC_SOURCE_ID_EXP) {
212+
213+
getMetricGroupSourceIdProperty(extendedProperties);
214+
retVal = ZE_RESULT_SUCCESS;
215+
} else if (extendedProperties->stype == ZET_STRUCTURE_TYPE_METRIC_GLOBAL_TIMESTAMPS_RESOLUTION_EXP) {
212216

213217
zet_metric_global_timestamps_resolution_exp_t *metricsTimestampProperties =
214218
reinterpret_cast<zet_metric_global_timestamps_resolution_exp_t *>(extendedProperties);
@@ -226,9 +230,7 @@ ze_result_t OaMetricSourceImp::handleMetricGroupExtendedProperties(zet_metric_gr
226230
metricsTimestampProperties->timestampValidBits = 0;
227231
return retVal;
228232
}
229-
}
230-
231-
if (extendedProperties->stype == ZET_STRUCTURE_TYPE_METRIC_GROUP_TYPE_EXP) {
233+
} else if (extendedProperties->stype == ZET_STRUCTURE_TYPE_METRIC_GROUP_TYPE_EXP) {
232234
zet_metric_group_type_exp_t *groupType = reinterpret_cast<zet_metric_group_type_exp_t *>(extendedProperties);
233235
groupType->type = ZET_METRIC_GROUP_TYPE_EXP_FLAG_OTHER;
234236
retVal = ZE_RESULT_SUCCESS;

level_zero/tools/test/unit_tests/sources/metrics/test_metric_ip_sampling_enumeration.cpp

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,50 @@ HWTEST2_F(MetricIpSamplingEnumerationTest, GivenDependenciesAvailableWhenMetricG
132132
}
133133
}
134134

135+
HWTEST2_F(MetricIpSamplingEnumerationTest, GivenDependenciesAvailableWhenMetricGroupSourceIdIsRequestedThenCorrectSourceIdIsReturned, EustallSupportedPlatforms) {
136+
137+
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
138+
for (auto device : testDevices) {
139+
140+
uint32_t metricGroupCount = 0;
141+
zetMetricGroupGet(device->toHandle(), &metricGroupCount, nullptr);
142+
EXPECT_EQ(metricGroupCount, 1u);
143+
144+
std::vector<zet_metric_group_handle_t> metricGroups;
145+
metricGroups.resize(metricGroupCount);
146+
147+
ASSERT_EQ(zetMetricGroupGet(device->toHandle(), &metricGroupCount, metricGroups.data()), ZE_RESULT_SUCCESS);
148+
ASSERT_NE(metricGroups[0], nullptr);
149+
150+
zet_intel_metric_source_id_exp_t metricGroupSourceId{};
151+
metricGroupSourceId.sourceId = 0xFFFFFFFF;
152+
metricGroupSourceId.pNext = nullptr;
153+
metricGroupSourceId.stype = ZET_INTEL_STRUCTURE_TYPE_METRIC_SOURCE_ID_EXP;
154+
zet_metric_group_properties_t metricGroupProperties = {ZET_STRUCTURE_TYPE_METRIC_GROUP_PROPERTIES, &metricGroupSourceId};
155+
EXPECT_EQ(zetMetricGroupGetProperties(metricGroups[0], &metricGroupProperties), ZE_RESULT_SUCCESS);
156+
EXPECT_EQ(metricGroupSourceId.sourceId, MetricSource::metricSourceTypeIpSampling);
157+
}
158+
}
159+
160+
using DriverVersionTest = Test<DeviceFixture>;
161+
162+
TEST_F(DriverVersionTest, givenSupportedExtensionsWhenCheckIfAppendMarkerIsSupportedThenCorrectResultsAreReturned) {
163+
uint32_t count = 0;
164+
ze_result_t res = driverHandle->getExtensionProperties(&count, nullptr);
165+
EXPECT_NE(0u, count);
166+
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
167+
168+
std::vector<ze_driver_extension_properties_t> extensionProperties;
169+
extensionProperties.resize(count);
170+
171+
res = driverHandle->getExtensionProperties(&count, extensionProperties.data());
172+
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
173+
174+
auto it = std::find_if(extensionProperties.begin(), extensionProperties.end(), [](const auto &extension) { return (strcmp(extension.name, ZET_INTEL_METRIC_SOURCE_ID_EXP_NAME) == 0); });
175+
EXPECT_NE(it, extensionProperties.end());
176+
EXPECT_EQ((*it).version, ZET_INTEL_METRIC_SOURCE_ID_EXP_VERSION_CURRENT);
177+
}
178+
135179
struct TestMetricProperties {
136180
const char *name;
137181
const char *description;
@@ -329,6 +373,35 @@ HWTEST2_F(MetricIpSamplingEnumerationTest, GivenEnumerationIsSuccessfulWhenQuery
329373
}
330374
}
331375

376+
HWTEST2_F(MetricIpSamplingEnumerationTest, GivenEnumerationIsSuccessfulWhenQueryingUnsupportedPropertyThenErrorIsReturned, EustallSupportedPlatforms) {
377+
378+
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());
379+
380+
for (auto device : testDevices) {
381+
382+
ze_device_properties_t deviceProps = {ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES_1_2, nullptr};
383+
device->getProperties(&deviceProps);
384+
385+
uint32_t metricGroupCount = 0;
386+
zetMetricGroupGet(device->toHandle(), &metricGroupCount, nullptr);
387+
EXPECT_EQ(metricGroupCount, 1u);
388+
389+
std::vector<zet_metric_group_handle_t> metricGroups;
390+
metricGroups.resize(metricGroupCount);
391+
392+
ASSERT_EQ(zetMetricGroupGet(device->toHandle(), &metricGroupCount, metricGroups.data()), ZE_RESULT_SUCCESS);
393+
ASSERT_NE(metricGroups[0], nullptr);
394+
395+
zet_metric_group_type_exp_t metricGroupType{};
396+
metricGroupType.stype = static_cast<zet_structure_type_t>(ZET_INTEL_STRUCTURE_TYPE_METRIC_SOURCE_ID_EXP + 1);
397+
metricGroupType.pNext = nullptr;
398+
metricGroupType.type = ZET_METRIC_GROUP_TYPE_EXP_FLAG_FORCE_UINT32;
399+
400+
zet_metric_group_properties_t metricGroupProperties = {ZET_STRUCTURE_TYPE_METRIC_GROUP_PROPERTIES, &metricGroupType};
401+
EXPECT_EQ(zetMetricGroupGetProperties(metricGroups[0], &metricGroupProperties), ZE_RESULT_ERROR_INVALID_ARGUMENT);
402+
}
403+
}
404+
332405
HWTEST2_F(MetricIpSamplingEnumerationTest, GivenEnumerationIsSuccessfulOnMulitDeviceWhenReadingMetricsTimestampThenResultIsSuccess, EustallSupportedPlatforms) {
333406

334407
EXPECT_EQ(ZE_RESULT_SUCCESS, testDevices[0]->getMetricDeviceContext().enableMetricApi());

level_zero/tools/test/unit_tests/sources/metrics/test_metric_oa_enumeration_1.cpp

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,78 @@ TEST_F(MetricEnumerationTest, givenValidArgumentsWhenZetGetMetricGroupProperties
270270
EXPECT_EQ(strcmp(metricGroupProperties.name, metricsSetParams.SymbolName), 0);
271271
}
272272

273+
TEST_F(MetricEnumerationTest, givenOaMetricSourceWhenQueryingSourceIdThenCorrectSourceIdIsReturned) {
274+
275+
// Metrics Discovery device.
276+
metricsDeviceParams.ConcurrentGroupsCount = 1;
277+
278+
// Metrics Discovery concurrent group.
279+
Mock<IConcurrentGroup_1_13> metricsConcurrentGroup;
280+
TConcurrentGroupParams_1_13 metricsConcurrentGroupParams = {};
281+
metricsConcurrentGroupParams.MetricSetsCount = 1;
282+
metricsConcurrentGroupParams.SymbolName = "OA";
283+
metricsConcurrentGroupParams.Description = "OA description";
284+
metricsConcurrentGroupParams.IoMeasurementInformationCount = 1;
285+
286+
Mock<MetricsDiscovery::IEquation_1_0> ioReadEquation;
287+
MetricsDiscovery::TEquationElement_1_0 ioEquationElement = {};
288+
ioEquationElement.Type = MetricsDiscovery::EQUATION_ELEM_IMM_UINT64;
289+
ioEquationElement.ImmediateUInt64 = 0;
290+
291+
ioReadEquation.getEquationElement.push_back(&ioEquationElement);
292+
293+
Mock<MetricsDiscovery::IInformation_1_0> ioMeasurement;
294+
MetricsDiscovery::TInformationParams_1_0 oaInformation = {};
295+
oaInformation.SymbolName = "BufferOverflow";
296+
oaInformation.IoReadEquation = &ioReadEquation;
297+
metricsConcurrentGroup.GetIoMeasurementInformationResult = &ioMeasurement;
298+
ioMeasurement.GetParamsResult = &oaInformation;
299+
300+
// Metrics Discovery:: metric set.
301+
Mock<MetricsDiscovery::IMetricSet_1_13> metricsSet;
302+
MetricsDiscovery::TMetricSetParams_1_11 metricsSetParams = {};
303+
metricsSetParams.ApiMask = MetricsDiscovery::API_TYPE_OCL;
304+
metricsSetParams.MetricsCount = 0;
305+
metricsSetParams.SymbolName = "Metric set name";
306+
metricsSetParams.ShortName = "Metric set description";
307+
308+
// One api: metric group handle.
309+
zet_metric_group_handle_t metricGroupHandle = {};
310+
zet_metric_group_properties_t metricGroupProperties = {ZET_STRUCTURE_TYPE_METRIC_GROUP_PROPERTIES, nullptr};
311+
312+
openMetricsAdapter();
313+
314+
setupDefaultMocksForMetricDevice(metricsDevice);
315+
316+
metricsDevice.getConcurrentGroupResults.push_back(&metricsConcurrentGroup);
317+
318+
metricsConcurrentGroup.GetParamsResult = &metricsConcurrentGroupParams;
319+
metricsConcurrentGroup.getMetricSetResult = &metricsSet;
320+
321+
metricsSet.GetParamsResult = &metricsSetParams;
322+
323+
// Metric group count.
324+
uint32_t metricGroupCount = 0;
325+
EXPECT_EQ(zetMetricGroupGet(device->toHandle(), &metricGroupCount, nullptr), ZE_RESULT_SUCCESS);
326+
EXPECT_EQ(metricGroupCount, 1u);
327+
328+
// Metric group handle.
329+
EXPECT_EQ(zetMetricGroupGet(device->toHandle(), &metricGroupCount, &metricGroupHandle), ZE_RESULT_SUCCESS);
330+
EXPECT_EQ(metricGroupCount, 1u);
331+
EXPECT_NE(metricGroupHandle, nullptr);
332+
333+
zet_intel_metric_source_id_exp_t metricGroupSourceId{};
334+
metricGroupSourceId.sourceId = 0xFFFFFFFF;
335+
metricGroupSourceId.pNext = nullptr;
336+
metricGroupSourceId.stype = ZET_INTEL_STRUCTURE_TYPE_METRIC_SOURCE_ID_EXP;
337+
338+
metricGroupProperties.pNext = &metricGroupSourceId;
339+
340+
// Metric group properties.
341+
EXPECT_EQ(zetMetricGroupGetProperties(metricGroupHandle, &metricGroupProperties), ZE_RESULT_SUCCESS);
342+
EXPECT_EQ(metricGroupSourceId.sourceId, MetricSource::metricSourceTypeOa);
343+
}
344+
273345
TEST_F(MetricEnumerationTest, givenInvalidArgumentsWhenZetMetricGetIsCalledThenReturnsFail) {
274346

275347
// Metrics Discovery device.
@@ -3408,9 +3480,9 @@ TEST_F(MetricEnumerationTest, givenValidArgumentsWhenAppendMarkerIsCalledThenRet
34083480
EXPECT_EQ(zetIntelCommandListAppendMarkerExp(nullptr, metricGroupHandle, 0), ZE_RESULT_ERROR_UNSUPPORTED_FEATURE);
34093481
}
34103482

3411-
using DriverVersionTest = Test<DeviceFixture>;
3483+
using AppendMarkerDriverVersionTest = Test<DeviceFixture>;
34123484

3413-
TEST_F(DriverVersionTest, givenSupportedExtensionsWhenCheckIfAppendMarkerIsSupportedThenCorrectResultsAreReturned) {
3485+
TEST_F(AppendMarkerDriverVersionTest, givenSupportedExtensionsWhenCheckIfAppendMarkerIsSupportedThenCorrectResultsAreReturned) {
34143486
uint32_t count = 0;
34153487
ze_result_t res = driverHandle->getExtensionProperties(&count, nullptr);
34163488
EXPECT_NE(0u, count);

0 commit comments

Comments
 (0)