Details
-
Bug
-
Resolution: Out of scope
-
P3: Somewhat important
-
None
-
5.11.1
-
None
-
Windows 10 64bit
MSVC 2015
Qt 5.11.1
Description
With 'Minimal Map' example from Qt Location, the application suffers from too many batches for rendering under somewhat not small but usual screen resolution (for instance, 1920*1080).
I executed the example with QSG_RENDERER_DEBUG=render to examine batch count.
Sine there are no overlap for map tiles, I thought it would be drawn with one batch, but it's not.
With default window size, there are already 11 batches:
{{
Renderer::render() QSGAbstractRenderer(0x2bf76c82240) "rebuild: none"
Rendering:
-> Opaque: 0 nodes in 0 batches...
-> Alpha: 11 nodes in 11 batches...
- 0x2bf76d36220 [retained] [ clip] [ alpha] [ merged] Nodes: 1 Vertices: 4 Indices: 6 root: 0x2bf79ac20b8 opacity: 1
- 0x2bf76d36860 [retained] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d37b20 [retained] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d37080 [retained] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d37a80 [retained] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d379e0 [retained] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d36cc0 [retained] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d378a0 [retained] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d37300 [retained] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d37800 [retained] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79eb0b10 [retained] [ clip] [ alpha] [ merged] Nodes: 1 Vertices: 4 Indices: 6 root: 0x2bf79ac20b8 opacity: 1
-> times: build: 0, prepare(opaque/alpha): 0/0, sorting: 0, upload(opaque/alpha): 0/0, render: 2
}}
But, once I maximize the window on my PC (with FHD screen), it reports many batches over 40:
{{
Renderer::render() QSGAbstractRenderer(0x2bf76c82240) "rebuild: renderlists"
Rendering:
-> Opaque: 0 nodes in 0 batches...
-> Alpha: 42 nodes in 42 batches...
- 0x2bf79eb0b10 [ upload] [ clip] [ alpha] [ merged] Nodes: 1 Vertices: 4 Indices: 6 root: 0x2bf79ac20b8 opacity: 1
- 0x2bf76d37800 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d37300 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d378a0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d36cc0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d379e0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d37a80 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d37080 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d37b20 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d36860 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf76d36220 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e93790 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e91490 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e926b0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e93010 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e930b0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e91b70 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e92e30 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e93330 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e91350 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e91c10 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e92750 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e91cb0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e92ed0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e92f70 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e92430 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e915d0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e93150 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e91670 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e93650 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e93470 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e91710 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e93830 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e917b0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e931f0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e92110 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e91df0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e91d50 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e93290 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e910d0 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e92b10 [ upload] [ clip] [ alpha] [unmerged] Nodes: 1 Vertices: 4 Indices: 0 root: 0x2bf79ac2128
- 0x2bf79e935b0 [ upload] [ clip] [ alpha] [ merged] Nodes: 1 Vertices: 4 Indices: 6 root: 0x2bf79ac20b8 opacity: 1
-> times: build: 0, prepare(opaque/alpha): 0/0, sorting: 0, upload(opaque/alpha): 0/0, render: 19
}}
The Qt Quick Scene Graph documentation explicitly mentions that the total batch number should lower than 10 for good performance:
{{
When striving for optimal performance, uploads should happen only when really needed, batches should be fewer than 10 and at least 3-4 of them should be opaque.
}}