telemetry and timing updates
This commit is contained in:
@@ -27,6 +27,13 @@ SystemFrameExchangeConfig MakeConfig(std::size_t capacity = 2)
|
||||
return config;
|
||||
}
|
||||
|
||||
SystemFrameExchangeConfig MakeBoundedCompletedConfig(std::size_t capacity = 4, std::size_t maxCompletedFrames = 2)
|
||||
{
|
||||
SystemFrameExchangeConfig config = MakeConfig(capacity);
|
||||
config.maxCompletedFrames = maxCompletedFrames;
|
||||
return config;
|
||||
}
|
||||
|
||||
void TestAcquirePublishesAndSchedules()
|
||||
{
|
||||
SystemFrameExchange exchange(MakeConfig(1));
|
||||
@@ -82,6 +89,31 @@ void TestAcquirePreservesCompletedFrames()
|
||||
Expect(metrics.acquireMisses == 1, "preserving acquire miss is counted");
|
||||
}
|
||||
|
||||
void TestCompletedReserveIsBoundedFifo()
|
||||
{
|
||||
SystemFrameExchange exchange(MakeBoundedCompletedConfig(4, 2));
|
||||
|
||||
for (uint64_t frameIndex = 1; frameIndex <= 3; ++frameIndex)
|
||||
{
|
||||
SystemFrame frame;
|
||||
Expect(exchange.AcquireForRender(frame), "bounded reserve frame can be acquired");
|
||||
frame.frameIndex = frameIndex;
|
||||
Expect(exchange.PublishCompleted(frame), "bounded reserve frame can be completed");
|
||||
}
|
||||
|
||||
SystemFrame firstScheduled;
|
||||
Expect(exchange.ConsumeCompletedForSchedule(firstScheduled), "bounded reserve oldest retained frame can be scheduled");
|
||||
Expect(firstScheduled.frameIndex == 2, "bounded reserve drops oldest overflow and keeps FIFO order");
|
||||
|
||||
SystemFrame secondScheduled;
|
||||
Expect(exchange.ConsumeCompletedForSchedule(secondScheduled), "bounded reserve second retained frame can be scheduled");
|
||||
Expect(secondScheduled.frameIndex == 3, "bounded reserve schedules next retained frame");
|
||||
|
||||
SystemFrameExchangeMetrics metrics = exchange.Metrics();
|
||||
Expect(metrics.completedDrops == 1, "bounded completed reserve records oldest overflow drop");
|
||||
Expect(metrics.scheduledFrames == 2, "bounded reserve schedules retained frames");
|
||||
}
|
||||
|
||||
void TestScheduledFramesAreNotDropped()
|
||||
{
|
||||
SystemFrameExchange exchange(MakeConfig(1));
|
||||
@@ -177,6 +209,7 @@ int main()
|
||||
{
|
||||
TestAcquirePublishesAndSchedules();
|
||||
TestAcquirePreservesCompletedFrames();
|
||||
TestCompletedReserveIsBoundedFifo();
|
||||
TestScheduledFramesAreNotDropped();
|
||||
TestGenerationValidationRejectsStaleFrames();
|
||||
TestPixelFormatAwareSizing();
|
||||
|
||||
Reference in New Issue
Block a user