@@ -29,7 +29,7 @@ class StagingBufferManagerFixture : public DeviceFixture {
29
29
debugManager.flags .EnableCopyWithStagingBuffers .set (1 );
30
30
RootDeviceIndicesContainer rootDeviceIndices = {mockRootDeviceIndex};
31
31
std::map<uint32_t , DeviceBitfield> deviceBitfields{{mockRootDeviceIndex, mockDeviceBitfield}};
32
- this ->stagingBufferManager = std::make_unique<StagingBufferManager>(svmAllocsManager.get (), rootDeviceIndices, deviceBitfields);
32
+ this ->stagingBufferManager = std::make_unique<StagingBufferManager>(svmAllocsManager.get (), rootDeviceIndices, deviceBitfields, false );
33
33
this ->csr = pDevice->commandStreamReceivers [0 ].get ();
34
34
}
35
35
@@ -211,6 +211,41 @@ TEST_F(StagingBufferManagerTest, givenStagingBufferEnabledWhenValidForImageWrite
211
211
svmAllocsManager->freeSVMAlloc (usmBuffer);
212
212
}
213
213
214
+ TEST_F (StagingBufferManagerTest, givenStagingBufferWhenPerformCopyOnHwThenDontSetWritable) {
215
+ constexpr size_t numOfChunkCopies = 8 ;
216
+ constexpr size_t remainder = 1024 ;
217
+ constexpr size_t totalCopySize = stagingBufferSize * numOfChunkCopies + remainder;
218
+ copyThroughStagingBuffers (totalCopySize, numOfChunkCopies + 1 , 1 , csr);
219
+ auto svmData = svmAllocsManager->svmAllocs .allocations [0 ].second .get ();
220
+ auto alloc = svmData->gpuAllocations .getDefaultGraphicsAllocation ();
221
+ alloc->setAubWritable (false , std::numeric_limits<uint32_t >::max ());
222
+ alloc->setTbxWritable (false , std::numeric_limits<uint32_t >::max ());
223
+ copyThroughStagingBuffers (totalCopySize, numOfChunkCopies + 1 , 0 , csr);
224
+
225
+ EXPECT_FALSE (alloc->isAubWritable (std::numeric_limits<uint32_t >::max ()));
226
+ EXPECT_FALSE (alloc->isTbxWritable (std::numeric_limits<uint32_t >::max ()));
227
+ }
228
+
229
+ TEST_F (StagingBufferManagerTest, givenStagingBufferWhenPerformCopyOnSimulationThenSetWritable) {
230
+ constexpr size_t numOfChunkCopies = 8 ;
231
+ constexpr size_t remainder = 1024 ;
232
+ constexpr size_t totalCopySize = stagingBufferSize * numOfChunkCopies + remainder;
233
+
234
+ RootDeviceIndicesContainer rootDeviceIndices = {mockRootDeviceIndex};
235
+ std::map<uint32_t , DeviceBitfield> deviceBitfields{{mockRootDeviceIndex, mockDeviceBitfield}};
236
+ stagingBufferManager = std::make_unique<StagingBufferManager>(svmAllocsManager.get (), rootDeviceIndices, deviceBitfields, true );
237
+
238
+ copyThroughStagingBuffers (totalCopySize, numOfChunkCopies + 1 , 1 , csr);
239
+ auto svmData = svmAllocsManager->svmAllocs .allocations [0 ].second .get ();
240
+ auto alloc = svmData->gpuAllocations .getDefaultGraphicsAllocation ();
241
+ alloc->setAubWritable (false , std::numeric_limits<uint32_t >::max ());
242
+ alloc->setTbxWritable (false , std::numeric_limits<uint32_t >::max ());
243
+ copyThroughStagingBuffers (totalCopySize, numOfChunkCopies + 1 , 0 , csr);
244
+
245
+ EXPECT_TRUE (alloc->isAubWritable (std::numeric_limits<uint32_t >::max ()));
246
+ EXPECT_TRUE (alloc->isTbxWritable (std::numeric_limits<uint32_t >::max ()));
247
+ }
248
+
214
249
TEST_F (StagingBufferManagerTest, givenStagingBufferWhenPerformCopyThenCopyData) {
215
250
constexpr size_t numOfChunkCopies = 8 ;
216
251
constexpr size_t remainder = 1024 ;
@@ -336,7 +371,7 @@ TEST_F(StagingBufferManagerTest, givenStagingBufferWhenChangedBufferSizeThenPerf
336
371
337
372
RootDeviceIndicesContainer rootDeviceIndices = {mockRootDeviceIndex};
338
373
std::map<uint32_t , DeviceBitfield> deviceBitfields{{mockRootDeviceIndex, mockDeviceBitfield}};
339
- stagingBufferManager = std::make_unique<StagingBufferManager>(svmAllocsManager.get (), rootDeviceIndices, deviceBitfields);
374
+ stagingBufferManager = std::make_unique<StagingBufferManager>(svmAllocsManager.get (), rootDeviceIndices, deviceBitfields, false );
340
375
copyThroughStagingBuffers (totalCopySize, numOfChunkCopies + 1 , 1 , csr);
341
376
}
342
377
0 commit comments