mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-22 19:29:06 +08:00
fix: store image implicit args in bindless slot 1
bindless slot 0: image bindless slot 1: image implicit args bindless slot 2: redescribed image Redescribed image moved one slot higher. Separate allocation is created for new bindless slot. Related-To: NEO-9740 Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
0b85a9f256
commit
b6d572ddb8
@@ -120,7 +120,7 @@ TEST_F(BindlessHeapsHelperTests, givenBindlessHeapHelperWhenAllocateSsInHeapThen
|
||||
EXPECT_EQ(ssInHeapInfo.ssPtr, allocInHeapPtr);
|
||||
}
|
||||
|
||||
TEST_F(BindlessHeapsHelperTests, givenBindlessHeapHelperWhenAllocateSsInHeapForImageThenTwoBindlessSlotsAreAllocated) {
|
||||
TEST_F(BindlessHeapsHelperTests, givenBindlessHeapHelperWhenAllocateSsInHeapForImageThenThreeBindlessSlotsAreAllocated) {
|
||||
auto bindlessHeapHelper = std::make_unique<MockBindlesHeapsHelper>(getMemoryManager(), false, rootDeviceIndex, devBitfield);
|
||||
auto surfaceStateSize = bindlessHeapHelper->surfaceStateSize;
|
||||
memManager->mockExecutionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->bindlessHeapsHelper.reset(bindlessHeapHelper.release());
|
||||
@@ -130,14 +130,14 @@ TEST_F(BindlessHeapsHelperTests, givenBindlessHeapHelperWhenAllocateSsInHeapForI
|
||||
EXPECT_TRUE(getMemoryManager()->allocateBindlessSlot(&alloc));
|
||||
auto ssInHeapInfo1 = alloc.getBindlessInfo();
|
||||
|
||||
EXPECT_EQ(surfaceStateSize * 2, ssInHeapInfo1.ssSize);
|
||||
EXPECT_EQ(surfaceStateSize * 3, ssInHeapInfo1.ssSize);
|
||||
|
||||
MockGraphicsAllocation alloc2;
|
||||
alloc2.allocationType = AllocationType::sharedImage;
|
||||
EXPECT_TRUE(getMemoryManager()->allocateBindlessSlot(&alloc2));
|
||||
auto ssInHeapInfo2 = alloc2.getBindlessInfo();
|
||||
|
||||
EXPECT_EQ(surfaceStateSize * 2, ssInHeapInfo2.ssSize);
|
||||
EXPECT_EQ(surfaceStateSize * 3, ssInHeapInfo2.ssSize);
|
||||
}
|
||||
|
||||
TEST_F(BindlessHeapsHelperTests, givenBindlessHeapHelperWhenAllocateSsInHeapTwiceForTheSameAllocationThenTheSameOffsetReturned) {
|
||||
@@ -337,10 +337,10 @@ TEST_F(BindlessHeapsHelperTests, givenFreeSlotsExceedingThresholdInResuePoolWhen
|
||||
|
||||
ssInHeapInfos[0] = bindlessHeapHelper->allocateSSInHeap(size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[1] = bindlessHeapHelper->allocateSSInHeap(size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
// allocate double size for image
|
||||
ssInHeapInfos[2] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
// allocate triple size for image
|
||||
ssInHeapInfos[2] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[3] = bindlessHeapHelper->allocateSSInHeap(size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[4] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[4] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
|
||||
EXPECT_FALSE(bindlessHeapHelper->allocateFromReusePool);
|
||||
|
||||
@@ -368,10 +368,10 @@ TEST_F(BindlessHeapsHelperTests, givenReusePoolExhaustedWhenNewSlotsAllocatedThe
|
||||
|
||||
ssInHeapInfos[0] = bindlessHeapHelper->allocateSSInHeap(size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[1] = bindlessHeapHelper->allocateSSInHeap(size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
// allocate double size for image
|
||||
ssInHeapInfos[2] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
// allocate triple size for image
|
||||
ssInHeapInfos[2] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[3] = bindlessHeapHelper->allocateSSInHeap(size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[4] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[4] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
|
||||
EXPECT_FALSE(bindlessHeapHelper->allocateFromReusePool);
|
||||
|
||||
@@ -420,10 +420,10 @@ TEST_F(BindlessHeapsHelperTests, givenReleasedSlotsToSecondPoolWhenThresholdReac
|
||||
|
||||
ssInHeapInfos[0] = bindlessHeapHelper->allocateSSInHeap(size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[1] = bindlessHeapHelper->allocateSSInHeap(size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
// allocate double size for image
|
||||
ssInHeapInfos[2] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
// allocate triple size for image
|
||||
ssInHeapInfos[2] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[3] = bindlessHeapHelper->allocateSSInHeap(size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[4] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[4] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
bindlessHeapHelper->releaseSSToReusePool(ssInHeapInfos[i]);
|
||||
@@ -451,7 +451,7 @@ TEST_F(BindlessHeapsHelperTests, givenReleasedSlotsToSecondPoolWhenThresholdReac
|
||||
EXPECT_EQ(bindlessHeapHelper->surfaceStateInHeapVectorReuse[releasePoolIndex][0].size(), 3u);
|
||||
EXPECT_EQ(bindlessHeapHelper->surfaceStateInHeapVectorReuse[releasePoolIndex][1].size(), 2u);
|
||||
|
||||
ssInHeapInfos[3] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[3] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
|
||||
EXPECT_EQ(1u, bindlessHeapHelper->allocatePoolIndex);
|
||||
EXPECT_EQ(0u, bindlessHeapHelper->releasePoolIndex);
|
||||
@@ -461,7 +461,7 @@ TEST_F(BindlessHeapsHelperTests, givenReleasedSlotsToSecondPoolWhenThresholdReac
|
||||
|
||||
EXPECT_EQ(bindlessHeapHelper->surfaceStateInHeapVectorReuse[allocatePoolIndex][1].size(), 1u);
|
||||
|
||||
ssInHeapInfos[4] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[4] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
EXPECT_EQ(bindlessHeapHelper->surfaceStateInHeapVectorReuse[allocatePoolIndex][1].size(), 0u);
|
||||
EXPECT_FALSE(bindlessHeapHelper->allocateFromReusePool);
|
||||
|
||||
@@ -476,7 +476,7 @@ TEST_F(BindlessHeapsHelperTests, givenReleasedSlotsToSecondPoolWhenThresholdReac
|
||||
|
||||
bindlessHeapHelper->stateCacheDirtyForContext.reset();
|
||||
|
||||
ssInHeapInfos[0] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[0] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
|
||||
EXPECT_EQ(0u, bindlessHeapHelper->allocatePoolIndex);
|
||||
EXPECT_EQ(1u, bindlessHeapHelper->releasePoolIndex);
|
||||
@@ -518,7 +518,7 @@ TEST_F(BindlessHeapsHelperTests, givenFreeSlotsInReusePoolForONeSizeWhenAllocati
|
||||
ssInHeapInfos[i] = {0};
|
||||
}
|
||||
|
||||
ssInHeapInfos[0] = bindlessHeapHelper->allocateSSInHeap(2 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
ssInHeapInfos[0] = bindlessHeapHelper->allocateSSInHeap(3 * size, nullptr, BindlessHeapsHelper::BindlesHeapType::globalSsh);
|
||||
|
||||
EXPECT_EQ(0u, bindlessHeapHelper->allocatePoolIndex);
|
||||
EXPECT_EQ(1u, bindlessHeapHelper->releasePoolIndex);
|
||||
|
||||
Reference in New Issue
Block a user