summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/render/backend/computecommand.cpp3
-rw-r--r--tests/auto/render/computecommand/tst_computecommand.cpp16
2 files changed, 19 insertions, 0 deletions
diff --git a/src/render/backend/computecommand.cpp b/src/render/backend/computecommand.cpp
index b961ffc53..adf7a2099 100644
--- a/src/render/backend/computecommand.cpp
+++ b/src/render/backend/computecommand.cpp
@@ -81,7 +81,10 @@ void ComputeCommand::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firs
if (!node)
return;
+ const bool wasEnabled = isEnabled();
BackendNode::syncFromFrontEnd(frontEnd, firstTime);
+ if (wasEnabled != isEnabled())
+ markDirty(AbstractRenderer::ComputeDirty);
if (m_workGroups[0] != node->workGroupX()) {
m_workGroups[0] = node->workGroupX();
diff --git a/tests/auto/render/computecommand/tst_computecommand.cpp b/tests/auto/render/computecommand/tst_computecommand.cpp
index d6fa1d579..e583a9c61 100644
--- a/tests/auto/render/computecommand/tst_computecommand.cpp
+++ b/tests/auto/render/computecommand/tst_computecommand.cpp
@@ -141,6 +141,10 @@ private Q_SLOTS:
backendComputeCommand.setRenderer(&renderer);
simulateInitializationSync(&computeCommand, &backendComputeCommand);
+ // THEN
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::ComputeDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
+
{
// WHEN
const bool newValue = false;
@@ -149,6 +153,8 @@ private Q_SLOTS:
// THEN
QCOMPARE(backendComputeCommand.isEnabled(), newValue);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::ComputeDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
}
{
// WHEN
@@ -158,6 +164,8 @@ private Q_SLOTS:
// THEN
QCOMPARE(backendComputeCommand.x(), newValue);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::ComputeDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
}
{
// WHEN
@@ -167,6 +175,8 @@ private Q_SLOTS:
// THEN
QCOMPARE(backendComputeCommand.y(), newValue);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::ComputeDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
}
{
// WHEN
@@ -176,6 +186,8 @@ private Q_SLOTS:
// THEN
QCOMPARE(backendComputeCommand.z(), newValue);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::ComputeDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
}
{
// WHEN
@@ -185,6 +197,8 @@ private Q_SLOTS:
// THEN
QCOMPARE(backendComputeCommand.runType(), newValue);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::ComputeDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
}
{
// WHEN
@@ -194,6 +208,8 @@ private Q_SLOTS:
// THEN
QCOMPARE(backendComputeCommand.frameCount(), newValue);
+ QVERIFY(renderer.dirtyBits() & Qt3DRender::Render::AbstractRenderer::ComputeDirty);
+ renderer.clearDirtyBits(Qt3DRender::Render::AbstractRenderer::AllDirty);
}
}