Skip to content

v174

Choose a tag to compare

@dzhdanNV dzhdanNV released this 19 Aug 03:49
· 578 commits to main since this release

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 LUID is 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, CmdSetRootConstants and CmdSetRootDescriptor arguments grouped into structs with no changes in arguments order. The last field of these structs is bindPoint, which allows to implicitly or explicitly specify the bind point: graphics, compute or ray tracing. INHERIT from the currently bound pipeline layout is the lazy default
  • added explicit bindPoint argument to CmdSetPipelineLayout (can't be INHERIT)
  • BufferMemoryBindingDesc renamed to BindBufferMemoryDesc
  • TextureMemoryBindingDesc renamed to BindTextureMemoryDesc
  • MicromapMemoryBindingDesc renamed to BindMicromapMemoryDesc
  • AccelerationStructureMemoryBindingDesc renamed to BindAccelerationStructureMemoryDesc
  • DescriptorSetCopyDesc renamed to CopyDescriptorSetDesc
  • BarrierGroupDesc renamed to BarrierDesc
  • AdapterDesc::luid replaced with more generic and platform-independent uid (see comments)
  • LowLatency: removed QueueSubmitTrackable, added swapChain as an optional parameter to QueueSubmitDesc
  • WrapperVK: merged CreateGraphicsPipelineVK and CreateComputePipelineVK into CreatePipelineVK supporting 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::luid with a more generic uid, which is:
    • preferably LUID, if possible (.high = 0 in this case)
    • UUID otherwise (.high != 0)
  • 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 on CmdSetPipeline for 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/VkSemaphore wrapping (implemented #173)
  • VK: removed hardcoded VK_ACCESS_2_MEMORY_READ_BIT access used for PRESENT layout, NONE is 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_EXTENSIONS separated into NRI_ENABLE_AMDAGS and NRI_ENABLE_NVAPI to 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