mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-08 22:12:59 +08:00
fix: put VRAM regions in the reporting order on xe
Related-To: NEO-11165 Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
87776f5f25
commit
07ac0809db
@@ -282,7 +282,8 @@ std::unique_ptr<MemoryInfo> IoctlHelperXe::createMemoryInfo() {
|
||||
return {};
|
||||
}
|
||||
|
||||
std::array<std::bitset<4>, 64> regionTilesMask{};
|
||||
constexpr auto maxSupportedTilesNumber{4u};
|
||||
std::array<std::bitset<maxSupportedTilesNumber>, 64> regionTilesMask{};
|
||||
|
||||
for (auto i{0u}; i < xeGtListData->num_gt; i++) {
|
||||
const auto >Entry = xeGtListData->gt_list[i];
|
||||
@@ -296,7 +297,6 @@ std::unique_ptr<MemoryInfo> IoctlHelperXe::createMemoryInfo() {
|
||||
}
|
||||
|
||||
MemoryInfo::RegionContainer regionsContainer{};
|
||||
size_t sysmemRegionsAdded{0u};
|
||||
|
||||
auto xeMemRegionsData = reinterpret_cast<drm_xe_query_mem_regions *>(memUsageData.data());
|
||||
for (auto i = 0u; i < xeMemRegionsData->num_mem_regions; i++) {
|
||||
@@ -305,12 +305,11 @@ std::unique_ptr<MemoryInfo> IoctlHelperXe::createMemoryInfo() {
|
||||
if (xeMemRegion.mem_class == DRM_XE_MEM_REGION_CLASS_SYSMEM) {
|
||||
// Make sure sysmem is always put at the first position
|
||||
regionsContainer.insert(regionsContainer.begin(), createMemoryRegionFromXeMemRegion(xeMemRegion, 0u));
|
||||
++sysmemRegionsAdded;
|
||||
} else {
|
||||
auto regionIndex = xeMemRegion.instance;
|
||||
UNRECOVERABLE_IF(regionIndex >= regionTilesMask.size());
|
||||
if (auto tilesMask = regionTilesMask[regionIndex]; tilesMask.any()) {
|
||||
regionsContainer.insert(regionsContainer.begin() + sysmemRegionsAdded, createMemoryRegionFromXeMemRegion(xeMemRegion, tilesMask));
|
||||
regionsContainer.push_back(createMemoryRegionFromXeMemRegion(xeMemRegion, tilesMask));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1320,13 +1320,13 @@ TEST(IoctlHelperXeTest, whenCreatingMemoryInfoThenProperMemoryBanksAreDiscovered
|
||||
|
||||
auto memoryClassInstance1 = memoryInfo->getMemoryRegionClassAndInstance(0b01, *defaultHwInfo);
|
||||
EXPECT_EQ(static_cast<uint16_t>(DRM_XE_MEM_REGION_CLASS_VRAM), memoryClassInstance1.memoryClass);
|
||||
EXPECT_EQ(2u, memoryClassInstance1.memoryInstance);
|
||||
EXPECT_EQ(4 * MemoryConstants::gigaByte, memoryInfo->getMemoryRegionSize(0b01));
|
||||
EXPECT_EQ(1u, memoryClassInstance1.memoryInstance);
|
||||
EXPECT_EQ(2 * MemoryConstants::gigaByte, memoryInfo->getMemoryRegionSize(0b01));
|
||||
|
||||
auto memoryClassInstance2 = memoryInfo->getMemoryRegionClassAndInstance(0b10, *defaultHwInfo);
|
||||
EXPECT_EQ(static_cast<uint16_t>(DRM_XE_MEM_REGION_CLASS_VRAM), memoryClassInstance2.memoryClass);
|
||||
EXPECT_EQ(1u, memoryClassInstance2.memoryInstance);
|
||||
EXPECT_EQ(2 * MemoryConstants::gigaByte, memoryInfo->getMemoryRegionSize(0b10));
|
||||
EXPECT_EQ(2u, memoryClassInstance2.memoryInstance);
|
||||
EXPECT_EQ(4 * MemoryConstants::gigaByte, memoryInfo->getMemoryRegionSize(0b10));
|
||||
|
||||
auto &memoryRegions = memoryInfo->getDrmRegionInfos();
|
||||
EXPECT_EQ(3u, memoryRegions.size());
|
||||
@@ -1335,13 +1335,13 @@ TEST(IoctlHelperXeTest, whenCreatingMemoryInfoThenProperMemoryBanksAreDiscovered
|
||||
EXPECT_EQ(MemoryConstants::gigaByte, memoryRegions[0].probedSize);
|
||||
EXPECT_EQ(MemoryConstants::gigaByte - MemoryConstants::kiloByte, memoryRegions[0].unallocatedSize);
|
||||
|
||||
EXPECT_EQ(2u, memoryRegions[1].region.memoryInstance);
|
||||
EXPECT_EQ(4 * MemoryConstants::gigaByte, memoryRegions[1].probedSize);
|
||||
EXPECT_EQ(3 * MemoryConstants::gigaByte, memoryRegions[1].unallocatedSize);
|
||||
EXPECT_EQ(2u, memoryRegions[2].region.memoryInstance);
|
||||
EXPECT_EQ(4 * MemoryConstants::gigaByte, memoryRegions[2].probedSize);
|
||||
EXPECT_EQ(3 * MemoryConstants::gigaByte, memoryRegions[2].unallocatedSize);
|
||||
|
||||
EXPECT_EQ(1u, memoryRegions[2].region.memoryInstance);
|
||||
EXPECT_EQ(2 * MemoryConstants::gigaByte, memoryRegions[2].probedSize);
|
||||
EXPECT_EQ(2 * MemoryConstants::gigaByte - MemoryConstants::megaByte, memoryRegions[2].unallocatedSize);
|
||||
EXPECT_EQ(1u, memoryRegions[1].region.memoryInstance);
|
||||
EXPECT_EQ(2 * MemoryConstants::gigaByte, memoryRegions[1].probedSize);
|
||||
EXPECT_EQ(2 * MemoryConstants::gigaByte - MemoryConstants::megaByte, memoryRegions[1].unallocatedSize);
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, givenXeDrmMemoryManagerWhenGetLocalMemorySizeIsCalledThenReturnMemoryRegionSizeCorrectly) {
|
||||
@@ -1376,11 +1376,11 @@ TEST(IoctlHelperXeTest, givenXeDrmMemoryManagerWhenGetLocalMemorySizeIsCalledThe
|
||||
uint32_t tileMask = static_cast<uint32_t>(maxNBitValue(tileCount));
|
||||
EXPECT_EQ(memoryManager.getLocalMemorySize(0, tileMask), lmemSizes[0] + lmemSizes[1]);
|
||||
tileMask = static_cast<uint32_t>(0b01);
|
||||
EXPECT_EQ(memoryManager.getLocalMemorySize(0, tileMask), lmemSizes[0]);
|
||||
tileMask = static_cast<uint32_t>(0b10);
|
||||
EXPECT_EQ(memoryManager.getLocalMemorySize(0, tileMask), lmemSizes[1]);
|
||||
tileMask = static_cast<uint32_t>(0b100);
|
||||
tileMask = static_cast<uint32_t>(0b10);
|
||||
EXPECT_EQ(memoryManager.getLocalMemorySize(0, tileMask), lmemSizes[0]);
|
||||
tileMask = static_cast<uint32_t>(0b100);
|
||||
EXPECT_EQ(memoryManager.getLocalMemorySize(0, tileMask), lmemSizes[1]);
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, givenIoctlFailureWhenCreatingMemoryInfoThenNoMemoryBanksAreDiscovered) {
|
||||
|
||||
Reference in New Issue
Block a user