diff options
Diffstat (limited to 'tests/auto/render/renderer/tst_renderer.cpp')
-rw-r--r-- | tests/auto/render/renderer/tst_renderer.cpp | 109 |
1 files changed, 82 insertions, 27 deletions
diff --git a/tests/auto/render/renderer/tst_renderer.cpp b/tests/auto/render/renderer/tst_renderer.cpp index 892e13b25..2fc76c792 100644 --- a/tests/auto/render/renderer/tst_renderer.cpp +++ b/tests/auto/render/renderer/tst_renderer.cpp @@ -45,6 +45,88 @@ public : ~tst_Renderer() {} private Q_SLOTS: + + void checkPreRenderBinJobs() + { + // GIVEN + Qt3DRender::Render::NodeManagers nodeManagers; + Qt3DRender::Render::Renderer renderer(Qt3DRender::QRenderAspect::Synchronous); + Qt3DRender::Render::OffscreenSurfaceHelper offscreenHelper(&renderer); + Qt3DRender::Render::RenderSettings settings; + // owned by FG manager + Qt3DRender::Render::ViewportNode *fgRoot = new Qt3DRender::Render::ViewportNode(); + const Qt3DCore::QNodeId fgRootId = Qt3DCore::QNodeId::createId(); + + nodeManagers.frameGraphManager()->appendNode(fgRootId, fgRoot); + settings.setActiveFrameGraphId(fgRootId); + + renderer.setNodeManagers(&nodeManagers); + renderer.setSettings(&settings); + renderer.setOffscreenSurfaceHelper(&offscreenHelper); + renderer.initialize(); + + // Ensure invoke calls are performed + QCoreApplication::processEvents(); + + // WHEN (nothing dirty, no buffers, no layers to be rebuilt, no materials to be rebuilt) + QVector<Qt3DCore::QAspectJobPtr> jobs = renderer.preRenderingJobs(); + + // THEN + QCOMPARE(jobs.size(), + 1 + // PickBoundingVolumeJob + 1); // RayCastingJob + + // WHEN + renderer.addRenderCaptureSendRequest(Qt3DCore::QNodeId::createId()); + jobs = renderer.preRenderingJobs(); + + // THEN + QCOMPARE(jobs.size(), + 1 + // PickBoundingVolumeJob + 1 + // RayCastingJob + 1); // SendRenderCaptureJob + + // WHEN + renderer.m_sendBufferCaptureJob->addRequest({nullptr, {}}); + jobs = renderer.preRenderingJobs(); + + // THEN + QCOMPARE(jobs.size(), + 1 + // PickBoundingVolumeJob + 1 + // RayCastingJob + 1); // SendBufferCaptureJob + // Note: pending render buffer captures are only cleared when the job is run + + // WHEN + renderer.m_updatedSetFences.push_back({Qt3DCore::QNodeId(), nullptr}); + jobs = renderer.preRenderingJobs(); + + // THEN + QCOMPARE(jobs.size(), + 1 + // PickBoundingVolumeJob + 1 + // RayCastingJob + 1 + // SendBufferCaptureJob + 1); // SendSetFenceHandlesJob + // Note: pending set fence handles are only cleared when the job is run + + // WHEN + renderer.m_updatedTextureProperties.push_back({{}, {}}); + jobs = renderer.preRenderingJobs(); + + // THEN + QCOMPARE(jobs.size(), + 1 + // PickBoundingVolumeJob + 1 + // RayCastingJob + 1 + // SendBufferCaptureJob + 1 + // SendSetFenceHandlesJob + 1); // SendTextureChangesToFrontend + + // Note: pending texture changes are only cleared when the job is run + + // Properly shutdown command thread + renderer.shutdown(); + } + void checkRenderBinJobs() { // GIVEN @@ -95,7 +177,6 @@ private Q_SLOTS: QCOMPARE(jobs.size(), 1 + // updateLevelOfDetailJob 1 + // cleanupJob - 1 + // sendBufferCaptureJob 1 + // VAOGatherer 1 + // updateSkinningPaletteJob singleRenderViewJobCount); // Only valid for the first call to renderBinJobs(), since subsequent calls won't have the renderqueue reset @@ -104,23 +185,6 @@ private Q_SLOTS: renderQueue->reset(); // WHEN - renderer.addRenderCaptureSendRequest(Qt3DCore::QNodeId::createId()); - jobs = renderer.renderBinJobs(); - - // THEN - QCOMPARE(jobs.size(), - 1 + // updateLevelOfDetailJob - 1 + // cleanupJob - 1 + // sendBufferCaptureJob - 1 + // sendRenderCaptureJob - 1 + // VAOGatherer - 1 + // updateSkinningPaletteJob - singleRenderViewJobCount); - - renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty); - renderQueue->reset(); - - // WHEN renderer.markDirty(Qt3DRender::Render::AbstractRenderer::EntityEnabledDirty, nullptr); jobs = renderer.renderBinJobs(); @@ -128,7 +192,6 @@ private Q_SLOTS: QCOMPARE(jobs.size(), 1 + // updateLevelOfDetailJob 1 + // cleanupJob - 1 + // sendBufferCaptureJob 1 + // VAOGatherer 1 + // updateSkinningPaletteJob 1 + // EntityEnabledDirty @@ -146,7 +209,6 @@ private Q_SLOTS: QCOMPARE(jobs.size(), 1 + // updateLevelOfDetailJob 1 + // cleanupJob - 1 + // sendBufferCaptureJob 1 + // VAOGatherer 1 + // WorldTransformJob 1 + // UpdateWorldBoundingVolume @@ -168,7 +230,6 @@ private Q_SLOTS: 1 + // cleanupJob 1 + // VAOGatherer 1 + // updateSkinningPaletteJob - 1 + // sendBufferCaptureJob singleRenderViewJobCount + renderViewBuilderMaterialCacheJobCount); @@ -183,7 +244,6 @@ private Q_SLOTS: QCOMPARE(jobs.size(), 1 + // updateLevelOfDetailJob 1 + // cleanupJob - 1 + // sendBufferCaptureJob 1 + // VAOGatherer 1 + // CalculateBoundingVolumeJob 1 + // UpdateMeshTriangleListJob @@ -204,7 +264,6 @@ private Q_SLOTS: QCOMPARE(jobs.size(), 1 + // updateLevelOfDetailJob 1 + // cleanupJob - 1 + // sendBufferCaptureJob 1 + // VAOGatherer 1 + // updateSkinningPaletteJob 1 + // CalculateBoundingVolumeJob @@ -223,7 +282,6 @@ private Q_SLOTS: QCOMPARE(jobs.size(), 1 + // updateLevelOfDetailJob 1 + // cleanupJob - 1 + // sendBufferCaptureJob 1 + // VAOGatherer 1 + // TexturesGathererJob 1 + // updateSkinningPaletteJob @@ -241,7 +299,6 @@ private Q_SLOTS: 1 + // updateLevelOfDetailJob 1 + // cleanupJob 1 + // VAOGatherer - 1 + // sendBufferCaptureJob 1 + // updateSkinningPaletteJob singleRenderViewJobCount + layerCacheJobCount + @@ -262,7 +319,6 @@ private Q_SLOTS: 1 + // UpdateWorldBoundingVolume 1 + // UpdateShaderDataTransform 1 + // ExpandBoundingVolumeJob - 1 + // CalculateBoundingVolumeJob 1 + // UpdateEntityLayersJob 1 + // updateLevelOfDetailJob 1 + // updateSkinningPaletteJob @@ -292,7 +348,6 @@ private Q_SLOTS: 1 + // updateSkinningPaletteJob 1 + // updateLevelOfDetailJob 1 + // cleanupJob - 1 + // sendBufferCaptureJob 1 + // VAOGatherer 1 + // BufferGathererJob 1 + // TexturesGathererJob |