v174
HIGHLIGHTS:
- Core: allowed resource sharing between bind points: graphics, compute and ray tracing (with breaking changes)
- Core: fixed adapter identification on non-Windows systems (if
LUIDis not valid) - Core: allowed partial root constant block updates
- SwapChain: present scaling and positioning support matching DXGI swap chain ("bye, OUT_OF_DATE!")
- added Arm64 support, including cross compilation
- improvements and bug fixes
- a few renamings to match the style
BREAKING CHANGES:
CmdSetDescriptorSet,CmdSetRootConstantsandCmdSetRootDescriptorarguments grouped into structs with no changes in arguments order. The last field of these structs isbindPoint, which allows to implicitly or explicitly specify the bind point: graphics, compute or ray tracing.INHERITfrom the currently bound pipeline layout is the lazy default- added explicit
bindPointargument toCmdSetPipelineLayout(can't beINHERIT) BufferMemoryBindingDescrenamed toBindBufferMemoryDescTextureMemoryBindingDescrenamed toBindTextureMemoryDescMicromapMemoryBindingDescrenamed toBindMicromapMemoryDescAccelerationStructureMemoryBindingDescrenamed toBindAccelerationStructureMemoryDescDescriptorSetCopyDescrenamed toCopyDescriptorSetDescBarrierGroupDescrenamed toBarrierDescAdapterDesc::luidreplaced with more generic and platform-independentuid(see comments)- LowLatency: removed
QueueSubmitTrackable, addedswapChainas an optional parameter toQueueSubmitDesc - WrapperVK: merged
CreateGraphicsPipelineVKandCreateComputePipelineVKintoCreatePipelineVKsupporting ray tracing
EXAMPLE OF NO-BRAIN MIGRATION:
- old:
CmdSetDescriptorSet(commandBuffer, 0, *set0, nullptr) - new:
CmdSetDescriptorSet(commandBuffer, {0, set0, nullptr})
DETAILS:
- Core: replaced Windows specific
AdapterDesc::luidwith a more genericuid, which is:- preferably
LUID, if possible (.high = 0in this case) UUIDotherwise (.high!= 0)
- preferably
- Core: renamed a few input structs to match the corresponding function name and overall API style (no changes in usage)
- Validation: added "memory is bound" checks before creating views (PR #168)
- Validation: removed an outdated check since
CmdSet*functions have not been depending onCmdSetPipelinefor long time - SwapChain: added present scaling and positioning support for interactive window resizing (matches D3D behavior)
- ResourceAllocator: fixed a rare situation when multiple threads fight for VMA creation during calling "allocate something" for the first time
- WrapperD3D12/VK: added support for
ID3D12Fence/VkSemaphorewrapping (implemented #173) - VK: removed hardcoded
VK_ACCESS_2_MEMORY_READ_BITaccess used forPRESENTlayout,NONEis expected (implemented #179) - D3D12: added a warning if a wrapped device version is lower than expected (
5- for Agility SDK off,14- for Agility SDK on), same for a wrapped command list version (6- for Agility SDK off,10- for Agility SDK on) - D3D12: utilized independent devices feature for root signatures serialization if Agility SDK is enabled (PR #177)
- D3D11: fixed zero buffer initialization for
CmdZeroBuffer(PR #174) - CMake:
NRI_ENABLE_D3D_EXTENSIONSseparated intoNRI_ENABLE_AMDAGSandNRI_ENABLE_NVAPIto improve modularity - CMake: improved Arm64 support, including cross-compilation
- CMake: implemented best practices
- CMake: fixed GCC/Clang flags for MSVC/non-MSVC case (PR #180)
- minor bug fixes