Reuse one renderbuffer for all draping. #10611
Merged
+20
−13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Every framebuffer currently instantiate own renderbuffer of (1024 x 1024 x depth24_stencil8 =) 4MB. Renderbuffers are lazily instantiated, when stencil is needed for draping and it is rarely needed as proxy tiles raster approach covers most of stenciling needs. E.g. when zooming out, 3 out of 50 render cache / pool framebuffers may need stenciling. This memory was accumulated and not released, with potential to grow up to (50 render cache tiles + 5 pool tiles) * 4MB = 220MB of renderbuffers. The PR is replacing this with one render buffer attached to all 55 framebuffers.
Verified on macos, iOS and Android (Nexus 5).
Spector capture information before 131MB (left) - after 11MB (right). Renderbuffer memory on screenshot includes depth FBO's renderbuffer (screen size) + 4MB for draping.
