rtengine/docs/NOTES_aio_assets.md
Kevin Trogant 1a4a2109ca feat: async io for windows
Submit async-io to the OS.
Next step is replacing all FIO calls with async-io and removing the old
code.
2023-11-22 14:25:37 +01:00

1.1 KiB

AIO & Assets

Async IO:

  • Batches of loads (vy_load_batch)
  • Each load: file-id, offset-in-file, num-bytes, destination buffer
  • SubmitLoadBatch() -> Handle for whole batch or handles for each file op?
  • Reason: Better saturation of disk interface
  • Batch interacts nicely with asset system described below:

Assets

  • Have a tool that detects asset dependencies (maybe the same tool that bakes assets into their runtime format)
  • i.e. world-cell -> meshes -> textures
  • Bake into a single binary (asset_meta.bin)
  • Have that file loaded at runtime at all times
  • DetermineAssetDependencies() -> CreateLoadBatch(asset-id)
  • CreateLoadBatch() could take a cache into account

File Storage in Memory

  • Linked lists of block-regions with fixed size blocks (bitmap allocator)
  • E.g. 1, 2, 3, 5 mb (maybe down to kb) blocks
  • Blocks have refcounts, explicitly increased/decreased
  • Either lock the whole region or lock individual blocks

Cache

  • Hold one reference to storage
  • Track how much space is taken for cache
  • Evict LRU(?) once taken space exceeds threshold
  • Copies could be managers handed to the cache