summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2018-08-09 10:11:30 +0200
committerMike Krus <mike.krus@kdab.com>2018-08-13 19:34:41 +0000
commitf5456748d58d5fe38ced7d23e529cbf48b33d3ab (patch)
tree878b5b51c216adfee6fab9e71f28d2cd55be9fc5
parent93b70cca9674535c30bdeefccc76029162c565d3 (diff)
Improve backend texture unit tests
Change-Id: Ie7baba99e03defcd3d8194fd11838a86d1680060 Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--tests/auto/render/texture/tst_texture.cpp186
1 files changed, 186 insertions, 0 deletions
diff --git a/tests/auto/render/texture/tst_texture.cpp b/tests/auto/render/texture/tst_texture.cpp
index 2e94cda24..9876518e2 100644
--- a/tests/auto/render/texture/tst_texture.cpp
+++ b/tests/auto/render/texture/tst_texture.cpp
@@ -47,6 +47,22 @@ public:
}
};
+class FakeGenerator : public Qt3DRender::QTextureGenerator
+{
+public:
+ QT3D_FUNCTOR(FakeGenerator)
+
+ Qt3DRender::QTextureDataPtr operator ()() override
+ {
+ return {};
+ }
+
+ bool operator ==(const QTextureGenerator &) const override
+ {
+ return true;
+ }
+};
+
class tst_RenderTexture : public Qt3DCore::QBackendNodeTester
{
Q_OBJECT
@@ -242,6 +258,7 @@ void tst_RenderTexture::checkPropertyChanges()
TestRenderer renderer;
Qt3DRender::Render::Texture backend;
backend.setRenderer(&renderer);
+ backend.unsetDirty();
// WHEN
Qt3DCore::QPropertyUpdatedChangePtr updateChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId()));
@@ -252,7 +269,9 @@ void tst_RenderTexture::checkPropertyChanges()
// THEN
QCOMPARE(backend.properties().width, 256);
QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyProperties);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
// WHEN
updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
@@ -263,7 +282,9 @@ void tst_RenderTexture::checkPropertyChanges()
// THEN
QCOMPARE(backend.properties().height, 128);
QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyProperties);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
// WHEN
updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
@@ -274,7 +295,152 @@ void tst_RenderTexture::checkPropertyChanges()
// THEN
QCOMPARE(backend.properties().depth, 16);
QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyProperties);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(QVariant::fromValue(Qt3DRender::QAbstractTexture::RGB16F));
+ updateChange->setPropertyName("format");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.properties().format, Qt3DRender::QAbstractTexture::RGB16F);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyProperties);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(QVariant::fromValue(Qt3DRender::QAbstractTexture::Target1DArray));
+ updateChange->setPropertyName("target");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.properties().target, Qt3DRender::QAbstractTexture::Target1DArray);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyProperties);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(true);
+ updateChange->setPropertyName("mipmaps");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.properties().generateMipMaps, true);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyProperties);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(QVariant::fromValue(Qt3DRender::QAbstractTexture::LinearMipMapLinear));
+ updateChange->setPropertyName("minificationFilter");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.parameters().minificationFilter, Qt3DRender::QAbstractTexture::LinearMipMapLinear);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyParameters);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(QVariant::fromValue(Qt3DRender::QAbstractTexture::Linear));
+ updateChange->setPropertyName("magnificationFilter");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.parameters().magnificationFilter, Qt3DRender::QAbstractTexture::Linear);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyParameters);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(QVariant::fromValue(Qt3DRender::QTextureWrapMode::Repeat));
+ updateChange->setPropertyName("wrapModeX");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.parameters().wrapModeX, Qt3DRender::QTextureWrapMode::Repeat);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyParameters);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(QVariant::fromValue(Qt3DRender::QTextureWrapMode::Repeat));
+ updateChange->setPropertyName("wrapModeY");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.parameters().wrapModeY, Qt3DRender::QTextureWrapMode::Repeat);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyParameters);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(QVariant::fromValue(Qt3DRender::QTextureWrapMode::Repeat));
+ updateChange->setPropertyName("wrapModeZ");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.parameters().wrapModeZ, Qt3DRender::QTextureWrapMode::Repeat);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyParameters);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(16.0f);
+ updateChange->setPropertyName("maximumAnisotropy");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.parameters().maximumAnisotropy, 16.0f);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyParameters);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(QVariant::fromValue(Qt3DRender::QAbstractTexture::CompareEqual));
+ updateChange->setPropertyName("comparisonFunction");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.parameters().comparisonFunction, Qt3DRender::QAbstractTexture::CompareEqual);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyParameters);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ updateChange->setValue(QVariant::fromValue(Qt3DRender::QAbstractTexture::CompareRefToTexture));
+ updateChange->setPropertyName("comparisonMode");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.parameters().comparisonMode, Qt3DRender::QAbstractTexture::CompareRefToTexture);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyParameters);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
// WHEN
updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
@@ -285,7 +451,9 @@ void tst_RenderTexture::checkPropertyChanges()
// THEN
QCOMPARE(backend.properties().layers, 32);
QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyProperties);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
// WHEN
updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
@@ -296,7 +464,23 @@ void tst_RenderTexture::checkPropertyChanges()
// THEN
QCOMPARE(backend.properties().samples, 64);
QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyProperties);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
+
+ // WHEN
+ updateChange = QSharedPointer<Qt3DCore::QPropertyUpdatedChange>::create(Qt3DCore::QNodeId());
+ Qt3DRender::QTextureGeneratorPtr gen = QSharedPointer<FakeGenerator>::create();
+ updateChange->setValue(QVariant::fromValue(gen));
+ updateChange->setPropertyName("generator");
+ backend.sceneChangeEvent(updateChange);
+
+ // THEN
+ QCOMPARE(backend.dataGenerator(), gen);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyDataGenerator);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
// WHEN
Qt3DRender::QTextureImage img;
@@ -308,7 +492,9 @@ void tst_RenderTexture::checkPropertyChanges()
QCOMPARE(backend.textureImageIds().size(), 1);
QCOMPARE(backend.textureImageIds().first(), img.id());
QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::TexturesDirty);
+ QVERIFY(backend.dirtyFlags() == Qt3DRender::Render::Texture::DirtyImageGenerators);
renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+ backend.unsetDirty();
}
void tst_RenderTexture::checkTextureImageBookeeping()