diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2017-04-27 10:43:29 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-04-27 18:06:38 +0000 |
commit | b5800ac037321e161d31ee362688aef179c8d9d2 (patch) | |
tree | 4cf220ee24f6eb9ecd48d19c2c22d674747f467f /tests/auto | |
parent | 80e4d6db6b5636b839cef7e79b2b8ff528329ad6 (diff) |
Renderer: fix OnDemand rendering
Note: this is a risky change
For some reason the renderer assumed that a RenderQueue would never have a
size of 0. This prevented the renderer from calling proceedToNextFrame() on
the vsync advance service as it somehow felt that it was a case of rendering
with a RenderQueue not yet ready. In the case of OnDemand rendering it is
perfectly valid to have a RenderQueue of 0 (nothing has changed that requires
rendering) but we still need to call proceedToNextFrame() otherwise
syncChanges() is never called and we end up never updating the aspects ever
again.
The renderer was updated to
1) check if a RenderQueue is complete
2) check if the RenderQueue is empty.
(a RenderQueue can be complete but empty (OnDemand case))
3) Proceed to next frame if RenderQueue is complete or RenderQueue is empty.
Change-Id: I27ae778831c9b136db1e1a69892f6fde291fd965
Task-number: QTBUG-59696
Task-number: QTBUG-54900
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/render/renderqueue/tst_renderqueue.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tests/auto/render/renderqueue/tst_renderqueue.cpp b/tests/auto/render/renderqueue/tst_renderqueue.cpp index 2d25cbe57..163a699c1 100644 --- a/tests/auto/render/renderqueue/tst_renderqueue.cpp +++ b/tests/auto/render/renderqueue/tst_renderqueue.cpp @@ -55,10 +55,14 @@ void tst_RenderQueue::setRenderViewCount() // GIVEN Qt3DRender::Render::RenderQueue renderQueue; + // THEN + QCOMPARE(renderQueue.wasReset(), true); + // WHEN renderQueue.setTargetRenderViewCount(7); // THEN + QCOMPARE(renderQueue.wasReset(), false); QVERIFY(renderQueue.targetRenderViewCount() == 7); QVERIFY(renderQueue.currentRenderViewCount()== 0); } @@ -214,6 +218,7 @@ void tst_RenderQueue::resetQueue() // WHEN renderQueue.setTargetRenderViewCount(5); // THEN + QCOMPARE(renderQueue.wasReset(), false); QVERIFY(renderQueue.currentRenderViewCount() == 0); // WHEN @@ -227,6 +232,7 @@ void tst_RenderQueue::resetQueue() // WHEN renderQueue.reset(); + QCOMPARE(renderQueue.wasReset(), true); // THEN QVERIFY(renderQueue.currentRenderViewCount() == 0); } |