Skip to content

PagedLOD / DatabasePager can result in continual GPU memory growth #1711

@jamierobertson1

Description

@jamierobertson1

Since the recent changes to the DatabasePager and new MemoryBufferPools resource mechanism, I've noticed my streaming PagedLOD pointclouds cause GPU memory to grow continually when zooming in and out until it eventually runs out and the database pager fails to compile nodes anymore.

It looks like the frequent loading and unloading of large number of tiles cause the MemoryPools become increasing fragmented, causing new pools to be frequently created when loading tiles. Pointcloud databases are probably particularly bad for this as tiles can vary a lot in size, and the tiles are loaded / unloaded frequently.

I've done quite a bit of testing and I don't think there's actual bugs causing the memory growth, inactive tiles are correctly unloaded, and slots in existing pools are reclaimed correctly when they have enough space.

Possibly it might help batching the geometry in my pointcloud databases into fixed size arrays?

To Reproduce
Open a reasonable sized vsgPoints paged LOD database and zoom in and out, so tiles are repeatedly loaded / unloaded and monitor GPU memory.

Expected behavior
GPU memory to stabilise at some ceiling, as happened with previous vsg versions. Possibly targetMaxNumPagedLODWithHighResSubgraphs was a bit more ruthless when removing nodes.

Desktop (please complete the following information):

  • OS: Windows 11

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions