Skip to content

Commit 09c68a6

Browse files
Move query compute slices and query memory regions to DrmParam enum
Related-To: NEO-6852, NEO-6999, NEO-7028 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
1 parent bb71f92 commit 09c68a6

File tree

7 files changed

+19
-38
lines changed

7 files changed

+19
-38
lines changed

shared/source/os_interface/linux/drm_neo.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -977,7 +977,8 @@ bool Drm::querySystemInfo() {
977977
}
978978

979979
std::vector<uint8_t> Drm::getMemoryRegions() {
980-
return this->query(ioctlHelper->getMemRegionsIoctlVal(), 0);
980+
auto request = ioctlHelper->getDrmParamValue(DrmParam::QueryMemoryRegions);
981+
return this->query(request, 0);
981982
}
982983

983984
bool Drm::queryMemoryInfo() {
@@ -1094,8 +1095,8 @@ bool Drm::queryTopology(const HardwareInfo &hwInfo, QueryTopologyData &topologyD
10941095
int subSliceCount = 0;
10951096
int euCount = 0;
10961097

1097-
const auto queryComputeSlicesIoctl = ioctlHelper->getComputeSlicesIoctlVal();
1098-
if (DebugManager.flags.UseNewQueryTopoIoctl.get() && this->engineInfo && hwInfo.gtSystemInfo.MultiTileArchInfo.TileCount > 0 && queryComputeSlicesIoctl != 0) {
1098+
auto request = ioctlHelper->getDrmParamValue(DrmParam::QueryComputeSlices);
1099+
if (DebugManager.flags.UseNewQueryTopoIoctl.get() && this->engineInfo && hwInfo.gtSystemInfo.MultiTileArchInfo.TileCount > 0 && request != 0) {
10991100
bool success = true;
11001101

11011102
for (uint32_t i = 0; i < hwInfo.gtSystemInfo.MultiTileArchInfo.TileCount; i++) {
@@ -1105,7 +1106,7 @@ bool Drm::queryTopology(const HardwareInfo &hwInfo, QueryTopologyData &topologyD
11051106
uint32_t flags = classInstance->engineClass;
11061107
flags |= (classInstance->engineInstance << 8);
11071108

1108-
auto dataQuery = this->query(queryComputeSlicesIoctl, flags);
1109+
auto dataQuery = this->query(request, flags);
11091110
if (dataQuery.empty()) {
11101111
success = false;
11111112
break;

shared/source/os_interface/linux/drm_wrappers.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@ enum class DrmParam {
246246
EngineClassInvalidNone,
247247
QueryEngineInfo,
248248
QueryHwconfigTable,
249+
QueryComputeSlices,
250+
QueryMemoryRegions,
249251
};
250252

251253
unsigned int getIoctlRequestValue(DrmIoctl ioctlRequest, IoctlHelper *ioctlHelper);

shared/source/os_interface/linux/ioctl_helper.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,6 @@ class IoctlHelper {
8383
virtual bool setVmBoAdvise(Drm *drm, int32_t handle, uint32_t attribute, void *region) = 0;
8484
virtual bool setVmPrefetch(Drm *drm, uint64_t start, uint64_t length, uint32_t region) = 0;
8585
virtual uint32_t getDirectSubmissionFlag() = 0;
86-
virtual int32_t getMemRegionsIoctlVal() = 0;
87-
virtual uint32_t getComputeSlicesIoctlVal() = 0;
8886
virtual std::unique_ptr<uint8_t[]> prepareVmBindExt(const StackVec<uint32_t, 2> &bindExtHandles) = 0;
8987
virtual uint64_t getFlagsForVmBind(bool bindCapture, bool bindImmediate, bool bindMakeResident) = 0;
9088
virtual std::vector<EngineCapabilities> translateToEngineCaps(const std::vector<uint8_t> &data) = 0;
@@ -143,8 +141,6 @@ class IoctlHelperUpstream : public IoctlHelper {
143141
bool setVmBoAdvise(Drm *drm, int32_t handle, uint32_t attribute, void *region) override;
144142
bool setVmPrefetch(Drm *drm, uint64_t start, uint64_t length, uint32_t region) override;
145143
uint32_t getDirectSubmissionFlag() override;
146-
int32_t getMemRegionsIoctlVal() override;
147-
uint32_t getComputeSlicesIoctlVal() override;
148144
std::unique_ptr<uint8_t[]> prepareVmBindExt(const StackVec<uint32_t, 2> &bindExtHandles) override;
149145
uint64_t getFlagsForVmBind(bool bindCapture, bool bindImmediate, bool bindMakeResident) override;
150146
std::vector<EngineCapabilities> translateToEngineCaps(const std::vector<uint8_t> &data) override;
@@ -207,8 +203,6 @@ class IoctlHelperPrelim20 : public IoctlHelper {
207203
bool setVmBoAdvise(Drm *drm, int32_t handle, uint32_t attribute, void *region) override;
208204
bool setVmPrefetch(Drm *drm, uint64_t start, uint64_t length, uint32_t region) override;
209205
uint32_t getDirectSubmissionFlag() override;
210-
int32_t getMemRegionsIoctlVal() override;
211-
uint32_t getComputeSlicesIoctlVal() override;
212206
std::unique_ptr<uint8_t[]> prepareVmBindExt(const StackVec<uint32_t, 2> &bindExtHandles) override;
213207
uint64_t getFlagsForVmBind(bool bindCapture, bool bindImmediate, bool bindMakeResident) override;
214208
std::vector<EngineCapabilities> translateToEngineCaps(const std::vector<uint8_t> &data) override;

shared/source/os_interface/linux/ioctl_helper_prelim.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -223,14 +223,6 @@ uint32_t IoctlHelperPrelim20::getDirectSubmissionFlag() {
223223
return PRELIM_I915_CONTEXT_CREATE_FLAGS_LONG_RUNNING;
224224
}
225225

226-
int32_t IoctlHelperPrelim20::getMemRegionsIoctlVal() {
227-
return PRELIM_DRM_I915_QUERY_MEMORY_REGIONS;
228-
}
229-
230-
uint32_t IoctlHelperPrelim20::getComputeSlicesIoctlVal() {
231-
return PRELIM_DRM_I915_QUERY_COMPUTE_SLICES;
232-
}
233-
234226
uint16_t IoctlHelperPrelim20::getWaitUserFenceSoftFlag() {
235227
return PRELIM_I915_UFENCE_WAIT_SOFT;
236228
};
@@ -589,6 +581,10 @@ int IoctlHelperPrelim20::getDrmParamValue(DrmParam drmParam) const {
589581
return PRELIM_DRM_I915_QUERY_ENGINE_INFO;
590582
case DrmParam::QueryHwconfigTable:
591583
return PRELIM_DRM_I915_QUERY_HWCONFIG_TABLE;
584+
case DrmParam::QueryComputeSlices:
585+
return PRELIM_DRM_I915_QUERY_COMPUTE_SLICES;
586+
case DrmParam::QueryMemoryRegions:
587+
return PRELIM_DRM_I915_QUERY_MEMORY_REGIONS;
592588
default:
593589
return getDrmParamValueBase(drmParam);
594590
}

shared/source/os_interface/linux/ioctl_helper_upstream.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,6 @@ uint32_t IoctlHelperUpstream::getDirectSubmissionFlag() {
107107
return 0u;
108108
}
109109

110-
int32_t IoctlHelperUpstream::getMemRegionsIoctlVal() {
111-
return DRM_I915_QUERY_MEMORY_REGIONS;
112-
}
113-
114-
uint32_t IoctlHelperUpstream::getComputeSlicesIoctlVal() {
115-
return 0;
116-
}
117-
118110
std::unique_ptr<uint8_t[]> IoctlHelperUpstream::prepareVmBindExt(const StackVec<uint32_t, 2> &bindExtHandles) {
119111
return {};
120112
}
@@ -249,6 +241,10 @@ int IoctlHelperUpstream::getDrmParamValue(DrmParam drmParam) const {
249241
return DRM_I915_QUERY_ENGINE_INFO;
250242
case DrmParam::QueryHwconfigTable:
251243
return DRM_I915_QUERY_HWCONFIG_TABLE;
244+
case DrmParam::QueryMemoryRegions:
245+
return DRM_I915_QUERY_MEMORY_REGIONS;
246+
case DrmParam::QueryComputeSlices:
247+
return 0;
252248
default:
253249
return getDrmParamValueBase(drmParam);
254250
}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ TEST_F(IoctlPrelimHelperTests, whenGettingDrmParamValueThenPropertValueIsReturne
6666
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::EngineClassCompute), static_cast<int>(PRELIM_I915_ENGINE_CLASS_COMPUTE));
6767
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::QueryEngineInfo), static_cast<int>(PRELIM_DRM_I915_QUERY_ENGINE_INFO));
6868
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::QueryHwconfigTable), static_cast<int>(PRELIM_DRM_I915_QUERY_HWCONFIG_TABLE));
69+
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::QueryMemoryRegions), static_cast<int>(PRELIM_DRM_I915_QUERY_MEMORY_REGIONS));
70+
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::QueryComputeSlices), static_cast<int>(PRELIM_DRM_I915_QUERY_COMPUTE_SLICES));
6971
}
7072

7173
TEST_F(IoctlPrelimHelperTests, givenIoctlParamWhenParseToStringThenProperStringIsReturned) {
@@ -188,10 +190,6 @@ TEST_F(IoctlPrelimHelperTests, givenPrelimsWhenGetDirectSubmissionFlagThenCorrec
188190
EXPECT_EQ(PRELIM_I915_CONTEXT_CREATE_FLAGS_LONG_RUNNING, ioctlHelper.getDirectSubmissionFlag());
189191
}
190192

191-
TEST_F(IoctlPrelimHelperTests, givenPrelimsWhenGetMemRegionsIoctlValThenCorrectValueReturned) {
192-
EXPECT_EQ(PRELIM_DRM_I915_QUERY_MEMORY_REGIONS, ioctlHelper.getMemRegionsIoctlVal());
193-
}
194-
195193
TEST_F(IoctlPrelimHelperTests, givenPrelimsWhenTranslateToEngineCapsThenReturnSameData) {
196194
std::vector<EngineCapabilities> expectedEngines(2);
197195
expectedEngines[0] = {{static_cast<uint16_t>(ioctlHelper.getDrmParamValue(DrmParam::EngineClassRender)), 0}, 0};

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ TEST(IoctlHelperUpstreamTest, whenGettingDrmParamValueThenPropertValueIsReturned
6363
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::EngineClassCompute), 4);
6464
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::QueryEngineInfo), static_cast<int>(DRM_I915_QUERY_ENGINE_INFO));
6565
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::QueryHwconfigTable), static_cast<int>(DRM_I915_QUERY_HWCONFIG_TABLE));
66+
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::QueryMemoryRegions), static_cast<int>(DRM_I915_QUERY_MEMORY_REGIONS));
67+
EXPECT_EQ(ioctlHelper.getDrmParamValue(DrmParam::QueryComputeSlices), 0);
6668
}
6769

6870
TEST(IoctlHelperUpstreamTest, whenCreatingVmControlRegionExtThenNullptrIsReturned) {
@@ -224,14 +226,6 @@ TEST(IoctlHelperTestsUpstream, givenUpstreamWhenDirectSubmissionEnabledThenNoFla
224226
EXPECT_EQ(0u, drm->receivedContextCreateFlags);
225227
}
226228

227-
TEST(IoctlHelperTestsUpstream, givenUpstreamWhenGetMemRegionsIoctlValThenCorrectValueReturned) {
228-
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
229-
executionEnvironment->prepareRootDeviceEnvironments(1);
230-
auto drm = std::make_unique<DrmTipMock>(*executionEnvironment->rootDeviceEnvironments[0]);
231-
232-
EXPECT_EQ(DRM_I915_QUERY_MEMORY_REGIONS, drm->getIoctlHelper()->getMemRegionsIoctlVal());
233-
}
234-
235229
TEST(IoctlHelperTestsUpstream, givenUpstreamWhenQueryDistancesThenReturnEinval) {
236230
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
237231
executionEnvironment->prepareRootDeviceEnvironments(1);

0 commit comments

Comments
 (0)