mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-25 13:33:02 +08:00
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>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
5e70afac1a
commit
dbdae541c1
@@ -1,15 +1,14 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Intel Corporation
|
||||
* Copyright (C) 2021-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/os_interface/linux/ioctl_helper.h"
|
||||
|
||||
#include "third_party/uapi/drm/i915_drm.h"
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
namespace NEO {
|
||||
|
||||
@@ -19,25 +18,4 @@ bool isQueryDrmTip(const std::vector<uint8_t> &queryInfo) {
|
||||
return static_cast<uint32_t>(queryInfo.size()) == lengthOnDrmTip;
|
||||
}
|
||||
|
||||
namespace PROD_DG1 {
|
||||
#undef DRM_IOCTL_I915_GEM_CREATE_EXT
|
||||
#undef __I915_EXEC_UNKNOWN_FLAGS
|
||||
#include "third_party/uapi/dg1/drm/i915_drm.h"
|
||||
} // namespace PROD_DG1
|
||||
|
||||
std::vector<uint8_t> translateToDrmTip(const uint8_t *dataQuery) {
|
||||
auto dataOnProdDrm = reinterpret_cast<const PROD_DG1::drm_i915_query_memory_regions *>(dataQuery);
|
||||
auto lengthTranslated = static_cast<int32_t>(sizeof(drm_i915_query_memory_regions) + dataOnProdDrm->num_regions * sizeof(drm_i915_memory_region_info));
|
||||
auto dataQueryTranslated = std::vector<uint8_t>(lengthTranslated, 0u);
|
||||
auto dataTranslated = reinterpret_cast<drm_i915_query_memory_regions *>(dataQueryTranslated.data());
|
||||
dataTranslated->num_regions = dataOnProdDrm->num_regions;
|
||||
for (uint32_t i = 0; i < dataTranslated->num_regions; i++) {
|
||||
dataTranslated->regions[i].region.memory_class = dataOnProdDrm->regions[i].region.memory_class;
|
||||
dataTranslated->regions[i].region.memory_instance = dataOnProdDrm->regions[i].region.memory_instance;
|
||||
dataTranslated->regions[i].probed_size = dataOnProdDrm->regions[i].probed_size;
|
||||
dataTranslated->regions[i].unallocated_size = dataOnProdDrm->regions[i].unallocated_size;
|
||||
}
|
||||
return dataQueryTranslated;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
#include "shared/source/helpers/debug_helpers.h"
|
||||
#include "shared/source/os_interface/linux/ioctl_helper.h"
|
||||
|
||||
#include "third_party/uapi/dg1/drm/i915_drm.h"
|
||||
|
||||
namespace NEO {
|
||||
namespace Dg1I915 {
|
||||
#include "third_party/uapi/dg1/drm/i915_drm.h"
|
||||
}
|
||||
|
||||
using namespace Dg1I915;
|
||||
|
||||
constexpr static auto gfxProduct = IGFX_DG1;
|
||||
|
||||
extern bool isQueryDrmTip(const std::vector<uint8_t> &queryInfo);
|
||||
extern std::vector<uint8_t> translateToDrmTip(const uint8_t *dataQuery);
|
||||
|
||||
template <>
|
||||
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
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::vector<MemoryRegion> translateDg1RegionInfoToMemoryRegions(const std::vector<uint8_t> ®ionInfo) {
|
||||
auto *data = reinterpret_cast<const drm_i915_query_memory_regions *>(regionInfo.data());
|
||||
auto memRegions = std::vector<MemoryRegion>(data->num_regions);
|
||||
for (uint32_t i = 0; i < data->num_regions; i++) {
|
||||
memRegions[i].probedSize = data->regions[i].probed_size;
|
||||
memRegions[i].unallocatedSize = data->regions[i].unallocated_size;
|
||||
memRegions[i].region.memoryClass = data->regions[i].region.memory_class;
|
||||
memRegions[i].region.memoryInstance = data->regions[i].region.memory_instance;
|
||||
}
|
||||
return memRegions;
|
||||
}
|
||||
|
||||
template <>
|
||||
std::vector<MemoryRegion> IoctlHelperImpl<gfxProduct>::translateToMemoryRegions(const std::vector<uint8_t> ®ionInfo) {
|
||||
if (!isQueryDrmTip(regionInfo)) {
|
||||
auto translated = translateToDrmTip(regionInfo.data());
|
||||
return IoctlHelperUpstream::translateToMemoryRegions(translated);
|
||||
return translateDg1RegionInfoToMemoryRegions(regionInfo);
|
||||
}
|
||||
return IoctlHelperUpstream::translateToMemoryRegions(regionInfo);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user