refactor: setup engine capabilities in drm specifc code

once drm specific code queries engine info, caps are stored in drm-agnostic form

Related-To: NEO-10445
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2024-07-15 10:22:52 +00:00
committed by Compute-Runtime-Automation
parent 2e5bf8d24d
commit 64f2312aa0
14 changed files with 69 additions and 77 deletions

View File

@@ -852,14 +852,18 @@ TEST(DrmTest, givenCapsWhenCallGetBaseCopyEngineTypeAndIsIntegratedGpuThenBcs0Al
auto engineInfo = std::make_unique<MockEngineInfo>(drm.get(), engineInfosPerTile);
bool isIntegratedGpu = true;
auto caps = drm->ioctlHelper->getCopyClassSaturatePCIECapability();
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), *caps, isIntegratedGpu));
EngineCapabilities::Flags capabilities{};
capabilities.copyClassSaturateLink = true;
capabilities.copyClassSaturatePCIE = false;
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), capabilities, isIntegratedGpu));
caps = drm->ioctlHelper->getCopyClassSaturateLinkCapability();
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), *caps, isIntegratedGpu));
capabilities.copyClassSaturateLink = false;
capabilities.copyClassSaturatePCIE = true;
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), capabilities, isIntegratedGpu));
caps = 0;
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), *caps, isIntegratedGpu));
capabilities.copyClassSaturateLink = false;
capabilities.copyClassSaturatePCIE = false;
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), capabilities, isIntegratedGpu));
}
TEST(DrmTest, givenCapsWhenCallGetBaseCopyEngineTypeAndIsNotIntegratedGpuThenProperBcsIsReturned) {
@@ -872,14 +876,19 @@ TEST(DrmTest, givenCapsWhenCallGetBaseCopyEngineTypeAndIsNotIntegratedGpuThenPro
auto engineInfo = std::make_unique<MockEngineInfo>(drm.get(), engineInfosPerTile);
bool isIntegratedGpu = false;
auto caps = drm->ioctlHelper->getCopyClassSaturatePCIECapability();
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS1, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), *caps, isIntegratedGpu));
caps = drm->ioctlHelper->getCopyClassSaturateLinkCapability();
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS3, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), *caps, isIntegratedGpu));
EngineCapabilities::Flags capabilities{};
capabilities.copyClassSaturateLink = false;
capabilities.copyClassSaturatePCIE = true;
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS1, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), capabilities, isIntegratedGpu));
caps = 0;
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), *caps, isIntegratedGpu));
capabilities.copyClassSaturateLink = true;
capabilities.copyClassSaturatePCIE = false;
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS3, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), capabilities, isIntegratedGpu));
capabilities.copyClassSaturateLink = false;
capabilities.copyClassSaturatePCIE = false;
EXPECT_EQ(aub_stream::EngineType::ENGINE_BCS, engineInfo->getBaseCopyEngineType(drm->ioctlHelper.get(), capabilities, isIntegratedGpu));
}
struct DistanceQueryDrmTests : ::testing::Test {

View File

@@ -63,9 +63,9 @@ TEST(EngineInfoTest, whenCreateEngineInfoWithRcsThenCorrectHwInfoSet) {
auto &hwInfo = *drm->getRootDeviceEnvironment().getHardwareInfo();
std::vector<EngineCapabilities> engines(2);
engines[0].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassRender)), 0};
engines[0].capabilities = 0;
engines[0].capabilities = {};
engines[1].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassCopy)), 0};
engines[1].capabilities = 0;
engines[1].capabilities = {};
StackVec<std::vector<EngineCapabilities>, 2> engineInfosPerTile{engines};
auto engineInfo = std::make_unique<EngineInfo>(drm.get(), engineInfosPerTile);
@@ -90,7 +90,7 @@ TEST(EngineInfoTest, whenCallingGetEngineTileInfoCorrectValuesAreReturned) {
std::vector<EngineCapabilities> engines(1);
engines[0].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassRender)), 0};
engines[0].capabilities = 0;
engines[0].capabilities = {};
StackVec<std::vector<EngineCapabilities>, 2> engineInfosPerTile{engines};
auto engineInfo = std::make_unique<EngineInfo>(drm.get(), engineInfosPerTile);
@@ -109,9 +109,9 @@ TEST(EngineInfoTest, whenCreateEngineInfoWithCcsThenCorrectHwInfoSet) {
std::vector<EngineCapabilities> engines(2);
uint16_t ccsClass = ioctlHelper->getDrmParamValue(DrmParam::engineClassCompute);
engines[0].engine = {ccsClass, 0};
engines[0].capabilities = 0;
engines[0].capabilities = {};
engines[1].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassCopy)), 0};
engines[1].capabilities = 0;
engines[1].capabilities = {};
StackVec<std::vector<EngineCapabilities>, 2> engineInfosPerTile{engines};
auto engineInfo = std::make_unique<EngineInfo>(drm.get(), engineInfosPerTile);
@@ -139,13 +139,13 @@ TEST(EngineInfoTest, whenGetEngineInstanceAndTileThenCorrectValuesReturned) {
std::vector<EngineCapabilities> engines(4);
engines[0].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassRender)), 0};
engines[0].capabilities = 0;
engines[0].capabilities = {};
engines[1].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassCopy)), 0};
engines[1].capabilities = 0;
engines[1].capabilities = {};
engines[2].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassRender)), 1};
engines[2].capabilities = 0;
engines[2].capabilities = {};
engines[3].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassCopy)), 1};
engines[3].capabilities = 0;
engines[3].capabilities = {};
std::vector<DistanceInfo> distances(4);
distances[0].engine = engines[0].engine;
@@ -188,13 +188,13 @@ TEST(EngineInfoTest, whenCreateEngineInfoAndInvalidQueryThenNoEnginesSet) {
std::vector<EngineCapabilities> engines(4);
engines[0].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassRender)), 0};
engines[0].capabilities = 0;
engines[0].capabilities = {};
engines[1].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassCopy)), 0};
engines[1].capabilities = 0;
engines[1].capabilities = {};
engines[2].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassRender)), 1};
engines[2].capabilities = 0;
engines[2].capabilities = {};
engines[3].engine = {static_cast<uint16_t>(ioctlHelper->getDrmParamValue(DrmParam::engineClassCopy)), 1};
engines[3].capabilities = 0;
engines[3].capabilities = {};
std::vector<DistanceInfo> distances(4);
distances[0].engine = engines[0].engine;

View File

@@ -319,8 +319,8 @@ TEST_F(IoctlPrelimHelperTests, givenPrelimsWhenGetDirectSubmissionFlagThenCorrec
TEST_F(IoctlPrelimHelperTests, givenPrelimsWhenTranslateToEngineCapsThenReturnSameData) {
std::vector<EngineCapabilities> expectedEngines(2);
expectedEngines[0] = {{static_cast<uint16_t>(ioctlHelper.getDrmParamValue(DrmParam::engineClassRender)), 0}, 0};
expectedEngines[1] = {{static_cast<uint16_t>(ioctlHelper.getDrmParamValue(DrmParam::engineClassCopy)), 1}, 0};
expectedEngines[0] = {{static_cast<uint16_t>(ioctlHelper.getDrmParamValue(DrmParam::engineClassRender)), 0}, {true, false}};
expectedEngines[1] = {{static_cast<uint16_t>(ioctlHelper.getDrmParamValue(DrmParam::engineClassCopy)), 1}, {false, true}};
auto engineInfo = getEngineInfo(expectedEngines);
@@ -329,7 +329,8 @@ TEST_F(IoctlPrelimHelperTests, givenPrelimsWhenTranslateToEngineCapsThenReturnSa
for (uint32_t i = 0; i < engines.size(); i++) {
EXPECT_EQ(expectedEngines[i].engine.engineClass, engines[i].engine.engineClass);
EXPECT_EQ(expectedEngines[i].engine.engineInstance, engines[i].engine.engineInstance);
EXPECT_EQ(expectedEngines[i].capabilities, engines[i].capabilities);
EXPECT_EQ(expectedEngines[i].capabilities.copyClassSaturateLink, engines[i].capabilities.copyClassSaturateLink);
EXPECT_EQ(expectedEngines[i].capabilities.copyClassSaturatePCIE, engines[i].capabilities.copyClassSaturatePCIE);
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Intel Corporation
* Copyright (C) 2021-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -123,7 +123,8 @@ std::vector<uint64_t> getEngineInfo(const std::vector<EngineCapabilities> &input
for (uint32_t i = 0; i < inputSize; i++) {
memoryRegions->engines[i].engine.engine_class = inputEngines[i].engine.engineClass;
memoryRegions->engines[i].engine.engine_instance = inputEngines[i].engine.engineInstance;
memoryRegions->engines[i].capabilities = inputEngines[i].capabilities;
memoryRegions->engines[i].capabilities |= inputEngines[i].capabilities.copyClassSaturateLink ? PRELIM_I915_COPY_CLASS_CAP_SATURATE_LINK : 0;
memoryRegions->engines[i].capabilities |= inputEngines[i].capabilities.copyClassSaturatePCIE ? PRELIM_I915_COPY_CLASS_CAP_SATURATE_PCIE : 0;
}
return data;
}

View File

@@ -295,10 +295,6 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingAnyMethodThenDummyValueIsRe
VmBindExtUserFenceT vmBindExtUserFence{};
EXPECT_NO_THROW(xeIoctlHelper->fillVmBindExtUserFence(vmBindExtUserFence, 0, 0, 0));
EXPECT_EQ(std::nullopt, xeIoctlHelper->getCopyClassSaturatePCIECapability());
EXPECT_EQ(std::nullopt, xeIoctlHelper->getCopyClassSaturateLinkCapability());
EXPECT_EQ(0u, xeIoctlHelper->getVmAdviseAtomicAttribute());
VmBindParams vmBindParams{};