Concurrency and Memory Managment
NOTE: This release replaces 0.3.0-alpha11, the address allocator API has changed slightly to account for a few things. This is the last release before the Asset Pipeline merge.
Made IReferenceCounted atomically thread-safe.
Added:
AlignedBase
to force alignment and override new/delete for aligned alloc, and derived most classes from it.aligned_allocator
with typedefcore::allocator
replacement forstd::allocator
- Typedefs for most STL containers using the aligned allocator
- Default Streaming buffers for staging upload and downloads to/from the GPU
- Address Allocators abstracted away from the representation of the resource from which sub-allocations take place
- Address Allocator adaptors
- GeneralpurposeAddressAllocator that is 4x faster than glibc malloc in a single thread
- EventDeferredHandler, which is basically a GPU object garbage collector triggered by API fences
- Mapped Memory Range Flushing
- Example
31.SkinningDataBenchmark
- Object caches
- New CMake build system
- Arrow, Cylinder and Cone meshbuffer generation
- GLSL-source function generation class
- Debug line drawing extension
- Simplified and updated examples
- Threw out the old irr::os global static thread-unsafe timer (also inlined ITimer)
- BaW bugfix backports (setScale)
Removed:
- IEmptySceneNode
- Various ISceneManager legacy functions
Others:
- matrixSIMD4 implementation and fixes
- Disallow MSAA non-PoT sample counts (Vulkan requires)
- Bound Buffer Range tracking bug fixed
- Got rid of copy ctors in most IReferenceCounted derived classes (esp. MeshBuffer)
- Improved the robustness and performance of ext::BlurPerformer
- Mesh requantization loop bug
- PLY/STL import/export improved