Create a wrapper for drm_i915_query_item

Related-To: NEO-6852
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2022-05-17 21:40:34 +00:00
committed by Compute-Runtime-Automation
parent 771298c6e2
commit ac3005a463
29 changed files with 85 additions and 76 deletions

View File

@@ -777,8 +777,8 @@ struct DistanceQueryDrmTests : ::testing::Test {
bool supportDistanceInfoQuery = true;
bool handleQueryItem(void *arg) override {
auto *queryItem = reinterpret_cast<drm_i915_query_item *>(arg);
if (queryItem->query_id == DrmPrelimHelper::getDistanceInfoQueryId() && !supportDistanceInfoQuery) {
auto *queryItem = reinterpret_cast<QueryItem *>(arg);
if (queryItem->queryId == DrmPrelimHelper::getDistanceInfoQueryId() && !supportDistanceInfoQuery) {
queryItem->length = -EINVAL;
return true; // successful query with incorrect length
}

View File

@@ -119,7 +119,7 @@ TEST(EngineInfoTest, whenGetEngineInstanceAndTileThenCorrectValuesReturned) {
distances[3].engine = engines[3].engine;
distances[3].region = {I915_MEMORY_CLASS_DEVICE, 1};
std::vector<drm_i915_query_item> queryItems{distances.size()};
std::vector<QueryItem> queryItems{distances.size()};
for (auto i = 0u; i < distances.size(); i++) {
queryItems[i].length = sizeof(drm_i915_query_engine_info);
}
@@ -169,7 +169,7 @@ TEST(EngineInfoTest, whenCreateEngineInfoAndInvalidQueryThenNoEnginesSet) {
distances[3].engine = engines[3].engine;
distances[3].region = {I915_MEMORY_CLASS_DEVICE, 1};
std::vector<drm_i915_query_item> queryItems{distances.size()};
std::vector<QueryItem> queryItems{distances.size()};
for (auto i = 0u; i < distances.size(); i++) {
queryItems[i].length = -1;
}
@@ -185,7 +185,7 @@ TEST(EngineInfoTest, whenEmptyEngineInfoCreatedThen0TileReturned) {
auto hwInfo = *defaultHwInfo.get();
std::vector<DistanceInfo> distances;
std::vector<EngineCapabilities> engines;
std::vector<drm_i915_query_item> queryItems;
std::vector<QueryItem> queryItems;
auto engineInfo = std::make_unique<EngineInfo>(drm.get(), &hwInfo, 0, distances, queryItems, engines);
EXPECT_EQ(0u, engineInfo->getEngineTileIndex({I915_ENGINE_CLASS_RENDER, 1}));

View File

@@ -52,7 +52,7 @@ class DrmTipMock : public DrmMock {
return EINVAL;
}
for (auto i = 0u; i < query->num_items; i++) {
handleQueryItem(reinterpret_cast<drm_i915_query_item *>(query->items_ptr) + i);
handleQueryItem(reinterpret_cast<QueryItem *>(query->items_ptr) + i);
}
return 0;
} else if (request == DRM_IOCTL_I915_GEM_MMAP_OFFSET) {
@@ -64,8 +64,8 @@ class DrmTipMock : public DrmMock {
return handleKernelSpecificRequests(request, arg);
}
virtual void handleQueryItem(drm_i915_query_item *queryItem) {
switch (queryItem->query_id) {
virtual void handleQueryItem(QueryItem *queryItem) {
switch (queryItem->queryId) {
case DRM_I915_QUERY_MEMORY_REGIONS:
if (queryMemoryRegionInfoSuccessCount == 0) {
queryItem->length = -EINVAL;
@@ -78,7 +78,7 @@ class DrmTipMock : public DrmMock {
queryItem->length = regionInfoSize;
} else {
EXPECT_EQ(regionInfoSize, queryItem->length);
auto queryMemoryRegionInfo = reinterpret_cast<drm_i915_query_memory_regions *>(queryItem->data_ptr);
auto queryMemoryRegionInfo = reinterpret_cast<drm_i915_query_memory_regions *>(queryItem->dataPtr);
EXPECT_EQ(0u, queryMemoryRegionInfo->num_regions);
queryMemoryRegionInfo->num_regions = numberOfRegions;
queryMemoryRegionInfo->regions[0].region.memory_class = I915_MEMORY_CLASS_SYSTEM;

View File

@@ -24,8 +24,8 @@ class DrmMockProdDg1 : public DrmTipMock {
rootDeviceEnvironment.setHwInfo(inputHwInfo);
}
void handleQueryItem(drm_i915_query_item *queryItem) override {
switch (queryItem->query_id) {
void handleQueryItem(QueryItem *queryItem) override {
switch (queryItem->queryId) {
case DRM_I915_QUERY_MEMORY_REGIONS:
if (queryMemoryRegionInfoSuccessCount == 0) {
queryItem->length = -EINVAL;
@@ -38,7 +38,7 @@ class DrmMockProdDg1 : public DrmTipMock {
queryItem->length = regionInfoSize;
} else {
EXPECT_EQ(regionInfoSize, queryItem->length);
auto queryMemoryRegionInfo = reinterpret_cast<PROD_DG1::drm_i915_query_memory_regions *>(queryItem->data_ptr);
auto queryMemoryRegionInfo = reinterpret_cast<PROD_DG1::drm_i915_query_memory_regions *>(queryItem->dataPtr);
EXPECT_EQ(0u, queryMemoryRegionInfo->num_regions);
queryMemoryRegionInfo->num_regions = numberOfRegions;
queryMemoryRegionInfo->regions[0].region.memory_class = I915_MEMORY_CLASS_SYSTEM;

View File

@@ -36,8 +36,8 @@ struct QueryTopologyTests : ::testing::Test {
using DrmQueryMock::DrmQueryMock;
bool handleQueryItem(void *arg) override {
const auto queryItem = reinterpret_cast<drm_i915_query_item *>(arg);
if (queryItem->query_id != DrmPrelimHelper::getQueryComputeSlicesIoctl()) {
const auto queryItem = reinterpret_cast<QueryItem *>(arg);
if (queryItem->queryId != DrmPrelimHelper::getQueryComputeSlicesIoctl()) {
return DrmQueryMock::handleQueryItem(queryItem);
}
@@ -53,7 +53,7 @@ struct QueryTopologyTests : ::testing::Test {
if (queryItem->length == 0) {
queryItem->length = static_cast<int32_t>(sizeof(drm_i915_query_topology_info) + dataSize);
} else {
auto topologyArg = reinterpret_cast<drm_i915_query_topology_info *>(queryItem->data_ptr);
auto topologyArg = reinterpret_cast<drm_i915_query_topology_info *>(queryItem->dataPtr);
uint16_t finalSVal = queryComputeSlicesSCount;
uint16_t finalSSVal = queryComputeSlicesSSCount;

View File

@@ -304,7 +304,7 @@ TEST_F(IoctlHelperPrelimFixture, givenPrelimsWhenQueryDistancesThenCorrectDistan
distances[1].region = {I915_MEMORY_CLASS_DEVICE, 1};
distances[2].engine = {I915_ENGINE_CLASS_COPY, 4};
distances[2].region = {I915_MEMORY_CLASS_DEVICE, 2};
std::vector<drm_i915_query_item> queryItems(distances.size());
std::vector<QueryItem> queryItems(distances.size());
auto ret = drm->getIoctlHelper()->queryDistances(drm.get(), queryItems, distances);
EXPECT_EQ(0u, ret);
EXPECT_EQ(0, distances[0].distance);

View File

@@ -216,11 +216,11 @@ TEST(IoctlHelperTestsUpstream, givenUpstreamWhenQueryDistancesThenReturnEinval)
executionEnvironment->prepareRootDeviceEnvironments(1);
auto drm = std::make_unique<DrmTipMock>(*executionEnvironment->rootDeviceEnvironments[0]);
std::vector<DistanceInfo> distanceInfos;
std::vector<drm_i915_query_item> queries(4);
std::vector<QueryItem> queries(4);
auto ret = drm->getIoctlHelper()->queryDistances(drm.get(), queries, distanceInfos);
EXPECT_EQ(0u, ret);
const bool queryUnsupported = std::all_of(queries.begin(), queries.end(),
[](const drm_i915_query_item &item) { return item.length == -EINVAL; });
[](const QueryItem &item) { return item.length == -EINVAL; });
EXPECT_TRUE(queryUnsupported);
}

View File

@@ -19,7 +19,6 @@
#include "shared/test/common/os_interface/linux/device_command_stream_fixture.h"
#include "shared/test/common/test_macros/test.h"
#include "drm/i915_drm.h"
#include "gtest/gtest.h"
#include <memory>
@@ -33,4 +32,4 @@ TEST(OSContextLinux, givenReinitializeContextWhenContextIsInitThenContextIsStill
OsContextLinux osContext(*mock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
EXPECT_NO_THROW(osContext.reInitializeContext());
EXPECT_NO_THROW(osContext.ensureContextInitialized());
}
}

View File

@@ -5,6 +5,7 @@
*
*/
#include "shared/source/os_interface/linux/drm_wrappers.h"
#include "shared/source/os_interface/linux/ioctl_helper.h"
#include "shared/test/common/test_macros/test.h"
@@ -51,14 +52,14 @@ int handlePrelimRequests(unsigned long request, void *arg, int ioctlRetVal, int
return EINVAL;
}
for (auto i = 0u; i < query->num_items; i++) {
auto queryItemPtr = reinterpret_cast<drm_i915_query_item *>(query->items_ptr) + i;
if (queryItemPtr->query_id == PRELIM_DRM_I915_QUERY_DISTANCE_INFO) {
auto queryItemPtr = reinterpret_cast<QueryItem *>(query->items_ptr) + i;
if (queryItemPtr->queryId == PRELIM_DRM_I915_QUERY_DISTANCE_INFO) {
if (queryDistanceIoctlRetVal != 0) {
return queryDistanceIoctlRetVal;
}
auto distance = reinterpret_cast<prelim_drm_i915_query_distance_info *>(queryItemPtr->data_ptr);
auto distance = reinterpret_cast<prelim_drm_i915_query_distance_info *>(queryItemPtr->dataPtr);
distance->distance = (distance->engine.engine_instance == distance->region.memory_instance) ? 0 : 100;
} else if (queryItemPtr->query_id == PRELIM_DRM_I915_QUERY_ENGINE_INFO) {
} else if (queryItemPtr->queryId == PRELIM_DRM_I915_QUERY_ENGINE_INFO) {
auto numberOfTiles = 2u;
uint32_t numberOfEngines = numberOfTiles * 6u;
int engineInfoSize = sizeof(prelim_drm_i915_query_engine_info) + numberOfEngines * sizeof(prelim_drm_i915_engine_info);
@@ -66,7 +67,7 @@ int handlePrelimRequests(unsigned long request, void *arg, int ioctlRetVal, int
queryItemPtr->length = engineInfoSize;
} else {
EXPECT_EQ(engineInfoSize, queryItemPtr->length);
auto queryEngineInfo = reinterpret_cast<prelim_drm_i915_query_engine_info *>(queryItemPtr->data_ptr);
auto queryEngineInfo = reinterpret_cast<prelim_drm_i915_query_engine_info *>(queryItemPtr->dataPtr);
EXPECT_EQ(0u, queryEngineInfo->num_engines);
queryEngineInfo->num_engines = numberOfEngines;
auto p = queryEngineInfo->engines;