summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2017-08-18 09:22:49 +0200
committerPaul Lemire <paul.lemire@kdab.com>2017-08-18 13:56:05 +0000
commit4b9ba03e0b8c5bb60410ea016d8436a57c02e6f8 (patch)
tree55024ff09acf981c4044125675b95e9460299085 /tests/benchmarks
parent10fcb22c79387b957fe3e6663b23f75d693531d6 (diff)
Fix and improve layer filtering
We now handle the case where multiple LayerFilter nodes are nested within the same FrameGraphBranch. We also have improved the Accept/Discard into Accept Any/All and Discard Any/All which should now handle all filtering cases. We now build a list of layerIds stored into Entity based on the recursive flags on the layers being set. This allows to make layer filtering simpler but the layerIds list building step will need to be improved as a follow up commit Unit tests updated Change-Id: I93451493e41c6c9486defa7e88eaee073a9bc932 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/benchmarks')
-rw-r--r--tests/benchmarks/render/layerfiltering/tst_bench_layerfiltering.cpp46
1 files changed, 21 insertions, 25 deletions
diff --git a/tests/benchmarks/render/layerfiltering/tst_bench_layerfiltering.cpp b/tests/benchmarks/render/layerfiltering/tst_bench_layerfiltering.cpp
index cea52306f..d1ef468b2 100644
--- a/tests/benchmarks/render/layerfiltering/tst_bench_layerfiltering.cpp
+++ b/tests/benchmarks/render/layerfiltering/tst_bench_layerfiltering.cpp
@@ -38,6 +38,7 @@
#include <Qt3DRender/private/qrenderaspect_p.h>
#include <Qt3DRender/private/filterlayerentityjob_p.h>
#include <Qt3DRender/qlayer.h>
+#include <Qt3DRender/qlayerfilter.h>
QT_BEGIN_NAMESPACE
@@ -85,19 +86,21 @@ namespace {
Qt3DCore::QEntity *buildTestScene(int layersCount,
int entityCount,
- QVector<Qt3DCore::QNodeId> &layerIds,
+ QVector<Qt3DCore::QNodeId> &layerFilterIds,
bool alwaysEnabled = true)
{
Qt3DCore::QEntity *root = new Qt3DCore::QEntity();
+ Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(root);
+ layerFilterIds.push_back(layerFilter->id());
QVector<Qt3DRender::QLayer *> layers;
layers.reserve(layersCount);
- layerIds.reserve(layersCount);
+
for (int i = 0; i < layersCount; ++i) {
Qt3DRender::QLayer *layer = new Qt3DRender::QLayer(root);
layers.push_back(layer);
- layerIds.push_back(layer->id());
+ layerFilter->addLayer(layer);
}
for (int i = 0; i < entityCount; ++i) {
@@ -123,43 +126,38 @@ private Q_SLOTS:
void filterEntities_data()
{
QTest::addColumn<Qt3DCore::QEntity *>("entitySubtree");
- QTest::addColumn<Qt3DCore::QNodeIdVector>("layerIds");
- QTest::addColumn<bool>("hasLayerFilter");
+ QTest::addColumn<Qt3DCore::QNodeIdVector>("layerFilterIds");
{
- Qt3DCore::QNodeIdVector layerIds;
- Qt3DCore::QEntity *rootEntity = buildTestScene(0, 5000, layerIds);
+ Qt3DCore::QNodeIdVector layerFilterIds;
+ Qt3DCore::QEntity *rootEntity = buildTestScene(0, 5000, layerFilterIds);
QTest::newRow("Filter-NoLayerFilterAllEnabled") << rootEntity
- << layerIds
- << (layerIds.size() != 0);
+ << layerFilterIds;
}
{
- Qt3DCore::QNodeIdVector layerIds;
- Qt3DCore::QEntity *rootEntity = buildTestScene(0, 5000, layerIds, false);
+ Qt3DCore::QNodeIdVector layerFilterIds;
+ Qt3DCore::QEntity *rootEntity = buildTestScene(0, 5000, layerFilterIds, false);
QTest::newRow("Filter-NoLayerFilterSomeDisabled") << rootEntity
- << layerIds
- << (layerIds.size() != 0);
+ << layerFilterIds;
}
{
- Qt3DCore::QNodeIdVector layerIds;
- Qt3DCore::QEntity *rootEntity = buildTestScene(10, 5000, layerIds);
+ Qt3DCore::QNodeIdVector layerFilterIds;
+ Qt3DCore::QEntity *rootEntity = buildTestScene(10, 5000, layerFilterIds);
QTest::newRow("FilterLayerFilterAllEnabled") << rootEntity
- << layerIds
- << (layerIds.size() != 0);
+ << layerFilterIds;
}
{
- Qt3DCore::QNodeIdVector layerIds;
- Qt3DCore::QEntity *rootEntity = buildTestScene(10, 5000, layerIds, false);
+ Qt3DCore::QNodeIdVector layerFilterIds;
+ Qt3DCore::QEntity *rootEntity = buildTestScene(10, 5000, layerFilterIds, false);
QTest::newRow("FilterLayerFilterSomeDisabled") << rootEntity
- << layerIds
- << (layerIds.size() != 0);
+ << layerFilterIds;
}
}
@@ -167,16 +165,14 @@ private Q_SLOTS:
void filterEntities()
{
QFETCH(Qt3DCore::QEntity *, entitySubtree);
- QFETCH(Qt3DCore::QNodeIdVector, layerIds);
- QFETCH(bool, hasLayerFilter);
+ QFETCH(Qt3DCore::QNodeIdVector, layerFilterIds);
// GIVEN
QScopedPointer<Qt3DRender::TestAspect> aspect(new Qt3DRender::TestAspect(entitySubtree));
// WHEN
Qt3DRender::Render::FilterLayerEntityJob filterJob;
- filterJob.setHasLayerFilter(hasLayerFilter);
- filterJob.setLayers(layerIds);
+ filterJob.setLayerFilters(layerFilterIds);
filterJob.setManager(aspect->nodeManagers());
QBENCHMARK {