v176
HIGHLIGHTS:
- Core: improved AMD Virtual Memory Allocator (VulkanMA and D3D12MA) integration.
AllocateMemorycan use VMA under the hood (seeAllocateMemoryDesc).Memorypassed toBindXMemoryandCreatePlacedXcan be allocated via VMA. This allows to manage aliased resources in a memory block allocated by VMA, and even implement a memory allocator inside the memory allocator - Core: added support for directly indexed descriptor heaps, aka SM 6.6 bindless resources (WIP)
- D3D12: supported recent "tight alignment" feature (already supported in 580+ drivers)
- resolved compilation issues (Clang, GCC, MacOS, Clang/MSVC, Arm64)
- bug fixes and improvements
BREAKING CHANGES:
- ResourceAllocator: contents moved to
Corein a better form (AllocateX=>CreateCommittedXorCreatePlacedX), offering 2 ways of memory allocation and binding:- VK style (no changes):
CreateX=>GetXMemoryDesc(doesn't requireVK_KHR_maintenance4) =>AllocateMemory+BindXMemory - D3D12 style (new):
GetXMemoryDesc2(requiresVK_KHR_maintenance4support) =>CreateCommittedXorAllocateMemory+CreatePlacedX(supports implicit heaps managed by VMA)
- VK style (no changes):
- Streamer:
StreamerDesc::dynamicBufferUsageBitsreplaced withdynamicBufferDescto allow explicitstructureStridespecification, i.e. typed or structured (#196)
DETAILS:
- Core: added
SAMPLER_HEAP_DIRECTLY_INDEXEDandRESOURCE_HEAP_DIRECTLY_INDEXEDtoPipelineLayoutBits - Core: added
MUTABLEtoDescriptorRangeBits, indicating that this range may have any non-sampler descriptor types (aka resource heap), currently it's impossible to know an offset inDescriptorPoolpointing to this range (WIP) - Core:
mutableMaxNumadded toDescriptorPoolDesc - Core:
mutableDescriptorTypeadded to device features - Core: added Slang support to
NRI.hlsl(#189) - Core: added missing
stddef.htoNRI.hneeded forsize_t(#194) - Upscaler: fixed NIS behavior on edges if resolution scaling is active (NIS bug)
- Helper:
nriConvertDXGIFormatToNRIreturns the best-match for a "TYPELESS" format - Helper: improved resource packing in a memory block in
AllocateAndBindMemory - Validation: fixed validation for
CreatePipeline(RayTracingPipelineDesc) - D3D12: updated Agility SDK to v1.618.1
- D3D12: added "small resource" alignment handling
- D3D12: added "tight alignment" support
- VK: updated VK headers to v1.4.329
- Clang: fixed lots of compilation issues (#185, #186, #187, #191, #192)
- MacOS: replaced deprecated
syscall(SYS_thread_selfid)withpthread_threadid_np - fixed missing calling conventions and improved related code (#193, #195)
- refactoring and code cleanup