summaryrefslogtreecommitdiffstats
path: root/tests/auto/render/texture
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-02-21 13:01:38 +0100
committerPaul Lemire <paul.lemire@kdab.com>2019-03-20 13:29:55 +0000
commitb9ac4faf28cc27849a392019564209b319f90568 (patch)
treee36fae9592ad81dd26ab483b6d1d6a6562b7ac71 /tests/auto/render/texture
parent3c4feadc1f71d2e7cd1fa0e00d439b740bd9289d (diff)
Make it possible to partially update a texture
- Introduce QTextureDataUpdate which contains information about the update - QAbstractTexture::updateTexture function added - Add manual test texture-updates-cpp - Add unit tests for GLTexture and complete other texture tests Change-Id: I1b792f2075830ce05cc8e04cc68110141b5571d6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/render/texture')
-rw-r--r--tests/auto/render/texture/tst_texture.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/auto/render/texture/tst_texture.cpp b/tests/auto/render/texture/tst_texture.cpp
index b0ce782a0..d827e900e 100644
--- a/tests/auto/render/texture/tst_texture.cpp
+++ b/tests/auto/render/texture/tst_texture.cpp
@@ -77,6 +77,7 @@ private slots:
void checkPropertyMirroring();
void checkPropertyChanges();
void checkTextureImageBookeeping();
+ void checkInitialUpdateData();
};
void tst_RenderTexture::checkDefaults()
@@ -531,6 +532,25 @@ void tst_RenderTexture::checkPropertyChanges()
QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyImageGenerators);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
backend.unsetDirty();
+
+ // WHEN
+ Qt3DRender::QTextureDataUpdate updateData;
+ updateData.setX(100);
+ updateData.setY(100);
+ updateData.setZ(100);
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setPropertyName("updateData");
+ updateChange->setValue(QVariant::fromValue(updateData));
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ const QVector<Qt3DRender::QTextureDataUpdate> pendingUpdates = backend.takePendingTextureDataUpdates();
+ QCOMPARE(pendingUpdates.size(), 1);
+ QCOMPARE(pendingUpdates.first(), updateData);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyPendingDataUpdates);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
}
void tst_RenderTexture::checkTextureImageBookeeping()
@@ -556,7 +576,31 @@ void tst_RenderTexture::checkTextureImageBookeeping()
// THEN
QCOMPARE(texture.textureImages().size(), 0);
+}
+
+void tst_RenderTexture::checkInitialUpdateData()
+{
+ // GIVEN
+ TestRenderer renderer;
+ DummyTexture frontend;
+ Qt3DRender::Render::Texture backend;
+
+ backend.setRenderer(&renderer);
+
+ Qt3DRender::QTextureDataUpdate updateData;
+ updateData.setX(100);
+ updateData.setY(100);
+ updateData.setZ(100);
+
+ // WHEN -> updateData with no backend/arbiter
+ frontend.updateData(updateData);
+ simulateInitialization(&frontend, &backend);
+ // THEN -> should have received the update as part of the initial data
+ const QVector<Qt3DRender::QTextureDataUpdate> pendingUpdates = backend.takePendingTextureDataUpdates();
+ QCOMPARE(pendingUpdates.size(), 1);
+ QCOMPARE(pendingUpdates.first(), updateData);
+ QVERIFY(backend.dirtyFlags() & Qt3DRender::Render::Texture::DirtyPendingDataUpdates);
}
QTEST_APPLESS_MAIN(tst_RenderTexture)