@@ -72,13 +72,13 @@ TEST(SubmissionsAggregator, givenTwoCommandBuffersWhenMergeResourcesIsCalledThen
72
72
size_t totalMemoryBudget = -1 ;
73
73
ResourcePackage resourcePackage;
74
74
75
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
75
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
76
76
77
77
EXPECT_EQ (0u , totalUsedSize);
78
78
79
79
submissionsAggregator.recordCommandBuffer (cmdBuffer);
80
80
81
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
81
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
82
82
83
83
EXPECT_EQ (15u , totalUsedSize);
84
84
totalUsedSize = 0 ;
@@ -92,7 +92,7 @@ TEST(SubmissionsAggregator, givenTwoCommandBuffersWhenMergeResourcesIsCalledThen
92
92
EXPECT_EQ (5u , cmdBuffer->surfaces .size ());
93
93
EXPECT_EQ (4u , cmdBuffer2->surfaces .size ());
94
94
95
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
95
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
96
96
97
97
// command buffer 2 is aggregated to command buffer 1
98
98
auto primaryBatchInstepctionId = submissionsAggregator.peekCommandBuffersList ().peekHead ()->inspectionId ;
@@ -153,7 +153,7 @@ TEST(SubmissionsAggregator, givenSubmissionAggregatorWhenThreeCommandBuffersAreS
153
153
EXPECT_EQ (4u , cmdBuffer2->surfaces .size ());
154
154
EXPECT_EQ (2u , cmdBuffer3->surfaces .size ());
155
155
156
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
156
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
157
157
158
158
// command buffer 3 and 2 is aggregated to command buffer 1
159
159
auto primaryBatchInstepctionId = submissionsAggregator.peekCommandBuffersList ().peekHead ()->inspectionId ;
@@ -207,7 +207,7 @@ TEST(SubmissionsAggregator, givenMultipleCommandBuffersWhenTheyAreAggreagateWith
207
207
submissionsAggregator.recordCommandBuffer (cmdBuffer2);
208
208
submissionsAggregator.recordCommandBuffer (cmdBuffer3);
209
209
210
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
210
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
211
211
212
212
// command buffer 2 is aggregated to command buffer 1, comand buffer 3 becomes command buffer 2
213
213
EXPECT_EQ (submissionsAggregator.peekCommandBuffersList ().peekHead (), cmdBuffer);
@@ -263,7 +263,7 @@ TEST(SubmissionsAggregator, givenMultipleCommandBuffersWhenAggregateIsCalledMult
263
263
submissionsAggregator.recordCommandBuffer (cmdBuffer2);
264
264
submissionsAggregator.recordCommandBuffer (cmdBuffer3);
265
265
266
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
266
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
267
267
268
268
// command buffers not aggregated due to too low limit
269
269
EXPECT_EQ (submissionsAggregator.peekCommandBuffersList ().peekHead (), cmdBuffer);
@@ -275,7 +275,7 @@ TEST(SubmissionsAggregator, givenMultipleCommandBuffersWhenAggregateIsCalledMult
275
275
resourcePackage.clear ();
276
276
totalUsedSize = 0 ;
277
277
278
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
278
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
279
279
// all cmd buffers are merged to 1
280
280
EXPECT_EQ (cmdBuffer3->inspectionId , cmdBuffer2->inspectionId );
281
281
EXPECT_EQ (cmdBuffer->inspectionId , cmdBuffer2->inspectionId );
@@ -313,7 +313,7 @@ TEST(SubmissionsAggregator, givenMultipleCommandBuffersWithDifferentGraphicsAllo
313
313
submissionsAggregator.recordCommandBuffer (cmdBuffer);
314
314
submissionsAggregator.recordCommandBuffer (cmdBuffer2);
315
315
316
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
316
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
317
317
318
318
EXPECT_EQ (4u , resourcePackage.size ());
319
319
EXPECT_EQ (15u , totalUsedSize);
@@ -347,7 +347,7 @@ TEST(SubmissionsAggregator, givenTwoCommandBufferWhereSecondContainsFirstOnResou
347
347
submissionsAggregator.recordCommandBuffer (cmdBuffer);
348
348
submissionsAggregator.recordCommandBuffer (cmdBuffer2);
349
349
350
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
350
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
351
351
352
352
// resource pack shuold have 3 surfaces
353
353
EXPECT_EQ (3u , resourcePackage.size ());
@@ -379,7 +379,7 @@ TEST(SubmissionsAggregator, givenTwoCommandBufferWhereSecondContainsTheFirstComm
379
379
submissionsAggregator.recordCommandBuffer (cmdBuffer);
380
380
submissionsAggregator.recordCommandBuffer (cmdBuffer2);
381
381
382
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
382
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
383
383
384
384
// resource pack shuold have 3 surfaces
385
385
EXPECT_EQ (2u , resourcePackage.size ());
@@ -408,7 +408,7 @@ TEST(SubmissionsAggregator, givenCommandBuffersRequiringDifferentCoherencySettin
408
408
ResourcePackage resourcePackage;
409
409
size_t totalUsedSize = 0 ;
410
410
size_t totalMemoryBudget = 200 ;
411
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
411
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
412
412
EXPECT_EQ (1u , totalUsedSize);
413
413
EXPECT_EQ (1u , resourcePackage.size ());
414
414
EXPECT_NE (cmdBuffer->inspectionId , cmdBuffer2->inspectionId );
@@ -437,7 +437,7 @@ TEST(SubmissionsAggregator, givenCommandBuffersRequiringDifferentThrottleSetting
437
437
ResourcePackage resourcePackage;
438
438
size_t totalUsedSize = 0 ;
439
439
size_t totalMemoryBudget = 200 ;
440
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
440
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
441
441
EXPECT_EQ (1u , totalUsedSize);
442
442
EXPECT_EQ (1u , resourcePackage.size ());
443
443
EXPECT_NE (cmdBuffer->inspectionId , cmdBuffer2->inspectionId );
@@ -466,7 +466,7 @@ TEST(SubmissionsAggregator, givenCommandBuffersRequiringDifferentPrioritySetting
466
466
ResourcePackage resourcePackage;
467
467
size_t totalUsedSize = 0 ;
468
468
size_t totalMemoryBudget = 200 ;
469
- submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget);
469
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 0u );
470
470
EXPECT_EQ (1u , totalUsedSize);
471
471
EXPECT_EQ (1u , resourcePackage.size ());
472
472
EXPECT_NE (cmdBuffer->inspectionId , cmdBuffer2->inspectionId );
@@ -479,14 +479,72 @@ TEST(SubmissionsAggregator, dontAllocateFlushStamp) {
479
479
EXPECT_EQ (nullptr , cmdBuffer.flushStamp ->getStampReference ());
480
480
}
481
481
482
+ TEST (SubmissionsAggregator, givenMultipleOsContextsWhenAggregatingGraphicsAllocationsThenUseInspectionIdCorrespondingWithOsContextId) {
483
+ SubmissionAggregator submissionsAggregator;
484
+ ResourcePackage resourcePackage;
485
+ const auto totalMemoryBudget = 3u ;
486
+ size_t totalUsedSize = 0 ;
487
+ std::unique_ptr<Device> device (MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr ));
488
+ CommandBuffer *cmdBuffer0 = new CommandBuffer (*device);
489
+ CommandBuffer *cmdBuffer1 = new CommandBuffer (*device);
490
+
491
+ MockGraphicsAllocation alloc0 (nullptr , 1 );
492
+ MockGraphicsAllocation alloc1 (nullptr , 1 );
493
+ MockGraphicsAllocation alloc2 (nullptr , 1 );
494
+ MockGraphicsAllocation alloc3 (nullptr , 1 );
495
+
496
+ cmdBuffer0->surfaces .push_back (&alloc0);
497
+ cmdBuffer0->surfaces .push_back (&alloc1);
498
+ cmdBuffer1->surfaces .push_back (&alloc2);
499
+ cmdBuffer1->surfaces .push_back (&alloc3);
500
+
501
+ submissionsAggregator.recordCommandBuffer (cmdBuffer0);
502
+ submissionsAggregator.recordCommandBuffer (cmdBuffer1);
503
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 3u );
504
+ EXPECT_EQ (1u , alloc0.getInspectionId (3u ));
505
+ EXPECT_EQ (1u , alloc1.getInspectionId (3u ));
506
+ EXPECT_EQ (1u , alloc2.getInspectionId (3u ));
507
+ EXPECT_EQ (1u , alloc3.getInspectionId (3u ));
508
+ }
509
+
510
+ TEST (SubmissionsAggregator, givenMultipleOsContextsWhenAggregatingGraphicsAllocationsThenDoNotUpdateInspectionIdsOfOtherContexts) {
511
+ SubmissionAggregator submissionsAggregator;
512
+ ResourcePackage resourcePackage;
513
+ const auto totalMemoryBudget = 2u ;
514
+ size_t totalUsedSize = 0 ;
515
+ std::unique_ptr<Device> device (MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr ));
516
+ CommandBuffer *cmdBuffer0 = new CommandBuffer (*device);
517
+ CommandBuffer *cmdBuffer1 = new CommandBuffer (*device);
518
+
519
+ MockGraphicsAllocation alloc0 (nullptr , 1 );
520
+ MockGraphicsAllocation alloc1 (nullptr , 1 );
521
+
522
+ cmdBuffer0->surfaces .push_back (&alloc0);
523
+ cmdBuffer0->surfaces .push_back (&alloc1);
524
+
525
+ submissionsAggregator.recordCommandBuffer (cmdBuffer0);
526
+ submissionsAggregator.recordCommandBuffer (cmdBuffer1);
527
+ submissionsAggregator.aggregateCommandBuffers (resourcePackage, totalUsedSize, totalMemoryBudget, 3u );
528
+
529
+ for (auto osContextId = 0u ; osContextId < alloc1.usageInfos .size (); osContextId++) {
530
+ if (osContextId != 3u ) {
531
+ EXPECT_EQ (0u , alloc0.getInspectionId (osContextId));
532
+ }
533
+ }
534
+ for (auto osContextId = 0u ; osContextId < alloc0.usageInfos .size (); osContextId++) {
535
+ if (osContextId != 3u ) {
536
+ EXPECT_EQ (0u , alloc0.getInspectionId (osContextId));
537
+ }
538
+ }
539
+ }
540
+
482
541
struct SubmissionsAggregatorTests : public ::testing::Test {
483
542
void SetUp () override {
484
543
device.reset (MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0 ]));
485
544
context.reset (new MockContext (device.get ()));
486
545
}
487
546
488
- template <typename T>
489
- void overrideCsr (T *newCsr) {
547
+ void overrideCsr (CommandStreamReceiver *newCsr) {
490
548
device->resetCommandStreamReceiver (newCsr);
491
549
newCsr->overrideDispatchPolicy (DispatchMode::BatchedDispatch);
492
550
}
0 commit comments