Skip to content

Releases: NVIDIA-RTX/NRI

v179

20 Apr 05:47

Choose a tag to compare

(updated 2026.04.20)

HIGHLIGHTS:

  • Core: added ETC2 and ASTC texture formats (for mobile devices)
  • Core: improved DeviceDesc
  • Helper: added optional residencyPriority for all allocations created by a single call of AllocateAndBindMemory
  • improvements and bug fixes

BREAKING CHANGES:

  • ENABLE_D3D12_DRAW_PARAMETERS_EMULATION renamed to ENABLE_DRAW_PARAMETERS_EMULATION (no changes in meaning and usage)
  • DeviceDesc: meshControl renamed to task (leftover)
  • DeviceDesc: meshEvaluation renamed to mesh (leftover)
  • DeviceDesc: workGroupMaxNum renamed to dispatchMaxDim
  • DeviceDesc: other.micromapSubdivisionMaxLevel" moved into accelerationStructure` limits

DETAILS:

  • Core: DeviceDesc improvements:
    • added missing limits for task and mesh shader stages
    • added accelerationStructure limits
    • added drawParameters and drawParametersEmulation to shaderFeatures
    • added all-or-nothing features.textureCompression[BC/ETC2/ASTC] (this is optional, GetFormatSupport can be used as usual to check support for a specific format)
    • added shaderBytecode[DXBC/DXIL/SPIRV] to features since D3D12 supports both DXIL and DXBC (and MS says that SPIRV is coming), also WebGPU supports both SPIRV and WGSL (it looks like there WebGPU back end in the works...)
  • Core: fixed FormatProps for R32 formats
  • Helper: added optional residencyPriority for all allocations created by a single call of AllocateAndBindMemory
  • D3D12: hooked up TryCreate API from latest Agility SDK
  • D3D12: fixed illegal SetResidencyPriority usage on placed resources
  • merged #217
  • fixed #218
  • fixed #219
  • updated deps (Agility SDK, Vulkan Headers, VMA, D3D12MA and other)
  • updated docs

v178

27 Feb 02:53

Choose a tag to compare

HIGHLIGHTS:

  • Core: improved buffer and texture view creation (continuation of work started in v177)
    • BufferViewType reworked into BufferView with the fields matching HLSL shader resource types (with the exception RW => STORAGE, since "storage" is an important idiom in NRI). As a bonus, new field names match compatible DescriptorType names (see inlined comments for some exceptions). Exposed explicit view types for structured and byte address views
    • Texture[1D/2D/3D]ViewType reworked into a single TextureView with the fields matching HLSL shader resource types (RW => STORAGE). As a bonus, new field names match compatible DescriptorType names (see inlined comments for some exceptions)
    • CreateTexture[1D/2D/3D]View replaced with a single CreateTextureView. It eliminates mental gymnastics and the need to choose a 1D/2D/3D-view based on TextureType of the parent texture. The validation checks for unsupported cases
  • Core: improved support for typed, structured and byte address buffer views
  • Core: added GetBufferDeviceAddress function
  • Core: added component mapping support (see TextureViewDesc) and exposed features.componentSwizzle (not supported only in D3D11)
  • improvements and bug fixes
  • updated docs

DETAILS:

  • D3D12: fixed small resource alignment usage (a critical bug fix)
  • D3D12: fixed/improved REMAINING handling in enhanced and legacy barriers
  • Upscaler: adjusted DRS support capabilities due to changes in DLSS
  • Actions/Linux: fixed compilation
  • fixed #203
  • fixed #212
  • implemented #204
  • implemented #209
  • implemented #214
  • merged #207
  • merged #208
  • merged #211
  • merged #215
  • updated deps & docs

BREAKING CHANGES:

From versions before 9d94df3:

  • BufferViewType::SHADER_RESOURCE => BufferView::BUFFER, or BufferView::STRUCTURED_BUFFER, or BufferView::BYTE_ADDRESS_BUFFER depending on the usage
  • BufferViewType::SHADER_RESOURCE_STORAGE => BufferView::STORAGE_BUFFER, or BufferView::STORAGE_STRUCTURED_BUFFER, or BufferView::STORAGE_BYTE_ADDRESS_BUFFER depending on the usage
  • also do all steps below

From versions after:

  • .viewType => .type (fix back VkImageViewCreateInfo::viewType in native VK code, if any)
  • CreateTexture1DView => CreateTextureView
  • CreateTexture2DView => CreateTextureView
  • CreateTexture3DView => CreateTextureView
  • Texture1DViewDesc => TextureViewDesc
  • Texture2DViewDesc => TextureViewDesc
  • Texture3DViewDesc => TextureViewDesc
  • Texture1DViewType::SHADER_RESOURCE => TextureView::TEXTURE
  • Texture2DViewType::SHADER_RESOURCE => TextureView::TEXTURE
  • Texture3DViewType::SHADER_RESOURCE => TextureView::TEXTURE
  • Texture1DViewType::SHADER_RESOURCE_ARRAY => TextureView::TEXTURE_ARRAY
  • Texture2DViewType::SHADER_RESOURCE_ARRAY => TextureView::TEXTURE_ARRAY
  • Texture2DViewType::SHADER_RESOURCE_CUBE => TextureView::TEXTURE_CUBE
  • Texture2DViewType::SHADER_RESOURCE_CUBE_ARRAY => TextureView::TEXTURE_CUBE_ARRAY
  • Texture1DViewType::SHADER_RESOURCE_STORAGE => TextureView::STORAGE_TEXTURE
  • Texture2DViewType::SHADER_RESOURCE_STORAGE => TextureView::STORAGE_TEXTURE
  • Texture3DViewType::SHADER_RESOURCE_STORAGE => TextureView::STORAGE_TEXTURE
  • Texture1DViewType::SHADER_RESOURCE_STORAGE_ARRAY => TextureView::STORAGE_TEXTURE_ARRAY
  • Texture2DViewType::SHADER_RESOURCE_STORAGE_ARRAY => TextureView::STORAGE_TEXTURE_ARRAY
  • Texture1DViewType::COLOR_ATTACHMENT => TextureView::COLOR_ATTACHMENT
  • Texture2DViewType::COLOR_ATTACHMENT => TextureView::COLOR_ATTACHMENT
  • Texture3DViewType::COLOR_ATTACHMENT => TextureView::COLOR_ATTACHMENT
  • Texture1DViewType::DEPTH_STENCIL_ATTACHMENT => TextureView::DEPTH_STENCIL_ATTACHMENT
  • Texture2DViewType::DEPTH_STENCIL_ATTACHMENT => TextureView::DEPTH_STENCIL_ATTACHMENT
  • Texture2DViewType::INPUT_ATTACHMENT => TextureView::SUBPASS_INPUT
  • Texture2DViewType::SHADING_RATE_ATTACHMENT => TextureView::SHADING_RATE_ATTACHMENT
  • BufferViewType::SHADER_RESOURCE => BufferView::BUFFER
  • BufferViewType::SHADER_RESOURCE_STRUCTURED => BufferView::STRUCTURED_BUFFER
  • BufferViewType::SHADER_RESOURCE_BYTE_ADDRESS => BufferView::BYTE_ADDRESS_BUFFER
  • BufferViewType::SHADER_RESOURCE_STORAGE => BufferView::STORAGE_BUFFER
  • BufferViewType::SHADER_RESOURCE_STORAGE_STRUCTURED => BufferView::STORAGE_STRUCTURED_BUFFER
  • BufferViewType::SHADER_RESOURCE_STORAGE_BYTE_ADDRESS => BufferView::STORAGE_BYTE_ADDRESS_BUFFER
  • BufferViewType::CONSTANT => BufferView::CONSTANT_BUFFER

Updated to include a fix for regression introduced by one of PRs.

v177

29 Dec 11:37

Choose a tag to compare

HIGHLIGHTS:

  • Core: improved AllocateMemoryDesc and updated D3D12MA, making memory allocation via VK/D3D12 MA even more flexible (implemented #197)
  • Core: added HLSL dynamic resources support, aka directly indexed descriptor heaps (implemented #110, see sample)
  • Core: finally reached friendliness with Tile-Based Rendering (TBR/TBDR) architectures via ~full dynamic rendering support (implemented #73), including:
    • load/store ops
    • MSAA resolve
    • input attachments (via "local read", see sample)
  • Core: added nativeI8 and integerDotProduct in DeviceDesc::shaderFeatures (implemented #201)
  • CMake: improved robustness of dependencies
  • greatly improved inlined documentation about descriptors in general and connections between DescriptorType, ViewType and "HLSL type"
  • various fixes and improvements

BREAKING CHANGES:

  • API issue: removed duplicate features.rayTracing and features.micromap since they can be derived from tiers.rayTracing
  • API issue: added readonlyPlanes to 1D and 2D texture views and removed X_READONLY_Y_ATTACHMENT view types, they are added to Layout instead
  • API issue: renamed misleading offsets in VKBindingOffsets to s/t/b/u HLSL register names to be in-line with DXC options (clarified expected usage for each DescriptorType)
  • Extended usage: useVMA replaced with vma.enable + vma.alignment (optional)
  • Style: ReductionMode => FilterOp
  • Style: Filters::ext => op
  • Style: DeviceDesc::textureFilterMinMax => filterOpMinMax
  • Style: CmdClearAttachments: ClearDesc => ClearAttachmentDesc
  • Style: CmdClearStorage: ClearStorageDesc::storage => descriptor
  • Style: removed 1D from all Texture1DViewType fields
  • Style: removed 2D from all Texture2DViewType fields
  • Style: removed 3D from all Texture3DViewType fields

DETAILS:

  • Core: added support for input attachments (new access, new layout, new texture usage bits, new 2D view type, new descriptor type, now barriers can be used inside a render pass). This is gated by shaderFeatures.inputAttachments (D3D12 - always supported via emulation, VK - expects "dynamic rendering local read" support, D3D11 - currently unsupported)
  • Core: reworked CmdBeginRendering arguments into RenderingDesc, supporting: load/store ops, MSAA resolve
  • Core: polished CmdClearX
  • Core: AccessBits::COLOR_ATTACHMENT split into _READ and _WRITE parts to unlock some potential optimizations in Vulkan ("read" access is often not needed, so no need to load anything from memory). Provided "umbrella" bits for COLOR_ATTACHMENT, DEPTH_STENCIL_ATTACHMENT, ACCELERATION_STRUCTURE and MICROMAP (no breaking changes)
  • Core: added missing FormatSupportBits::MULTISAMPLE_RESOLVE
  • Core: implemented #200 (single threaded NRIStreamer)
  • Core: partially implemented #166 (GENERAL as the only layout, but D3D12 lags behind...)
  • Core: added vma.alignment to explicitly control the sub-allocation alignment (if 0, the worst-case alignment is applied)
  • Core: explicitly added AllocateMemoryDesc::allowMultisampleTextures to avoid using a separate MemoryType for MSAA textures and implicitly allow all variants of aliasing of the underlying memory
  • Core: added memory.allocationMaxSize to DeviceDesc
  • Core: added informative memory.alignmentDefault and memory.alignmentMultisample to DeviceDesc, which are used internally
  • Core: added missing "ResolveOp" (avg, min, max)
  • Core: merged PR #202 (wrong links in docs)
  • Core: added GetDescriptorSetOffsets to query descriptor set offsets in the pool (rarely needed, added for completeness)
  • Helper: updated AllocateAndBindMemory implementation
  • Helper: removed useless and already deprecated inline functions
  • WrapperVK: added missing vkImageUsageFlags to TextureVKDesc
  • VK/D3D12/D3D11: respected REMAINING for 3D slices
  • VK/D3D12/D3D11: unified architecture of Descriptor implementation with more props and flexibility
  • VK: properly hooked up maintenance 7, 8, 9, 10
  • VK: reduced sizeof(DescriptorVK) from 72 to 56 bytes
  • VK: replaced internal DescriptorTypeVK enum with DescriptorType, this change allowed to remove UpdateDescriptorRangeDesc::descriptorType, added a few commits ago for "MUTABLE" descriptor type specialization (final improvement for #199)
  • VK: hooked up VkPhysicalDevicePipelineRobustnessProperties for VK v1.4 (unused, but inspectable with a debugger)
  • VK: hooked up VkPhysicalDeviceMaintenance3Properties
  • VK: the VK spec says that all "alignment" values are POT, but bufferImageGranularity is not an alignment. So, "NextPow2" is applied to it due to one vendor returning "9990"
  • D3D12: MSAA textures do not go into a separate MemoryType honoring better memory aliasing
  • D3D12: clarified that Layout::PRESENT must be used with after.stages = StageBits::NONE. Removed internal hack implicitly converting Layout::PRESENT into D3D12_BARRIER_ACCESS_COMMON, which was required in older Agility SDK versions. Now expected usage matched best practices
  • D3D12: enabled "proper" code in MemoryD3D12::Create since D3D12MA got fixed ValidateAllocateMemoryParameters (relaxed requirements for suballocated memory)
  • D3D12: respected WHOLE_SIZE in ReadbackTextureToBuffer (fixed #198)
  • D3D11: reduced sizeof(DescriptorD3D11) from 56 to 48 bytes
  • Shared: improved internal AllocateScratch macro to not call "Allocate" callback with 0 bytes
  • Shared: refactoring to avoid potential naming collisions (compiler and linker) when NRI is used as a static library
  • Validation: various improvements
  • Docs: clarified structureStride usage
  • Docs: clarified compatible DescriptorType for ViewTypes
  • Docs: regrouped DescriptorType fields to highlight texture/buffer, typed/non-typed types
  • Docs: updated and improved
  • CMake: all dependencies are locked to a tag/commit directly downloaded as a ZIP archive
  • CMake: updated dependencies (Agility SDK, Vulkan headers, XeSS, NVAPI)
  • GitHub: added artifacts

v176

22 Oct 09:29

Choose a tag to compare

HIGHLIGHTS:

  • Core: improved AMD Virtual Memory Allocator (VulkanMA and D3D12MA) integration. AllocateMemory can use VMA under the hood (see AllocateMemoryDesc). Memory passed to BindXMemory and CreatePlacedX can 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 Core in a better form (AllocateX => CreateCommittedX or CreatePlacedX), offering 2 ways of memory allocation and binding:
    • VK style (no changes): CreateX => GetXMemoryDesc (doesn't require VK_KHR_maintenance4) => AllocateMemory + BindXMemory
    • D3D12 style (new): GetXMemoryDesc2 (requires VK_KHR_maintenance4 support) => CreateCommittedX or AllocateMemory + CreatePlacedX (supports implicit heaps managed by VMA)
  • Streamer: StreamerDesc::dynamicBufferUsageBits replaced with dynamicBufferDesc to allow explicit structureStride specification, i.e. typed or structured (#196)

DETAILS:

  • Core: added SAMPLER_HEAP_DIRECTLY_INDEXED and RESOURCE_HEAP_DIRECTLY_INDEXED to PipelineLayoutBits
  • Core: added MUTABLE to DescriptorRangeBits, indicating that this range may have any non-sampler descriptor types (aka resource heap), currently it's impossible to know an offset in DescriptorPool pointing to this range (WIP)
  • Core: mutableMaxNum added to DescriptorPoolDesc
  • Core: mutableDescriptorType added to device features
  • Core: added Slang support to NRI.hlsl (#189)
  • Core: added missing stddef.h to NRI.h needed for size_t (#194)
  • Upscaler: fixed NIS behavior on edges if resolution scaling is active (NIS bug)
  • Helper: nriConvertDXGIFormatToNRI returns 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) with pthread_threadid_np
  • fixed missing calling conventions and improved related code (#193, #195)
  • refactoring and code cleanup

v175

08 Sep 06:38

Choose a tag to compare

HIGHLIGHTS:

  • Vulkan 1.4 support (or 1.3 + exts, or 1.2 + more exts). Mandatory (widely supported) extensions: extended dynamic state, dynamic rendering, synchronization2 and push descriptor (maintenance 4, 5 and 6 are optional)
  • added root (static, immutable) sampler support (implemented #171)
  • improved flexibility and performance of descriptor update and copy functions (breaking changes, resolved #182)
  • added support for unnormalized texture coordinates
  • removed dynamic constant buffers to simplify API and implementations. D3D12 mapped dynamic CBs into root descriptors under the hood. VK push descriptor is considered to be a modern and better approach to "bind a buffer with an offset". Same functionality can be achieved in a simpler way by using a RootDescriptor
  • reduced message spam during device creation
  • bug fixes and improvements

BREAKING CHANGES:

  • Core: CopyDescriptorSet reworked to CopyDescriptorSets
  • Core: reorganized UpdateDescriptorRanges to accept an array of UpdateDescriptorRangeDesc structs, allowing per-range specification of destination {descriptorSet, rangeIndex, baseDescriptor} and source {descriptors, num}
  • Core: renamed and reorganized CopyDescriptorSets to CopyDescriptorRanges. This function now accepts an array of CopyDescriptorRangeDesc structs, each of which can specify the destination and source using {descriptorSet, rangeIndex, baseDescriptor}
  • Core: removed "device" first argument from all BindXxxMemory functions, because the device can be deduced from the input entities
  • Core: renamed ALL_SAMPLES to ALL, which can now be used for CopyDescriptorRangeDesc::descriptorNum

DETAILS:

  • Core: added features.resizableSwapChain to DeviceDesc indicating that a swap chain can be resized without getting the "OUT_OF_DATE" error
  • Core: added unnormalizedCoordinates to SamplerDesc and shaderFeatures of DeviceDesc
  • Core: added features.rootConstantsOffset and features.nonConstantBufferRootDescriptorOffset which are not supported only by D3D11
  • VK: improved handling of sampler border color
  • VK: UpdateDescriptorRanges and CopyDescriptorSets mapped to a single vkUpdateDescriptorSets call
  • VK: fixed potential wrong handling of StageBits::NONE in GetShaderStageFlags
  • VK: slightly simplified code since "buffer device address" is mandatory if ray tracing is supported
  • VK: extensions and memory types reporting put under constexpr bool VERBOSE = false (can be useful for debugging)
  • VK: reduced code entropy
  • D3D11: fixed not called RSSetState if NRI_ENABLE_NVAPI = 0
  • D3D11: two info messages merged into one
  • D3D11: deferred contexts emulation warning should not appear if emulation is explicitly requested

v174-plus

20 Aug 03:35

Choose a tag to compare

v174 + script fixes

v174

19 Aug 03:49

Choose a tag to compare

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

v173

29 Jul 05:56

Choose a tag to compare

HIGHLIGHTS:

  • Core: added wave intrinsics related information to DeviceDesc
  • Core: added optional and narrow CLEAR_STORAGE access
  • improved documentation
  • bug fixes and improvements

BREAKING CHANGES:

  • renamed MESH_CONTROL_SHADER to TASK_SHADER
  • renamed MESH_EVALUATION_SHADER to MESH_SHADER
  • renamed INVALID_AGILITY_SDK to INVALID_SDK and added availability checks for required interfaces during device creation
  • replaced NriRef with NriPtr for the Destroy/Free, GetNativeObject, and WaitIdle functions. This change emphasizes that a NULL pointer is allowed and helps prevent segmentation faults with certain compilers

DETAILS:

  • Core: added optional enableMemoryZeroInitialization to device descs, it invokes fast page-clears for all memory allocations when enabled and supported
  • Core: added "wave" section to DeviceDesc describing wave properties and intrinsics availability
  • Core: added "wave" section to ShaderFeatures describing wave intrinsics support
  • Core: added optional and narrow CLEAR_STORAGE access, clarified usage
  • Core: clarified ClearStorageDesc usage
  • D3D11: partial wave intrinsics support detection
  • D3D12: wrapped objects should query for the latest available interface, not the latest known interface
  • VK: fixed wrong and not matching D3D12 behavior layout used in ClearStorage "under the hood"
  • VK: added forgotten VK_IMAGE_VIEW_TYPE_CUBE to internal GetImageViewType and improved readability of this function
  • Imgui: removed ShaderMake dependency (embedded shaders)
  • Imgui: fixed texture management in case of multiple devices drawing the same nri::Imgui instance
  • Imgui: clamp possible negative clip rect origin to 0, since VK doesn't allow negative values for scissor rects
  • CMake: disabled undesired CMake targets to avoid potential conflicts (in addition to PR #158)
  • CMake: implemented best practices
  • Linux: fix for NGX copy
  • fixed always successful GitHub action :]
  • fixed compilation if NRI_ENABLE_D3D_EXTENSIONS is disabled
  • fixed invalid type reference in ".natvis"
  • fixed compilation with some disabled backends
  • reduced code entropy around NRIAgilitySDK.h
  • updated dependencies
  • improved documentation

v172

10 Jul 09:47

Choose a tag to compare

HIGHLIGHTS:

  • Core: added convenient DeviceWaitIdle and QueueWaitIdle functions
  • Core: improved DEVICE_LOST handling and reporting (now may be returned by QueueSubmit*, *WaitIdle, AcquireNextTexture, QueuePresent, and WaitForPresent to match VK spec)
  • Core: AbortExecution callback is no longer called for user-actionable errors: DEVICE_LOST, OUT_OF_DATE and INVALID_AGILITY_SDK (many apps/games can handle these gracefully)
  • Core: added optional SharingMode for textures. This either switches to "exclusive" mode to preserve DCC on some HW in VK or allows "simultaneous" R/W access in D3D12. The default is "concurrent" access to avoid dealing with queue ownership barriers
  • improved documentation
  • general improvements and bug fixes

BREAKING CHANGES (no-brainer):

  • Core: renamed Mip_t to Dim_t (simplification)
  • Core: renamed Dim2 to Dim2_t (to emphasize a basic type)
  • Core: renamed Float2 to Float2_t (to emphasize a basic type)
  • Core: renamed AccessBits::UNKNOWN to NONE (to match GAPIs, no change in meaning)
  • Core: renamed Layout::UNKNOWN to UNDEFINED (to match GAPIs, no change in meaning)
  • Core: renamed BlendFunc, LogicFunc, CompareFunc and StencilFunc to BlendOp, LogicOp, CompareOp and StencilOp respectively (to match GAPIs, applies to struct fields as well)
  • Core: renamed FilterExt to ReductionMode (to match GAPIs)
  • Core: renamed enchancedBarrier to enhancedBarriers (to match D3D12 and fix a typo)
  • Core: merged REMAINING_MIPS and REMAINING_LAYERS into REMAINING (to reduce syntax sugar)
  • Core: moved GetSupportedDepthFormat to Helper
  • Helper: removed WaitForIdle (use DeviceWaitIdle or QueueWaitIdle from Core instead)
  • Streamer: renamed dstBufferOffset to dstOffset
  • Streamer: renamed dstRegionDesc to dstRegion

DETAILS:

  • Core: added optional SharingMode to TextureDesc, bringing DCC support on some HW (which implicitly disables DCC for non-queue-exclusive textures) and enabling simultaneous R/W access
  • Core: improved handling of DEVICE_LOST
  • Core: added DeviceWaitIdle and QueueWaitIdle functions
  • Imgui: allowed rendering the same UI on multiple devices (ImGui naively assumes only one device is associated with a UI instance)
  • Streamer: reduced buffer memory required to encompass the destination texture region
  • DeviceCreation: ignored callbackInterface.AbortExecution for user-actionable errors
  • DeviceCreation: added disableD3D12EnhancedBarriers toggle
  • D3D12: fixed regression in ReadbackTextureToBuffer
  • VK: added missing support for ReductionMode (didn't exist in VK implementation at the moment of writing this piece of code)
  • VK: hooked up maintenance 7, 8, and 9
  • VK: respected D3D12 memory aliasing rules
  • Validation: fixed validation for a root descriptor type (now that ACCELERATION_STRUCTURE is supported)
  • CMake: fixed compilation with disabled Agility SDK
  • CMake: updated dependencies
  • improved error reporting
  • improved documentation

v171

06 Jun 02:52

Choose a tag to compare

v171:

HIGHLIGHTS:

  • improvements (no bug fixes)
  • SwapChain: added explicit SwapChainBits::ALLOW_TEARING flag

BREAKING CHANGE:

  • SwapChain: verticalSyncInterval, waitable and allowLowLatency organized into flags

DETAILS:

  • D3D11/D3D12: explicit SwapChain "allow tearing" control (ignored if not supported)
  • VK: better mapping of SwapChain "flags" to VK presentation modes with soft fallback to the closest supported mode
  • VK: hooked up VK_PRESENT_MODE_FIFO_LATEST_READY_EXT
  • VK: partially hooked up VK_EXT_swapchain_maintenance1
  • polishing