Managing Buffers Efficiently

D3D11 Device will grab a mutex for you,

CPU-GPU sync caused by CPU needs the GPU to complete.
-spin-lock waiting for query
-Readback of frame buffer you just rendered to

- GPU memort all after deallo
-buffer renae
immediate update of a buffer still in use

The more sync points you have, the harder they are to find
- Middleware is generally written in vacuum,

Buffer usage pattern
-Forever buffer
-Long live buffer
-Transient buffer
-constants buffer

Transient buffer
- treate as a memory heap
- on CPU, freed memory available now
- on GPU, freed memory is available when GPU is finished used it.

CTrabsientBuffer: spin-lock waiting for RetiredFrame Queue
Transient buffer pattern work in Dx9

Discard-free temporary buffers

Constant buffers
-Group by frequency of update
-The cheapest, you never updates
-Splitting constants this way eliminates constants updates for static objects

Trick fot constant buffer
-use shard structs to update
-Assign them to slots by convention:
  - b0:per frame, p1: per-camera

Performance investigation


Popular posts from this blog


Drawing textured cube with Vulkan on Android

C++ unit testing & CI integration in GitHub (2/2)