mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-10 07:08:04 +08:00
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:
committed by
Compute-Runtime-Automation
parent
771298c6e2
commit
ac3005a463
@@ -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
|
||||
}
|
||||
|
||||
@@ -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}));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user