Use queryEngineInfo with prelim ioctls

If prelim kernel is being used, query engines
with prelim ioctls.

Signed-off-by: Szymon Morek <szymon.morek@intel.com>
This commit is contained in:
Szymon Morek
2022-01-03 14:16:00 +00:00
committed by Compute-Runtime-Automation
parent a18c706408
commit 6258575e5e
10 changed files with 218 additions and 31 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Intel Corporation
* Copyright (C) 2021-2022 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -13,6 +13,7 @@
#include <memory>
#include <vector>
struct drm_i915_query_item;
namespace NEO {
class Drm;
class IoctlHelper;
@ -36,6 +37,11 @@ struct MemoryRegion {
uint64_t unallocatedSize;
};
struct EngineCapabilities {
EngineClassInstance engine;
uint64_t capabilities;
};
struct DistanceInfo {
MemoryClassInstance region;
EngineClassInstance engine;
@ -61,6 +67,9 @@ class IoctlHelper {
virtual bool setVmBoAdvise(Drm *drm, int32_t handle, uint32_t attribute, void *region) = 0;
virtual uint32_t getDirectSubmissionFlag() = 0;
virtual int32_t getMemRegionsIoctlVal() = 0;
virtual int32_t getEngineInfoIoctlVal() = 0;
virtual std::vector<EngineCapabilities> translateToEngineCaps(const std::vector<uint8_t> &data) = 0;
virtual uint32_t queryDistances(Drm *drm, std::vector<drm_i915_query_item> &queryItems, std::vector<DistanceInfo> &distanceInfos) = 0;
};
class IoctlHelperUpstream : public IoctlHelper {
@ -78,6 +87,9 @@ class IoctlHelperUpstream : public IoctlHelper {
bool setVmBoAdvise(Drm *drm, int32_t handle, uint32_t attribute, void *region) override;
uint32_t getDirectSubmissionFlag() override;
int32_t getMemRegionsIoctlVal() override;
int32_t getEngineInfoIoctlVal() override;
std::vector<EngineCapabilities> translateToEngineCaps(const std::vector<uint8_t> &data) override;
uint32_t queryDistances(Drm *drm, std::vector<drm_i915_query_item> &queryItems, std::vector<DistanceInfo> &distanceInfos) override;
};
template <PRODUCT_FAMILY gfxProduct>
@ -106,6 +118,9 @@ class IoctlHelperPrelim20 : public IoctlHelper {
bool setVmBoAdvise(Drm *drm, int32_t handle, uint32_t attribute, void *region) override;
uint32_t getDirectSubmissionFlag() override;
int32_t getMemRegionsIoctlVal() override;
int32_t getEngineInfoIoctlVal() override;
std::vector<EngineCapabilities> translateToEngineCaps(const std::vector<uint8_t> &data) override;
uint32_t queryDistances(Drm *drm, std::vector<drm_i915_query_item> &queryItems, std::vector<DistanceInfo> &distanceInfos) override;
};
} // namespace NEO