Skip to content

Conversation

@daniel86
Copy link
Owner

@daniel86 daniel86 commented Aug 13, 2025

This is a larger PR where I migrated code to immutable storage API, and introduced a staging system for centralized memory management for writing and reading data from GPU memory.

  • Summarizing the staging system manages multiple semantic buffer ranges within a buffer dedicated to to CPU-based access of GPU memory. The BOs are organized by size and update frequency and adaptively moved to the most apropiate staging arena. Some of the arena types use ring buffers whose size also can adaptively change depending on stall rate when waiting for CPU-GPU synchronization.
  • Staging system supports UBO, SSBO and TBO
  • Further introduced a thread-safe ClientBuffer class that can be used to read/write data which is added into the staging system. The client buffer also supports an adaptive mode where it switched to double buffering in case of wait delays. This can be used to insert data safely from different threads into staging system and upload to GPU
  • Notably I also introduced support for indirect multi-layer drawing

@daniel86 daniel86 changed the title Implemented a Staging System Implemented a Flexible and Adaptive Staging System Aug 13, 2025
@github-actions
Copy link

✅ Compilation - SUCCESS! ✅

@github-actions
Copy link

Test Results

1 tests  ±0   1 ✅ ±0   0s ⏱️ ±0s
1 suites ±0   0 💤 ±0 
1 files   ±0   0 ❌ ±0 

Results for commit c1d0768. ± Comparison against base commit cfd83d8.

@daniel86 daniel86 merged commit d6c68e9 into dev Aug 13, 2025
2 of 3 checks passed
@daniel86 daniel86 deleted the buffer branch August 13, 2025 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants