Make sure we rebuild batches properly after a Blending material change.
authorGunnar Sletta <gunnar.sletta@jollamobile.com>
Fri, 25 Apr 2014 14:21:00 +0000 (16:21 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 1 May 2014 12:28:05 +0000 (14:28 +0200)
commitef5a68dfa19bbdb588e9061ed788b805fc3155e1
tree18e32d4d33444156333c8cab771def69037ab1c9
parenta292bcb1438034a24e95ec08be04a76ba832d793
Make sure we rebuild batches properly after a Blending material change.

If a node sent DirtyGeometry and DirtyMaterial in the same round and
DirtyGeometry triggered its batch to be invalidated, we would take the
no-batch code path which did set the rebuild state to BuildBatches. This
looks ok on screen, but if the node changed from alpha to opaque, it
would not be put into an opaque batch. For things like full screen
rectangles, this can potentially hurt performance.

To prevent doing a full rebuild on any material change on batchless
items (aka all Rectangle nodes), we store the blend state of the material
in the element and do a full rebuild only when blend state changes.

Change-Id: Ifdf06fb72ef02ca47a135c821ddbcbe0d164ca29
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
src/quick/scenegraph/coreapi/qsgbatchrenderer_p.h