Skip to content

Commit dbdae54

Browse files
Simplify translation DG1 specific region info into internal struct
Don't translate to upstream version Related-To: NEO-6852 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
1 parent 5e70afa commit dbdae54

File tree

2 files changed

+20
-28
lines changed

2 files changed

+20
-28
lines changed
Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
/*
2-
* Copyright (C) 2021 Intel Corporation
2+
* Copyright (C) 2021-2022 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
66
*/
77

8-
#include "shared/source/os_interface/linux/ioctl_helper.h"
9-
108
#include "third_party/uapi/drm/i915_drm.h"
119

1210
#include <memory>
11+
#include <vector>
1312

1413
namespace NEO {
1514

@@ -19,25 +18,4 @@ bool isQueryDrmTip(const std::vector<uint8_t> &queryInfo) {
1918
return static_cast<uint32_t>(queryInfo.size()) == lengthOnDrmTip;
2019
}
2120

22-
namespace PROD_DG1 {
23-
#undef DRM_IOCTL_I915_GEM_CREATE_EXT
24-
#undef __I915_EXEC_UNKNOWN_FLAGS
25-
#include "third_party/uapi/dg1/drm/i915_drm.h"
26-
} // namespace PROD_DG1
27-
28-
std::vector<uint8_t> translateToDrmTip(const uint8_t *dataQuery) {
29-
auto dataOnProdDrm = reinterpret_cast<const PROD_DG1::drm_i915_query_memory_regions *>(dataQuery);
30-
auto lengthTranslated = static_cast<int32_t>(sizeof(drm_i915_query_memory_regions) + dataOnProdDrm->num_regions * sizeof(drm_i915_memory_region_info));
31-
auto dataQueryTranslated = std::vector<uint8_t>(lengthTranslated, 0u);
32-
auto dataTranslated = reinterpret_cast<drm_i915_query_memory_regions *>(dataQueryTranslated.data());
33-
dataTranslated->num_regions = dataOnProdDrm->num_regions;
34-
for (uint32_t i = 0; i < dataTranslated->num_regions; i++) {
35-
dataTranslated->regions[i].region.memory_class = dataOnProdDrm->regions[i].region.memory_class;
36-
dataTranslated->regions[i].region.memory_instance = dataOnProdDrm->regions[i].region.memory_instance;
37-
dataTranslated->regions[i].probed_size = dataOnProdDrm->regions[i].probed_size;
38-
dataTranslated->regions[i].unallocated_size = dataOnProdDrm->regions[i].unallocated_size;
39-
}
40-
return dataQueryTranslated;
41-
}
42-
4321
} // namespace NEO

shared/source/os_interface/linux/local/dg1/ioctl_helper_dg1.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@
99
#include "shared/source/helpers/debug_helpers.h"
1010
#include "shared/source/os_interface/linux/ioctl_helper.h"
1111

12+
namespace NEO {
13+
namespace Dg1I915 {
1214
#include "third_party/uapi/dg1/drm/i915_drm.h"
15+
}
16+
17+
using namespace Dg1I915;
1318

14-
namespace NEO {
1519
constexpr static auto gfxProduct = IGFX_DG1;
1620

1721
extern bool isQueryDrmTip(const std::vector<uint8_t> &queryInfo);
18-
extern std::vector<uint8_t> translateToDrmTip(const uint8_t *dataQuery);
1922

2023
template <>
2124
uint32_t IoctlHelperImpl<gfxProduct>::createGemExt(const MemRegionsVec &memClassInstances, size_t allocSize, uint32_t &handle, std::optional<uint32_t> vmId) {
@@ -52,11 +55,22 @@ uint32_t IoctlHelperImpl<gfxProduct>::createGemExt(const MemRegionsVec &memClass
5255
return ret;
5356
}
5457

58+
std::vector<MemoryRegion> translateDg1RegionInfoToMemoryRegions(const std::vector<uint8_t> &regionInfo) {
59+
auto *data = reinterpret_cast<const drm_i915_query_memory_regions *>(regionInfo.data());
60+
auto memRegions = std::vector<MemoryRegion>(data->num_regions);
61+
for (uint32_t i = 0; i < data->num_regions; i++) {
62+
memRegions[i].probedSize = data->regions[i].probed_size;
63+
memRegions[i].unallocatedSize = data->regions[i].unallocated_size;
64+
memRegions[i].region.memoryClass = data->regions[i].region.memory_class;
65+
memRegions[i].region.memoryInstance = data->regions[i].region.memory_instance;
66+
}
67+
return memRegions;
68+
}
69+
5570
template <>
5671
std::vector<MemoryRegion> IoctlHelperImpl<gfxProduct>::translateToMemoryRegions(const std::vector<uint8_t> &regionInfo) {
5772
if (!isQueryDrmTip(regionInfo)) {
58-
auto translated = translateToDrmTip(regionInfo.data());
59-
return IoctlHelperUpstream::translateToMemoryRegions(translated);
73+
return translateDg1RegionInfoToMemoryRegions(regionInfo);
6074
}
6175
return IoctlHelperUpstream::translateToMemoryRegions(regionInfo);
6276
}

0 commit comments

Comments
 (0)