Skip to content

Commit ac3005a

Browse files
Create a wrapper for drm_i915_query_item
Related-To: NEO-6852 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
1 parent 771298c commit ac3005a

29 files changed

+85
-76
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
@@ -72,7 +72,7 @@ class DrmPrelimMock : public DrmMock {
7272
distances[3].engine = engines[3].engine;
7373
distances[3].region = {I915_MEMORY_CLASS_DEVICE, 3};
7474

75-
std::vector<drm_i915_query_item> queryItems{distances.size()};
75+
std::vector<QueryItem> queryItems{distances.size()};
7676
for (auto i = 0u; i < distances.size(); i++) {
7777
queryItems[i].length = sizeof(drm_i915_query_engine_info);
7878
}
@@ -91,7 +91,7 @@ class DrmPrelimMock : public DrmMock {
9191
distances[0].engine = engines[0].engine;
9292
distances[0].region = {I915_MEMORY_CLASS_DEVICE, 0};
9393

94-
std::vector<drm_i915_query_item> queryItems{distances.size()};
94+
std::vector<QueryItem> queryItems{distances.size()};
9595
for (auto i = 0u; i < distances.size(); i++) {
9696
queryItems[i].length = sizeof(drm_i915_query_engine_info);
9797
}

opencl/test/unit_test/linux/mock_os_layer.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "mock_os_layer.h"
99

1010
#include "shared/source/helpers/string.h"
11+
#include "shared/source/os_interface/linux/drm_wrappers.h"
1112

1213
#include <cassert>
1314
#include <dirent.h>
@@ -251,15 +252,15 @@ int drmVersion(drm_version_t *version) {
251252
}
252253

253254
int drmQueryItem(drm_i915_query *query) {
254-
auto queryItemArg = reinterpret_cast<drm_i915_query_item *>(query->items_ptr);
255+
auto queryItemArg = reinterpret_cast<NEO::QueryItem *>(query->items_ptr);
255256
if (queryItemArg->length == 0) {
256-
if (queryItemArg->query_id == DRM_I915_QUERY_TOPOLOGY_INFO) {
257+
if (queryItemArg->queryId == DRM_I915_QUERY_TOPOLOGY_INFO) {
257258
queryItemArg->length = sizeof(drm_i915_query_topology_info) + 1;
258259
return 0;
259260
}
260261
} else {
261-
if (queryItemArg->query_id == DRM_I915_QUERY_TOPOLOGY_INFO) {
262-
auto topologyArg = reinterpret_cast<drm_i915_query_topology_info *>(queryItemArg->data_ptr);
262+
if (queryItemArg->queryId == DRM_I915_QUERY_TOPOLOGY_INFO) {
263+
auto topologyArg = reinterpret_cast<drm_i915_query_topology_info *>(queryItemArg->dataPtr);
263264
topologyArg->max_slices = 1;
264265
topologyArg->max_subslices = 1;
265266
topologyArg->max_eus_per_subslice = 3;

shared/source/os_interface/linux/device_time_drm.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
#include "shared/source/os_interface/linux/drm_wrappers.h"
1313
#include "shared/source/os_interface/os_interface.h"
1414

15-
#include "drm/i915_drm.h"
16-
1715
#include <time.h>
1816

1917
namespace NEO {

shared/source/os_interface/linux/drm_buffer_object.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
#include "shared/source/os_interface/os_context.h"
2020
#include "shared/source/utilities/stackvec.h"
2121

22-
#include "drm/i915_drm.h"
23-
2422
#include <errno.h>
2523
#include <fcntl.h>
2624
#include <map>

shared/source/os_interface/linux/drm_memory_manager.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
#include "shared/source/os_interface/linux/os_context_linux.h"
3232
#include "shared/source/os_interface/os_interface.h"
3333

34-
#include "drm/i915_drm.h"
35-
3634
#include <cstring>
3735
#include <iostream>
3836
#include <memory>

shared/source/os_interface/linux/drm_neo.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "shared/source/os_interface/linux/drm_gem_close_worker.h"
2525
#include "shared/source/os_interface/linux/drm_memory_manager.h"
2626
#include "shared/source/os_interface/linux/drm_memory_operations_handler_bind.h"
27+
#include "shared/source/os_interface/linux/drm_wrappers.h"
2728
#include "shared/source/os_interface/linux/hw_device_id.h"
2829
#include "shared/source/os_interface/linux/ioctl_helper.h"
2930
#include "shared/source/os_interface/linux/ioctl_strings.h"
@@ -674,8 +675,8 @@ bool Drm::isi915Version(int fileDescriptor) {
674675

675676
std::vector<uint8_t> Drm::query(uint32_t queryId, uint32_t queryItemFlags) {
676677
drm_i915_query query{};
677-
drm_i915_query_item queryItem{};
678-
queryItem.query_id = queryId;
678+
QueryItem queryItem{};
679+
queryItem.queryId = queryId;
679680
queryItem.length = 0; // query length first
680681
queryItem.flags = queryItemFlags;
681682
query.items_ptr = reinterpret_cast<__u64>(&queryItem);
@@ -687,7 +688,7 @@ std::vector<uint8_t> Drm::query(uint32_t queryId, uint32_t queryItemFlags) {
687688
}
688689

689690
auto data = std::vector<uint8_t>(queryItem.length, 0);
690-
queryItem.data_ptr = castToUint64(data.data());
691+
queryItem.dataPtr = castToUint64(data.data());
691692

692693
ret = this->ioctl(DRM_IOCTL_I915_QUERY, &query);
693694
if (ret != 0 || queryItem.length <= 0) {
@@ -1093,14 +1094,14 @@ bool Drm::queryEngineInfo(bool isSysmanEnabled) {
10931094
return true;
10941095
}
10951096

1096-
std::vector<drm_i915_query_item> queryItems{distanceInfos.size()};
1097+
std::vector<QueryItem> queryItems{distanceInfos.size()};
10971098
auto ret = ioctlHelper->queryDistances(this, queryItems, distanceInfos);
10981099
if (ret != 0) {
10991100
return false;
11001101
}
11011102

11021103
const bool queryUnsupported = std::all_of(queryItems.begin(), queryItems.end(),
1103-
[](const drm_i915_query_item &item) { return item.length == -EINVAL; });
1104+
[](const QueryItem &item) { return item.length == -EINVAL; });
11041105
if (queryUnsupported) {
11051106
DEBUG_BREAK_IF(tileCount != 1);
11061107
this->engineInfo.reset(new EngineInfo(this, hwInfo, engines));

shared/source/os_interface/linux/drm_neo.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "shared/source/utilities/api_intercept.h"
2121
#include "shared/source/utilities/stackvec.h"
2222

23+
#include "drm/i915_drm.h"
2324
#include "engine_node.h"
2425
#include "igfxfmid.h"
2526

shared/source/os_interface/linux/drm_wrappers.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,10 @@ static_assert(sizeof(ExecObject) == sizeof(drm_i915_gem_exec_object2));
4545

4646
static_assert(sizeof(ExecBuffer) == sizeof(drm_i915_gem_execbuffer2));
4747

48+
static_assert(sizeof(QueryItem) == sizeof(drm_i915_query_item));
49+
static_assert(offsetof(QueryItem, queryId) == offsetof(drm_i915_query_item, query_id));
50+
static_assert(offsetof(QueryItem, length) == offsetof(drm_i915_query_item, length));
51+
static_assert(offsetof(QueryItem, flags) == offsetof(drm_i915_query_item, flags));
52+
static_assert(offsetof(QueryItem, dataPtr) == offsetof(drm_i915_query_item, data_ptr));
53+
4854
} // namespace NEO

shared/source/os_interface/linux/drm_wrappers.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,12 @@ struct GemGetTiling {
4949
uint32_t swizzleMode;
5050
uint32_t physSwizzleMode;
5151
};
52+
53+
struct QueryItem {
54+
uint64_t queryId;
55+
int32_t length;
56+
uint32_t flags;
57+
uint64_t dataPtr;
58+
};
59+
5260
} // namespace NEO

shared/source/os_interface/linux/engine_info.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "shared/source/helpers/engine_node_helper.h"
1414
#include "shared/source/helpers/hw_info.h"
1515
#include "shared/source/os_interface/linux/drm_neo.h"
16+
#include "shared/source/os_interface/linux/drm_wrappers.h"
1617

1718
#include <array>
1819

@@ -76,7 +77,7 @@ EngineInfo::EngineInfo(Drm *drm, HardwareInfo *hwInfo, const std::vector<EngineC
7677
setSupportedEnginesInfo(hwInfo, computeEngines, bcsInfoMask);
7778
}
7879

79-
EngineInfo::EngineInfo(Drm *drm, HardwareInfo *hwInfo, uint32_t tileCount, const std::vector<DistanceInfo> &distanceInfos, const std::vector<drm_i915_query_item> &queryItems, const std::vector<EngineCapabilities> &engineInfos)
80+
EngineInfo::EngineInfo(Drm *drm, HardwareInfo *hwInfo, uint32_t tileCount, const std::vector<DistanceInfo> &distanceInfos, const std::vector<QueryItem> &queryItems, const std::vector<EngineCapabilities> &engineInfos)
8081
: engines(engineInfos), tileToEngineToInstanceMap(tileCount) {
8182
auto tile = 0u;
8283
auto computeEnginesPerTile = 0u;

0 commit comments

Comments
 (0)