Skip to content

Commit 0420df7

Browse files
Create enum wrapper for drm engine class values
Related-To: NEO-6852, NEO-6999 Signed-off-by: Mateusz Jablonski <[email protected]>
1 parent 1e7d789 commit 0420df7

File tree

10 files changed

+96
-58
lines changed

10 files changed

+96
-58
lines changed

level_zero/tools/test/unit_tests/sources/metrics/linux/test_metric_ip_sampling_linux_pvc_prelim.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class DrmPrelimMock : public DrmMock {
5151
}
5252

5353
bool queryEngineInfo() override {
54-
uint16_t computeEngineClass = getIoctlHelper()->getComputeEngineClass();
54+
uint16_t computeEngineClass = getIoctlHelper()->getDrmParamValue(DrmParam::EngineClassCompute);
5555
std::vector<EngineCapabilities> engines(4);
5656
engines[0].engine = {computeEngineClass, 0};
5757
engines[0].capabilities = 0;
@@ -82,7 +82,7 @@ class DrmPrelimMock : public DrmMock {
8282
}
8383

8484
bool queryEngineInfo1SubDevice() {
85-
uint16_t computeEngineClass = getIoctlHelper()->getComputeEngineClass();
85+
uint16_t computeEngineClass = getIoctlHelper()->getDrmParamValue(DrmParam::EngineClassCompute);
8686
std::vector<EngineCapabilities> engines(1);
8787
engines[0].engine = {computeEngineClass, 0};
8888
engines[0].capabilities = 0;

shared/source/os_interface/linux/drm_neo.cpp

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ void Drm::setLowPriorityContextParam(uint32_t drmContextId) {
324324
int Drm::getQueueSliceCount(GemContextParamSseu *sseu) {
325325
GemContextParam contextParam = {};
326326
contextParam.param = I915_CONTEXT_PARAM_SSEU;
327-
sseu->engine.engineClass = I915_ENGINE_CLASS_RENDER;
327+
sseu->engine.engineClass = ioctlHelper->getDrmParamValue(DrmParam::EngineClassRender);
328328
sseu->engine.engineInstance = I915_EXEC_DEFAULT;
329329
contextParam.value = reinterpret_cast<uint64_t>(sseu);
330330
contextParam.size = sizeof(struct GemContextParamSseu);
@@ -1016,25 +1016,18 @@ bool Drm::queryEngineInfo(bool isSysmanEnabled) {
10161016
distanceInfo.region = region.region;
10171017

10181018
for (const auto &engine : engines) {
1019-
switch (engine.engine.engineClass) {
1020-
case I915_ENGINE_CLASS_RENDER:
1021-
case I915_ENGINE_CLASS_COPY:
1019+
if (engine.engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCompute) ||
1020+
engine.engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassRender) ||
1021+
engine.engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCopy)) {
10221022
distanceInfo.engine = engine.engine;
10231023
distanceInfos.push_back(distanceInfo);
1024-
break;
1025-
case I915_ENGINE_CLASS_VIDEO:
1026-
case I915_ENGINE_CLASS_VIDEO_ENHANCE:
1027-
if (isSysmanEnabled == true) {
1028-
distanceInfo.engine = engine.engine;
1029-
distanceInfos.push_back(distanceInfo);
1030-
}
1031-
break;
1032-
default:
1033-
if (engine.engine.engineClass == ioctlHelper->getComputeEngineClass()) {
1024+
} else if (isSysmanEnabled) {
1025+
1026+
if (engine.engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassVideo) ||
1027+
engine.engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassVideoEnhance)) {
10341028
distanceInfo.engine = engine.engine;
10351029
distanceInfos.push_back(distanceInfo);
10361030
}
1037-
break;
10381031
}
10391032
}
10401033
}
@@ -1218,14 +1211,14 @@ unsigned int Drm::bindDrmContext(uint32_t drmContextId, uint32_t deviceIndex, au
12181211

12191212
bool setupVirtualEngines = false;
12201213
unsigned int engineCount = static_cast<unsigned int>(numberOfCCS);
1221-
if (useVirtualEnginesForCcs && engine->engineClass == ioctlHelper->getComputeEngineClass() && numberOfCCS > 1u) {
1214+
if (useVirtualEnginesForCcs && engine->engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCompute) && numberOfCCS > 1u) {
12221215
numEnginesInContext = numberOfCCS + 1;
12231216
balancer.num_siblings = numberOfCCS;
12241217
setupVirtualEngines = true;
12251218
}
12261219

12271220
bool includeMainCopyEngineInGroup = false;
1228-
if (useVirtualEnginesForBcs && engine->engineClass == I915_ENGINE_CLASS_COPY && numberOfBCS > 1u) {
1221+
if (useVirtualEnginesForBcs && engine->engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCopy) && numberOfBCS > 1u) {
12291222
numEnginesInContext = static_cast<uint32_t>(numberOfBCS) + 1;
12301223
balancer.num_siblings = numberOfBCS;
12311224
setupVirtualEngines = true;
@@ -1242,11 +1235,11 @@ unsigned int Drm::bindDrmContext(uint32_t drmContextId, uint32_t deviceIndex, au
12421235
if (setupVirtualEngines) {
12431236
balancer.base.name = I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE;
12441237
contextEngines.extensions = castToUint64(&balancer);
1245-
contextEngines.engines[0].engine_class = I915_ENGINE_CLASS_INVALID;
1246-
contextEngines.engines[0].engine_instance = I915_ENGINE_CLASS_INVALID_NONE;
1238+
contextEngines.engines[0].engine_class = ioctlHelper->getDrmParamValue(DrmParam::EngineClassInvalid);
1239+
contextEngines.engines[0].engine_instance = ioctlHelper->getDrmParamValue(DrmParam::EngineClassInvalidNone);
12471240

12481241
for (auto engineIndex = 0u; engineIndex < engineCount; engineIndex++) {
1249-
if (useVirtualEnginesForBcs && engine->engineClass == I915_ENGINE_CLASS_COPY) {
1242+
if (useVirtualEnginesForBcs && engine->engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCopy)) {
12501243
auto mappedBcsEngineType = static_cast<aub_stream::EngineType>(EngineHelpers::mapBcsIndexToEngineType(engineIndex, includeMainCopyEngineInGroup));
12511244
bool isBcsEnabled = rootDeviceEnvironment.getHardwareInfo()->featureTable.ftrBcsInfo.test(EngineHelpers::getBcsIndex(mappedBcsEngineType));
12521245

@@ -1258,7 +1251,7 @@ unsigned int Drm::bindDrmContext(uint32_t drmContextId, uint32_t deviceIndex, au
12581251
}
12591252
UNRECOVERABLE_IF(!engine);
12601253

1261-
if (useVirtualEnginesForCcs && engine->engineClass == ioctlHelper->getComputeEngineClass()) {
1254+
if (useVirtualEnginesForCcs && engine->engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCompute)) {
12621255
engine = engineInfo->getEngineInstance(deviceIndex, static_cast<aub_stream::EngineType>(EngineHelpers::mapCcsIndexToEngineType(engineIndex)));
12631256
}
12641257
UNRECOVERABLE_IF(!engine);

shared/source/os_interface/linux/drm_wrappers.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,5 +236,15 @@ enum class DrmIoctl {
236236
GemCacheReserve,
237237
};
238238

239+
enum class DrmParam {
240+
EngineClassRender,
241+
EngineClassCompute,
242+
EngineClassCopy,
243+
EngineClassVideo,
244+
EngineClassVideoEnhance,
245+
EngineClassInvalid,
246+
EngineClassInvalidNone,
247+
};
248+
239249
unsigned int getIoctlRequestValue(DrmIoctl ioctlRequest, IoctlHelper *ioctlHelper);
240250
} // namespace NEO

shared/source/os_interface/linux/engine_info.cpp

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -55,23 +55,19 @@ EngineInfo::EngineInfo(Drm *drm, HardwareInfo *hwInfo, const std::vector<EngineC
5555
uint32_t numHostLinkCopyEngines = 0;
5656
uint32_t numScaleUpLinkCopyEngines = 0;
5757

58+
auto ioctlHelper = drm->getIoctlHelper();
59+
5860
for (const auto &engineInfo : engineInfos) {
5961
auto &engine = engineInfo.engine;
6062
tileToEngineMap.emplace(0, engine);
61-
switch (engine.engineClass) {
62-
case I915_ENGINE_CLASS_RENDER:
63+
if (engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassRender)) {
6364
tileToEngineToInstanceMap[0][EngineHelpers::remapEngineTypeToHwSpecific(aub_stream::EngineType::ENGINE_RCS, *hwInfo)] = engine;
64-
break;
65-
case I915_ENGINE_CLASS_COPY:
66-
assignCopyEngine(EngineInfo::getBaseCopyEngineType(drm->getIoctlHelper(), engineInfo.capabilities), 0, engine,
65+
} else if (engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCopy)) {
66+
assignCopyEngine(EngineInfo::getBaseCopyEngineType(ioctlHelper, engineInfo.capabilities), 0, engine,
6767
bcsInfoMask, numHostLinkCopyEngines, numScaleUpLinkCopyEngines);
68-
break;
69-
default:
70-
if (engine.engineClass == drm->getIoctlHelper()->getComputeEngineClass()) {
71-
tileToEngineToInstanceMap[0][static_cast<aub_stream::EngineType>(aub_stream::ENGINE_CCS + computeEngines)] = engine;
72-
computeEngines++;
73-
}
74-
break;
68+
} else if (engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCompute)) {
69+
tileToEngineToInstanceMap[0][static_cast<aub_stream::EngineType>(aub_stream::ENGINE_CCS + computeEngines)] = engine;
70+
computeEngines++;
7571
}
7672
}
7773
setSupportedEnginesInfo(hwInfo, computeEngines, bcsInfoMask);
@@ -82,6 +78,7 @@ EngineInfo::EngineInfo(Drm *drm, HardwareInfo *hwInfo, uint32_t tileCount, const
8278
auto tile = 0u;
8379
auto computeEnginesPerTile = 0u;
8480
auto copyEnginesPerTile = 0u;
81+
auto ioctlHelper = drm->getIoctlHelper();
8582
for (auto i = 0u; i < distanceInfos.size(); i++) {
8683
if (i > 0u && distanceInfos[i].region.memoryInstance != distanceInfos[i - 1u].region.memoryInstance) {
8784
tile++;
@@ -93,20 +90,14 @@ EngineInfo::EngineInfo(Drm *drm, HardwareInfo *hwInfo, uint32_t tileCount, const
9390

9491
auto engine = distanceInfos[i].engine;
9592
tileToEngineMap.emplace(tile, engine);
96-
switch (engine.engineClass) {
97-
case I915_ENGINE_CLASS_RENDER:
93+
if (engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassRender)) {
9894
tileToEngineToInstanceMap[tile][EngineHelpers::remapEngineTypeToHwSpecific(aub_stream::EngineType::ENGINE_RCS, *hwInfo)] = engine;
99-
break;
100-
case I915_ENGINE_CLASS_COPY:
95+
} else if (engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCopy)) {
10196
tileToEngineToInstanceMap[tile][DrmEngineMappingHelper::engineMapping[copyEnginesPerTile]] = engine;
10297
copyEnginesPerTile++;
103-
break;
104-
default:
105-
if (engine.engineClass == drm->getIoctlHelper()->getComputeEngineClass()) {
106-
tileToEngineToInstanceMap[tile][static_cast<aub_stream::EngineType>(aub_stream::ENGINE_CCS + computeEnginesPerTile)] = engine;
107-
computeEnginesPerTile++;
108-
}
109-
break;
98+
} else if (engine.engineClass == ioctlHelper->getDrmParamValue(DrmParam::EngineClassCompute)) {
99+
tileToEngineToInstanceMap[tile][static_cast<aub_stream::EngineType>(aub_stream::ENGINE_CCS + computeEnginesPerTile)] = engine;
100+
computeEnginesPerTile++;
110101
}
111102
}
112103

shared/source/os_interface/linux/ioctl_helper.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,4 +106,23 @@ uint32_t IoctlHelper::createDrmContext(Drm &drm, const OsContext &osContext, uin
106106
return drmContextId;
107107
}
108108

109+
int IoctlHelper::getDrmParamValueBase(DrmParam drmParam) const {
110+
switch (drmParam) {
111+
case DrmParam::EngineClassRender:
112+
return I915_ENGINE_CLASS_RENDER;
113+
case DrmParam::EngineClassCopy:
114+
return I915_ENGINE_CLASS_COPY;
115+
case DrmParam::EngineClassVideo:
116+
return I915_ENGINE_CLASS_VIDEO;
117+
case DrmParam::EngineClassVideoEnhance:
118+
return I915_ENGINE_CLASS_VIDEO_ENHANCE;
119+
case DrmParam::EngineClassInvalid:
120+
return I915_ENGINE_CLASS_INVALID;
121+
case DrmParam::EngineClassInvalidNone:
122+
return I915_ENGINE_CLASS_INVALID_NONE;
123+
default:
124+
UNRECOVERABLE_IF(true);
125+
return 0;
126+
}
127+
}
109128
} // namespace NEO

shared/source/os_interface/linux/ioctl_helper.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ class IoctlHelper {
9191
virtual uint64_t getFlagsForVmBind(bool bindCapture, bool bindImmediate, bool bindMakeResident) = 0;
9292
virtual std::vector<EngineCapabilities> translateToEngineCaps(const std::vector<uint8_t> &data) = 0;
9393
virtual uint32_t queryDistances(Drm *drm, std::vector<QueryItem> &queryItems, std::vector<DistanceInfo> &distanceInfos) = 0;
94-
virtual int32_t getComputeEngineClass() = 0;
9594
virtual uint16_t getWaitUserFenceSoftFlag() = 0;
9695
virtual int execBuffer(Drm *drm, ExecBuffer *execBuffer, uint64_t completionGpuAddress, uint32_t counterValue) = 0;
9796
virtual bool completionFenceExtensionSupported(const bool isVmBindAvailable) = 0;
@@ -116,6 +115,7 @@ class IoctlHelper {
116115
virtual int setContextDebugFlag(Drm *drm, uint32_t drmContextId) = 0;
117116
virtual bool isDebugAttachAvailable() = 0;
118117
virtual unsigned int getIoctlRequestValue(DrmIoctl ioctlRequest) = 0;
118+
virtual int getDrmParamValue(DrmParam drmParam) const = 0;
119119

120120
uint32_t createDrmContext(Drm &drm, const OsContext &osContext, uint32_t drmVmId);
121121

@@ -124,6 +124,7 @@ class IoctlHelper {
124124

125125
void fillExecBuffer(ExecBuffer &execBuffer, uintptr_t buffersPtr, uint32_t bufferCount, uint32_t startOffset, uint32_t size, uint64_t flags, uint32_t drmContextId);
126126
void logExecBuffer(const ExecBuffer &execBuffer, std::stringstream &logger);
127+
int getDrmParamValueBase(DrmParam drmParam) const;
127128
};
128129

129130
class IoctlHelperUpstream : public IoctlHelper {
@@ -151,7 +152,6 @@ class IoctlHelperUpstream : public IoctlHelper {
151152
uint64_t getFlagsForVmBind(bool bindCapture, bool bindImmediate, bool bindMakeResident) override;
152153
std::vector<EngineCapabilities> translateToEngineCaps(const std::vector<uint8_t> &data) override;
153154
uint32_t queryDistances(Drm *drm, std::vector<QueryItem> &queryItems, std::vector<DistanceInfo> &distanceInfos) override;
154-
int32_t getComputeEngineClass() override;
155155
uint16_t getWaitUserFenceSoftFlag() override;
156156
int execBuffer(Drm *drm, ExecBuffer *execBuffer, uint64_t completionGpuAddress, uint32_t counterValue) override;
157157
bool completionFenceExtensionSupported(const bool isVmBindAvailable) override;
@@ -176,6 +176,7 @@ class IoctlHelperUpstream : public IoctlHelper {
176176
int setContextDebugFlag(Drm *drm, uint32_t drmContextId) override;
177177
bool isDebugAttachAvailable() override;
178178
unsigned int getIoctlRequestValue(DrmIoctl ioctlRequest) override;
179+
int getDrmParamValue(DrmParam drmParam) const override;
179180
};
180181

181182
template <PRODUCT_FAMILY gfxProduct>
@@ -217,7 +218,6 @@ class IoctlHelperPrelim20 : public IoctlHelper {
217218
uint64_t getFlagsForVmBind(bool bindCapture, bool bindImmediate, bool bindMakeResident) override;
218219
std::vector<EngineCapabilities> translateToEngineCaps(const std::vector<uint8_t> &data) override;
219220
uint32_t queryDistances(Drm *drm, std::vector<QueryItem> &queryItems, std::vector<DistanceInfo> &distanceInfos) override;
220-
int32_t getComputeEngineClass() override;
221221
uint16_t getWaitUserFenceSoftFlag() override;
222222
int execBuffer(Drm *drm, ExecBuffer *execBuffer, uint64_t completionGpuAddress, uint32_t counterValue) override;
223223
bool completionFenceExtensionSupported(const bool isVmBindAvailable) override;
@@ -242,6 +242,7 @@ class IoctlHelperPrelim20 : public IoctlHelper {
242242
int setContextDebugFlag(Drm *drm, uint32_t drmContextId) override;
243243
bool isDebugAttachAvailable() override;
244244
unsigned int getIoctlRequestValue(DrmIoctl ioctlRequest) override;
245+
int getDrmParamValue(DrmParam drmParam) const override;
245246
};
246247

247248
} // namespace NEO

shared/source/os_interface/linux/ioctl_helper_prelim.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -338,10 +338,6 @@ uint32_t IoctlHelperPrelim20::queryDistances(Drm *drm, std::vector<QueryItem> &q
338338
return ret;
339339
}
340340

341-
int32_t IoctlHelperPrelim20::getComputeEngineClass() {
342-
return PRELIM_I915_ENGINE_CLASS_COMPUTE;
343-
}
344-
345341
std::optional<int> IoctlHelperPrelim20::getHasPageFaultParamId() {
346342
return PRELIM_I915_PARAM_HAS_PAGE_FAULT;
347343
};
@@ -636,6 +632,15 @@ unsigned int IoctlHelperPrelim20::getIoctlRequestValue(DrmIoctl ioctlRequest) {
636632
}
637633
}
638634

635+
int IoctlHelperPrelim20::getDrmParamValue(DrmParam drmParam) const {
636+
switch (drmParam) {
637+
case DrmParam::EngineClassCompute:
638+
return PRELIM_I915_ENGINE_CLASS_COMPUTE;
639+
default:
640+
return getDrmParamValueBase(drmParam);
641+
}
642+
}
643+
639644
static_assert(sizeof(MemoryClassInstance) == sizeof(prelim_drm_i915_gem_memory_class_instance));
640645
static_assert(offsetof(MemoryClassInstance, memoryClass) == offsetof(prelim_drm_i915_gem_memory_class_instance, memory_class));
641646
static_assert(offsetof(MemoryClassInstance, memoryInstance) == offsetof(prelim_drm_i915_gem_memory_class_instance, memory_instance));

shared/source/os_interface/linux/ioctl_helper_upstream.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,6 @@ uint32_t IoctlHelperUpstream::queryDistances(Drm *drm, std::vector<QueryItem> &q
152152
return 0;
153153
}
154154

155-
int32_t IoctlHelperUpstream::getComputeEngineClass() {
156-
return 4;
157-
}
158-
159155
uint16_t IoctlHelperUpstream::getWaitUserFenceSoftFlag() {
160156
return 0;
161157
}
@@ -295,4 +291,13 @@ unsigned int IoctlHelperUpstream::getIoctlRequestValue(DrmIoctl ioctlRequest) {
295291
return 0u;
296292
}
297293
}
294+
295+
int IoctlHelperUpstream::getDrmParamValue(DrmParam drmParam) const {
296+
switch (drmParam) {
297+
case DrmParam::EngineClassCompute:
298+
return 4;
299+
default:
300+
return getDrmParamValueBase(drmParam);
301+
}
302+
}
298303
} // namespace NEO

shared/test/unit_test/os_interface/linux/drm_engine_info_tests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ TEST(EngineInfoTest, whenCreateEngineInfoWithCcsThenCorrectHwInfoSet) {
7979

8080
auto hwInfo = *defaultHwInfo.get();
8181
std::vector<EngineCapabilities> engines(2);
82-
uint16_t ccsClass = drm->getIoctlHelper()->getComputeEngineClass();
82+
uint16_t ccsClass = drm->getIoctlHelper()->getDrmParamValue(DrmParam::EngineClassCompute);
8383
engines[0].engine = {ccsClass, 0};
8484
engines[0].capabilities = 0;
8585
engines[1].engine = {I915_ENGINE_CLASS_COPY, 0};

shared/test/unit_test/os_interface/linux/drm_tests.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1224,3 +1224,17 @@ TEST(DrmWrapperTest, WhenGettingIoctlStringValueThenProperStringIsReturned) {
12241224
EXPECT_STREQ(IoctlToStringHelper::getIoctlString(ioctlCodeString.first).c_str(), ioctlCodeString.second);
12251225
}
12261226
}
1227+
1228+
TEST(IoctlHelperTest, whenGettingDrmParamValueThenProperValueIsReturned) {
1229+
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
1230+
DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]};
1231+
auto ioctlHelper = drm.getIoctlHelper();
1232+
EXPECT_EQ(static_cast<int>(I915_ENGINE_CLASS_RENDER), ioctlHelper->getDrmParamValue(DrmParam::EngineClassRender));
1233+
EXPECT_EQ(static_cast<int>(I915_ENGINE_CLASS_COPY), ioctlHelper->getDrmParamValue(DrmParam::EngineClassCopy));
1234+
EXPECT_EQ(static_cast<int>(I915_ENGINE_CLASS_VIDEO), ioctlHelper->getDrmParamValue(DrmParam::EngineClassVideo));
1235+
EXPECT_EQ(static_cast<int>(I915_ENGINE_CLASS_VIDEO_ENHANCE), ioctlHelper->getDrmParamValue(DrmParam::EngineClassVideoEnhance));
1236+
EXPECT_EQ(static_cast<int>(I915_ENGINE_CLASS_INVALID), ioctlHelper->getDrmParamValue(DrmParam::EngineClassInvalid));
1237+
EXPECT_EQ(static_cast<int>(I915_ENGINE_CLASS_INVALID_NONE), ioctlHelper->getDrmParamValue(DrmParam::EngineClassInvalidNone));
1238+
1239+
EXPECT_THROW(ioctlHelper->getDrmParamValueBase(DrmParam::EngineClassCompute), std::runtime_error);
1240+
}

0 commit comments

Comments
 (0)