Skip to content

Releases: NVIDIAGameWorks/NRI

v1.154

05 Nov 02:03
Compare
Choose a tag to compare

HIGHLIGHTS:

  • Core: added "resolve" functionality
  • improvements and bug fixes

DETAILS:

  • Core: added CmdResolveTexture (for MSAA resolve at least)
  • Core: extended StageBits, AccessBits and Layout
  • Core: relaxed valid usage of srcRegionDesc and dstRegionDesc, which can be 0/non-0 independently
  • Core: clarified usage in the main headers
  • VK: added logic to choose the format based on best match, not exact comparison (PR #103)
  • D3D11: removed state caching for SetVertexBuffers (was partially implemented, now matches D3D12 behavior)
  • D3D12: emphasized the fact that SetPipelineLayout is optional for Draw*
  • Validation: added missing dependency checks for some functions
  • updated NVAPI
  • minor bug fixes here and there
  • refactoring

v1.153

21 Oct 03:50
Compare
Choose a tag to compare

HIGHLIGHTS:

  • Previously NRI assumed only top-left (D3D style) viewport origin. Now this behavior has been extended to support bottom-left origin too (top-left is still the default). For this purpose DeviceDesc::isViewportOriginBottomLeftSupported has been introduced and added Viewport::originBottomLeft as the last field in the struct, unlocking maximum flexibility.

BREAKING CHANGES:

  • depthRangeMin and depthRangeMax renamed to depthMin and depthMax to look closer to the D3D/VK names

DETAILS:

  • NRI: added viewport origin bottom-left support (unsupported by D3D11)
  • WrapperVK: added ability to enable NRI validation
  • VK: fixed viewport Y flipping code
  • VK: updated headers to v1.3.296
  • polishing
  • updated docs

v1.152

07 Oct 03:44
Compare
Choose a tag to compare

HIGHLIGHTS:

  • improvements and bug fixes

BREAKING CHANGES:

  • Core: changed BarrierGroupDesc layout to {data, num, data, num, data, num} (to match overall style)
  • Core: usageMask renamed to usage
  • Core: typedBufferOffsetAlignment and storageBufferOffsetAlignment merged into a single bufferShaderResourceOffsetAlignment in DeviceDesc (in any case they should match)
  • RayTracing: RAY_TRACING_BUFFER decoupled into SCRATCH_BUFFER and SHADER_BINDING_TABLE (was an umbrella, hiding potential inefficiencies)
  • RayTracing: ACCELERATION_STRUCTURE_BUILD_READ renamed to ACCELERATION_STRUCTURE_BUILD_INPUT
  • RayTracing: rayTracingShaderTableAlignment renamed to shaderBindingTableAlignment (to match overall style)
  • RayTracing: rayTracingScratchAlignment renamed to scratchBufferOffsetAlignment (to match overall style)

DETAILS:

  • Core: Added missing NONE to nriGetGraphicsAPIString
  • Core: ReportMessage improvement - messageType, file and line are not applied to a message text, they can be used for formatting inside a user provided message callback
  • Core: ReportMessage improvement - the default message callback is modified to reflect the formatting changes
  • Core: allow more 0 in TextureDesc (will be silently promoted to 1)
  • Core: removed ~useless fragmentShaderCombinedOutputResourceMaxNum from DeviceDesc
  • Core: added comments, clarifying compatible AccessBits expected by Layout
  • VK: add missing VK location for input attributes
  • ResourceAllocator: auto respected buffer placement alignment VK requirements according to the provided buffer usage
  • D3D12: properly (?) used PlaneSlice
  • None: properly initialized DeviceDesc
  • Helper: improved FitPipelineLayoutSettingsIntoDeviceLimits
  • RayTracing: increased robustness
  • Validation: improved validation of CreatePipelineLayout by utilizing FitPipelineLayoutSettingsIntoDeviceLimits helper
  • Validation: fixed and improved incomplete validation for AllocateDescriptorSets
  • code polishing

v1.151

20 Sep 08:14
Compare
Choose a tag to compare

HIGHLIGHTS:

  • bug fixes and improvements

BREAKING CHANGE:

  • PipelineLayoutDesc::rootRegisterSpace affects root constants in shaders
  • added pipelineLayout prefix to root limits in DeviceDesc to emphasize the meaning

DETAILS:

  • Helper: added optional helper FitPipelineLayoutSettingsIntoDeviceLimits for nerds
  • Helper: removed useless "constructors" (use designated initializers)
  • Core: allow "0" for depth, layerNum and sampleNum in TextureDesc
  • Core: added rootRegisterSpace to PipelineLayoutDesc, which is used for root constants and descriptors
  • bug fixes and improvements

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