Oxsomi Core3 is a combination of standalone C libraries useful for building applications, such as types, platform, graphics abstraction and file formats
[x] Transition primitive buffer automatically to vertex/index state.
[x] Disallow same buffer as index buffer and vertex? Or not?
[x] Handle copy resources in graphics commit.
[x] Support runtime buffer copies with a staging buffer.
[x] Support updating a buffer that's out of flight without using staging buffer.
[x] See if SSBO flag can be removed on readonly StructuredBuffers.
[x] Allow specifying either "mailbox, fifo, immediate" with a priority. E.g. Default is mailbox, immediate, fifo. Rather than only vsync. This would allow the app to pick their target.
[x] Support AMD APU with memory allocator (see VMA's dev blog post).
[x] Test 64 MiB+ copies that trigger dedicated staging buffers.
[x] Clean up current codebase.
[x] Flush should ensure all queued commands are executed and all currently pending staging allocations should be cleared (and temp resources deleted).
[x] Allow transitioning DeviceBuffers for shader use.
[x] Resize staging buffer to be bigger if out of bounds (allow the staging buffer to start of smaller like 64MiB).
[x] Profile test app to see if there's any obvious CPU/GPU hogs from the start.
[x] Get rid of per frame allocations.
[x] Force triple buffering for swapchains.
[x] Expose option to not allow swapchain in compute for better compression.
[x] Test draw indirect
[x] Test dispatch indirect
[x] Test scope collapse
[x] Invalidate command list if resource versions don't match anymore (Swapchain resId should be cached when it starts and then validated on replay).
[x] Graphics object creation should be thread-safe (e.g. graphics allocator).
[x] Samplers.
[x] Flush if there's too much outstanding data.
[x] Align vkFlushMappedRanges to nonCoherentAtomSize for ARM.
[x] Announce leaked block allocations on device destroy.
[x] Announce leaked descriptor allocations on device destroy.
[x] Query for formats to ensure they are supported (vkGetPhysicalDeviceFormatProperties).
[x] Define what formats are usable by BLAS creation.
[x] BLAS
[x] BLAS build
[x] TLAS
[x] TLAS build
[x] Ray trace
[x] Ray query.
[x] Ray pipeline.
[ ] Refactor to be similar to D3D12 impl since updateTLASExt is now a command
[ ] Refactor to be similar to D3D12 impl since updateBLASExt is now a command