diff options
author | Gunnar Sletta <gunnar.sletta@digia.com> | 2013-09-06 10:35:26 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-09 22:58:45 +0200 |
commit | b8dcbb12a25916472e047e4bdceadfbd27bdba9c (patch) | |
tree | 3fcddc3be76782d500e2d5d7b7ba755acc7231a1 /src/quick/scenegraph/coreapi | |
parent | ddc822547782623cc9b210aa28ba3bb039df5c64 (diff) |
Trigger rebuild when xform of alpha nodes change.
When transforms change, overlaps may have changed, so we
need to rebuild all batches under the current root.
Instead of adding taggedRoots logic for rebuilding
batches only, we reuse the existing tagged roots for render
lists. This one is slightly more expensive, but for now
I believe the reduced code complexity outweights the tiny
overhead.
Change-Id: I1bd0efc18e5628f404d6d4dce38c725436e87ce5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Diffstat (limited to 'src/quick/scenegraph/coreapi')
-rw-r--r-- | src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp index 2ffbdb26bb..cf71489f88 100644 --- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp +++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp @@ -826,14 +826,16 @@ void Renderer::nodeWasTransformed(Node *node, int *vertexCount) e->boundsComputed = false; if (e->batch) { if (!e->batch->isOpaque) { - e->batch->invalidate(); - m_rebuild |= BuildBatches; + if (e->root) { + m_taggedRoots << e->root; + m_rebuild |= BuildRenderListsForTaggedRoots; + } else { + m_rebuild |= FullRebuild; + } } else if (e->batch->merged) { e->batch->needsUpload = true; } } - if (e->batch && e->batch->merged) - e->batch->needsUpload = true; } } |