Skip to content

Releases: NVIDIAGameWorks/NRI

v1.150

18 Sep 08:11
Compare
Choose a tag to compare

HIGHLIGHTS:

  • NRI: added GraphicsAPI::NONE with a dummy implementation, which supports everything, but does nothing
  • NRI: added support for root descriptors in a pipeline layout (respecting D3D12 restrictions)
  • NRI: exposed bindlessTier in DeviceDesc
  • NRI: improved the look of the interfaces, added more comments
  • NRI: improved compilation time (4x-5x)
  • bug fixes and improvements

BREAKING CHANGES (more bytes needed to explain than to fix):

  • CmdSetConstants renamed to CmdSetRootConstants (yes, multiple constants can be organized in a single binding)
  • NRI_PUSH_CONSTANTS renamed to NRI_ROOT_CONSTANTS (yes, multiple constants can be organized in a single binding)
  • PushConstantDesc renamed to RootConstantDesc (foggy, but not a plural form to allow rootConstants)
  • PipelineLayoutDesc::pushConstants renamed to rootConstants
  • color in OutputMergerDesc renamed to colors (a plural form needed)
  • colorNum moved right after colors in OutputMergerDesc to follow "objects first, number of objects next" idiom (like in VK)
  • swapped order of streams and attributeNum in VertexInputDesc to follow "objects first, number of objects next" idiom (like in VK)
  • isLogicOpSupported renamed to isLogicFuncSupported (since LogicFunc is used)
  • boundDescriptorSetMaxNum renamed to pipelineLayoutDescriptorSetMaxNum (to emphasize the meaning)
  • pushConstantsMaxSize renamed to rootConstantMaxSize (again to follow the nomenclature currently in use)

DETAILS (in addition to major changes):

  • NRI: added RootDescriptorSetDesc used in PipelineLayoutDesc
  • Core: added CmdSetRootDescriptor function
  • D3D12: properly filled pipeline layout limits dictated by HW root signature size and the resource binding tier
  • D3D12: hooked up "heap directly indexed" root signature flags if SM 6.6 is supported
  • D3D12/D3D11/VK: minor improvements and optimizations here and there
  • D3D11: minor fixes to match D3D12
  • Validation: various improvements
  • Cmake: project structure made matching on disk folder layout
  • reduced code entropy
  • updated AMD memory allocator
  • refactoring

v1.149

11 Sep 09:24
Compare
Choose a tag to compare

HIGHLIGHTS:

  • Core: simplified understanding of how to work with descriptor ranges and sets (no functional changes)
  • minor improvements

BREAKING CHANGES:

  • offsetInRange => baseDescriptor (for DescriptorRangeUpdateDesc)
  • offsetInRange => descriptorIndex (for clear storage descs)
  • setIndexInPipelineLayout => setIndex
  • rotated src/dst and base prefixes in DescriptorSetCopyDesc

DETAILS:

  • Core: [ Pipeline Layout ] section has been reorganized into [ Pipeline layout and descriptors management ] (by regrouping some structs)
  • Core: highlighted and explained in comments PipelineLayout => DescriptorSet => DescriptorRange => Descriptor idiom
  • Core: explained setIndex => rangeIndex => descriptorIndex
  • Core: a few name changes
  • D3D12: relaxed global UAV barrier conditions

v1.148

10 Sep 07:28
Compare
Choose a tag to compare

HIGHLIGHTS:

  • Core: clarified & simplified creation of descriptor ranges with "partially bound", "array" and "variable-sized array" functionality
  • Core: reduced entropy and added order to DeviceDesc, exposed more "tiers" (if it's better than a set of individual features)
  • Core: reduced entropy around programmable sample positions (PSL) names
  • Core: added shaderModel to DeviceDesc (best guess for VK, but still useful)
  • MeshShader: added support for optional countBuffer in CmdDrawMeshTasksIndirect
  • improved docs

BREAKING CHANGES (simple and straightforward):

  • PSL: all names are based on "locations" without "programmable"
  • DescriptorRangeDesc::isDescriptorNumVariable (and VARIABLE_DESCRIPTOR_NUM) => DescriptorRangeBits::VARIABLE_SIZED_ARRAY
  • DescriptorRangeDesc::isArray (and DESCRIPTOR_ARRAY) => DescriptorRangeBits::ARRAY
  • DescriptorSetDesc::partiallyBound (and PARTIALLY_BOUND) => DescriptorRangeBits::PARTIALLY_BOUND (moved to descriptor range)
  • DeviceDesc tweaks

DETAILS:

  • Core: added rayTracingTier to DeviceDesc
  • Core: added isAdditionalShadingRatesSupported to DeviceDesc to highlight 2x4, 4x2 and 4x4 rates support
  • Core: shading rate features replaced with shadingRateTier in DeviceDesc
  • Core: explained all old and new "tiers" in DeviceDesc
  • Core: removed isDrawMeshTasksIndirectSupported from DeviceDesc (always supported if mesh shaders are supported)
  • Core: removed isDispatchRaysIndirectSupported from DeviceDesc (use rayTracingTier)
  • Core: added DescriptorRangeBits expanding and simplifying functionality around previously used partiallyBound, isArray and isDescriptorNumVariable
  • MeshShader: added support for optional countBuffer in CmdDrawMeshTasksIndirect
  • improved comments in the main headers

v1.147

02 Sep 13:55
Compare
Choose a tag to compare

HIGHLIGHTS:

  • interface polishing

DETAILS:

  • Core: removed misleading drawIndexedIndex16ValueMax and drawIndexedIndex32ValueMax from DeviceDesc
  • Core: smoothLines renamed to lineSmoothing to match isLineSmoothingSupported
  • Core: conservativeRasterization renamed to conservativeRaster to match conservativeRasterTier

v1.146

02 Sep 13:19
Compare
Choose a tag to compare

HIGHLIGHTS:

  • improved depth bias

DETAILS:

  • Core: added CmdSetDepthBias, which can be used to override depth bias in pipeline (if enabled)
  • Core: depth bias values grouped into DepthBiasDesc for comfortable usage
  • Core: exposed DeviceDesc::isDynamicDepthBiasSupported
  • Core: antialiasedLines renamed to smoothLines to match isLineSmoothingSupported
  • VK: VK_EXT_line_rasterization replaced with the KHR version
  • improved docs

v1.145

02 Sep 07:19
Compare
Choose a tag to compare

HIGHLIGHTS:

  • added beauty to the interface (no interface changes, except a few name changes)
  • improvements and bug fixes

BREAKING CHANGES:

  • ShadingRate values got FRAGMENT_SIZE prefix (x in the middle was capitalized)
  • massaged ClearDesc because of introduced Color union (color32f => color.f)
  • removed TYPE_ prefix from Message (clarified interaction with wingdi.h)
  • removed BorderColor, added flexible SamplerDesc::borderColor and SamplerDesc::isInteger

DETAILS:

  • NRI: massaged NRIMacro.h
  • NRI: added a few missing const
  • NRI: GetSupportedDepthFormat moved to NRI.h due to dependency on CoreInterface
  • NRI: all headers of extensions made self-contained (depend only on NRIDescs.h)
  • NRI: MAX_NUM got hidden in depths of NRIMacro.h
  • NRI: fixed wrong forward declaration of D3D related types in C ^_^
  • NRI: useless __fastcal replaced with __stdcall
  • NRI: archaic predefined border color values replaced with custom colors
  • NRI: added forgotten MIRROR_CLAMP_TO_EDGE address mode
  • D3D12: added proper custom border color support
  • D3D11/D3D12: fixed some NVAPI calls and shading rate usage if unsupported
  • VK: added proper custom border color support
  • Validation: improved validation for SamplerDesc

v1.144

30 Aug 03:18
Compare
Choose a tag to compare

HIGHLIGHTS:

  • resolved inability to use read-only depth or stencil when the other subresource is writable
  • added ability to separate depth and stencil in a barrier
  • introduced PlaneBits concept, which is also needed for video

BREAKING CHANGES:

  • attachmentContentType renamed to planes
  • ClearDesc::planes must be set to PlaneBits::COLOR explicitly for color only clears
  • no changes in barriers unless depth and stencil separation needed
  • removed ResourceViewBits, use extended Texture1DViewType and Texture2DViewType instead
  • no more API changes planned \O/

DETAILS:

  • NRI: introduced PlaneBits
  • NRI: extended Texture1DViewType and Texture2DViewType to include read-only depth and/or stencil
  • NRI: removed ResourceViewBits (there was not a "resource" concept), replaced with extended view types
  • NRI: AttachmentContentType replaced with PlaneBits
  • NRI: added PlaneBits to TextureBarrierDesc
  • D3D11/D3D12/VK: improvements around ClearAttachments
  • VK: ClearAttachments behavior matched D3D
  • Helper: added planes to TextureUploadDesc
  • Validation: improved ClearAttachments validation
  • Validation: added detection of a mismatched D3D/VK behavior related to read-only depth-stencil usage

v1.143

29 Aug 06:14
5562b41
Compare
Choose a tag to compare

HIGHLIGHTS:

  • NRI: added shading rate support (aka VRS) for all GAPIs, including D3D11
  • bug fixes and improvements

BREAKING_CHANGES:

  • DEPTH_STENCIL in Layout and Access renamed to DEPTH_STENCIL_ATTACHMENT to emphasize the stage

DETAILS:

  • D3D11/D3D12/VK/Validation: added shading rate support
  • D3D11: fixed 0 values potentially sneaking into internally used m_SubresourceInfo
  • D3D11: fixed ForcedSampleCount usage
  • D3D11/D3D12: improved NVAPI usage and fixed some bugs
  • VK: hooked up VK_EXT_image_sliced_view_of_3d
  • VK: implemented read-only depth-stencil
  • VK: 3D textures get created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT flag for flexibility and compatibility
  • Validation: reduced code entropy
  • added .clang-format-ignore
  • updated docs

v1.142

26 Aug 08:47
Compare
Choose a tag to compare

HIGHLIGHTS:

  • interface polishing (sorry for the breaking changes)
  • bug fixes and improvements

BREAKING CHANGES:

  • REMAINING_ARRAY_LAYERS renamed to REMAINING_LAYERS
  • REMAINING_MIP_LEVELS renamed to REMAINING_MIPS
  • arraySize renamed to layerNum
  • arrayOffset renamed to layerOffset
  • textureArrayMaxDim renamed to textureArrayMaxLayerNum
  • GeometryObject::triangles replaced with GeometryObject::geometry.triangles
  • GeometryObject::boxes replaced with GeometryObject::geometry.aabbs

DETAILS:

  • NRI: emphasize that a texture array consists of layers
  • NRI: avoid using size for something other than size in bytes
  • Raytracing: better resolved warning C4201 in the header
  • VK: fixed VkRayTracingShaderGroupCreateInfoKHR::type selection
  • WrapperD3D12: fixed validation
  • improved comments in the main headers
  • updated .clang-format

v1.141

23 Aug 06:47
Compare
Choose a tag to compare

HIGHLIGHTS:

  • added a new extension NRIResourceAllocator, which adds a simple way to create resources already bound to memory. Moreover, this extension uses AMD Vulkan/D3D12 MemoryAllocator under the hood, allowing to not only efficiently bind resources to memory chunks, but also track free memory segments, reusing them for subsequent allocations. Most likely, in the future this extension will get more MA functionality (statistics at least)

BREAKING CHANGES:

  • Core: MemoryAllocatorInterface renamed to AllocationCallbacks (similarly for memoryAllocatorInterface)
  • Core: DeviceDesc::memoryTier replaced with DeviceDesc::isMemoryTier2Supported
  • Raytracing: GetAccelerationStructureMemoryDesc made AccelerationStructure object independent
  • WrapperVK: GetVk* replaced with Get*VK to match the style

DETAILS:

  • NRI: added new extension NRIResourceAllocator, which allows to create bound-to-memory resources
  • NRI: alignment info grouped in one place in DeviceDesc
  • NRI: fixed NRI_STATIC_LIBRARY
  • Creation: exposed DeviceCreationDesc::disable3rdPartyAllocationCallbacks to use allocationCallbacks only for NRI needs
  • WrapperD3D12: removed unnecessary arguments
  • WrapperVK: removed unnecessary arguments
  • WrapperVK: minimized number of "mimic" types
  • Validation: tweaks and adjustments
  • introduced NRI_OPTIONAL to improve readability of main headers
  • bug fixes and improvements
  • improved comments in main headers
  • massive refactoring and code cleanup