Releases: NVIDIA-RTX/NRI
Releases · NVIDIA-RTX/NRI
v179
(updated 2026.04.20)
HIGHLIGHTS:
- Core: added
ETC2andASTCtexture formats (for mobile devices) - Core: improved
DeviceDesc - Helper: added optional
residencyPriorityfor all allocations created by a single call ofAllocateAndBindMemory - improvements and bug fixes
BREAKING CHANGES:
ENABLE_D3D12_DRAW_PARAMETERS_EMULATIONrenamed toENABLE_DRAW_PARAMETERS_EMULATION(no changes in meaning and usage)DeviceDesc:meshControlrenamed totask(leftover)DeviceDesc:meshEvaluationrenamed tomesh(leftover)DeviceDesc:workGroupMaxNumrenamed todispatchMaxDimDeviceDesc:other.micromapSubdivisionMaxLevel" moved intoaccelerationStructure` limits
DETAILS:
- Core:
DeviceDescimprovements:- added missing limits for
taskandmeshshader stages - added
accelerationStructurelimits - added
drawParametersanddrawParametersEmulationtoshaderFeatures - added all-or-nothing
features.textureCompression[BC/ETC2/ASTC](this is optional,GetFormatSupportcan be used as usual to check support for a specific format) - added
shaderBytecode[DXBC/DXIL/SPIRV]tofeaturessince 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...)
- added missing limits for
- Core: fixed
FormatPropsforR32formats - Helper: added optional
residencyPriorityfor all allocations created by a single call ofAllocateAndBindMemory - D3D12: hooked up
TryCreateAPI from latest Agility SDK - D3D12: fixed illegal
SetResidencyPriorityusage on placed resources - merged #217
- fixed #218
- fixed #219
- updated deps (Agility SDK, Vulkan Headers, VMA, D3D12MA and other)
- updated docs
v178
HIGHLIGHTS:
- Core: improved buffer and texture view creation (continuation of work started in
v177)BufferViewTypereworked intoBufferViewwith the fields matching HLSL shader resource types (with the exceptionRW => STORAGE, since "storage" is an important idiom in NRI). As a bonus, new field names match compatibleDescriptorTypenames (see inlined comments for some exceptions). Exposed explicit view types forstructuredandbyte addressviewsTexture[1D/2D/3D]ViewTypereworked into a singleTextureViewwith the fields matching HLSL shader resource types (RW => STORAGE). As a bonus, new field names match compatibleDescriptorTypenames (see inlined comments for some exceptions)CreateTexture[1D/2D/3D]Viewreplaced with a singleCreateTextureView. It eliminates mental gymnastics and the need to choose a 1D/2D/3D-view based onTextureTypeof the parent texture. The validation checks for unsupported cases
- Core: improved support for
typed,structuredandbyte addressbuffer views - Core: added
GetBufferDeviceAddressfunction - Core: added component mapping support (see
TextureViewDesc) and exposedfeatures.componentSwizzle(not supported only in D3D11) - improvements and bug fixes
- updated docs
DETAILS:
- D3D12: fixed
small resourcealignment usage (a critical bug fix) - D3D12: fixed/improved
REMAININGhandling 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, orBufferView::STRUCTURED_BUFFER, orBufferView::BYTE_ADDRESS_BUFFERdepending on the usageBufferViewType::SHADER_RESOURCE_STORAGE=>BufferView::STORAGE_BUFFER, orBufferView::STORAGE_STRUCTURED_BUFFER, orBufferView::STORAGE_BYTE_ADDRESS_BUFFERdepending on the usage- also do all steps below
From versions after:
.viewType=>.type(fix backVkImageViewCreateInfo::viewTypein native VK code, if any)CreateTexture1DView=>CreateTextureViewCreateTexture2DView=>CreateTextureViewCreateTexture3DView=>CreateTextureViewTexture1DViewDesc=>TextureViewDescTexture2DViewDesc=>TextureViewDescTexture3DViewDesc=>TextureViewDescTexture1DViewType::SHADER_RESOURCE=>TextureView::TEXTURETexture2DViewType::SHADER_RESOURCE=>TextureView::TEXTURETexture3DViewType::SHADER_RESOURCE=>TextureView::TEXTURETexture1DViewType::SHADER_RESOURCE_ARRAY=>TextureView::TEXTURE_ARRAYTexture2DViewType::SHADER_RESOURCE_ARRAY=>TextureView::TEXTURE_ARRAYTexture2DViewType::SHADER_RESOURCE_CUBE=>TextureView::TEXTURE_CUBETexture2DViewType::SHADER_RESOURCE_CUBE_ARRAY=>TextureView::TEXTURE_CUBE_ARRAYTexture1DViewType::SHADER_RESOURCE_STORAGE=>TextureView::STORAGE_TEXTURETexture2DViewType::SHADER_RESOURCE_STORAGE=>TextureView::STORAGE_TEXTURETexture3DViewType::SHADER_RESOURCE_STORAGE=>TextureView::STORAGE_TEXTURETexture1DViewType::SHADER_RESOURCE_STORAGE_ARRAY=>TextureView::STORAGE_TEXTURE_ARRAYTexture2DViewType::SHADER_RESOURCE_STORAGE_ARRAY=>TextureView::STORAGE_TEXTURE_ARRAYTexture1DViewType::COLOR_ATTACHMENT=>TextureView::COLOR_ATTACHMENTTexture2DViewType::COLOR_ATTACHMENT=>TextureView::COLOR_ATTACHMENTTexture3DViewType::COLOR_ATTACHMENT=>TextureView::COLOR_ATTACHMENTTexture1DViewType::DEPTH_STENCIL_ATTACHMENT=>TextureView::DEPTH_STENCIL_ATTACHMENTTexture2DViewType::DEPTH_STENCIL_ATTACHMENT=>TextureView::DEPTH_STENCIL_ATTACHMENTTexture2DViewType::INPUT_ATTACHMENT=>TextureView::SUBPASS_INPUTTexture2DViewType::SHADING_RATE_ATTACHMENT=>TextureView::SHADING_RATE_ATTACHMENTBufferViewType::SHADER_RESOURCE=>BufferView::BUFFERBufferViewType::SHADER_RESOURCE_STRUCTURED=>BufferView::STRUCTURED_BUFFERBufferViewType::SHADER_RESOURCE_BYTE_ADDRESS=>BufferView::BYTE_ADDRESS_BUFFERBufferViewType::SHADER_RESOURCE_STORAGE=>BufferView::STORAGE_BUFFERBufferViewType::SHADER_RESOURCE_STORAGE_STRUCTURED=>BufferView::STORAGE_STRUCTURED_BUFFERBufferViewType::SHADER_RESOURCE_STORAGE_BYTE_ADDRESS=>BufferView::STORAGE_BYTE_ADDRESS_BUFFERBufferViewType::CONSTANT=>BufferView::CONSTANT_BUFFER
Updated to include a fix for regression introduced by one of PRs.
v177
HIGHLIGHTS:
- Core: improved
AllocateMemoryDescand 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
nativeI8andintegerDotProductinDeviceDesc::shaderFeatures(implemented #201) - CMake: improved robustness of dependencies
- greatly improved inlined documentation about descriptors in general and connections between
DescriptorType,ViewTypeand "HLSL type" - various fixes and improvements
BREAKING CHANGES:
- API issue: removed duplicate
features.rayTracingandfeatures.micromapsince they can be derived fromtiers.rayTracing - API issue: added
readonlyPlanesto1Dand2Dtexture views and removedX_READONLY_Y_ATTACHMENTview types, they are added toLayoutinstead - API issue: renamed misleading offsets in
VKBindingOffsetstos/t/b/u HLSL registernames to be in-line with DXC options (clarified expected usage for eachDescriptorType) - Extended usage:
useVMAreplaced withvma.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
1Dfrom allTexture1DViewTypefields - Style: removed
2Dfrom allTexture2DViewTypefields - Style: removed
3Dfrom allTexture3DViewTypefields
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
CmdBeginRenderingarguments intoRenderingDesc, supporting: load/store ops, MSAA resolve - Core: polished
CmdClearX - Core:
AccessBits::COLOR_ATTACHMENTsplit into_READand_WRITEparts to unlock some potential optimizations in Vulkan ("read" access is often not needed, so no need to load anything from memory). Provided "umbrella" bits forCOLOR_ATTACHMENT,DEPTH_STENCIL_ATTACHMENT,ACCELERATION_STRUCTUREandMICROMAP(no breaking changes) - Core: added missing
FormatSupportBits::MULTISAMPLE_RESOLVE - Core: implemented #200 (single threaded
NRIStreamer) - Core: partially implemented #166 (
GENERALas the only layout, but D3D12 lags behind...) - Core: added
vma.alignmentto explicitly control the sub-allocation alignment (if 0, the worst-case alignment is applied) - Core: explicitly added
AllocateMemoryDesc::allowMultisampleTexturesto avoid using a separateMemoryTypefor MSAA textures and implicitly allow all variants of aliasing of the underlying memory - Core: added
memory.allocationMaxSizetoDeviceDesc - Core: added informative
memory.alignmentDefaultandmemory.alignmentMultisampletoDeviceDesc, which are used internally - Core: added missing "ResolveOp" (avg, min, max)
- Core: merged PR #202 (wrong links in docs)
- Core: added
GetDescriptorSetOffsetsto query descriptor set offsets in the pool (rarely needed, added for completeness) - Helper: updated
AllocateAndBindMemoryimplementation - Helper: removed useless and already deprecated inline functions
- WrapperVK: added missing
vkImageUsageFlagstoTextureVKDesc - VK/D3D12/D3D11: respected
REMAININGfor 3D slices - VK/D3D12/D3D11: unified architecture of
Descriptorimplementation 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
DescriptorTypeVKenum withDescriptorType, this change allowed to removeUpdateDescriptorRangeDesc::descriptorType, added a few commits ago for "MUTABLE" descriptor type specialization (final improvement for #199) - VK: hooked up
VkPhysicalDevicePipelineRobustnessPropertiesfor 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
bufferImageGranularityis not an alignment. So, "NextPow2" is applied to it due to one vendor returning "9990" - D3D12: MSAA textures do not go into a separate
MemoryTypehonoring better memory aliasing - D3D12: clarified that
Layout::PRESENTmust be used withafter.stages = StageBits::NONE. Removed internal hack implicitly convertingLayout::PRESENTintoD3D12_BARRIER_ACCESS_COMMON, which was required in older Agility SDK versions. Now expected usage matched best practices - D3D12: enabled "proper" code in
MemoryD3D12::Createsince D3D12MA got fixedValidateAllocateMemoryParameters(relaxed requirements for suballocated memory) - D3D12: respected
WHOLE_SIZEinReadbackTextureToBuffer(fixed #198) - D3D11: reduced
sizeof(DescriptorD3D11)from 56 to 48 bytes - Shared: improved internal
AllocateScratchmacro 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
structureStrideusage - Docs: clarified compatible
DescriptorTypeforViewTypes - Docs: regrouped
DescriptorTypefields 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
HIGHLIGHTS:
- Core: improved AMD Virtual Memory Allocator (VulkanMA and D3D12MA) integration.
AllocateMemorycan use VMA under the hood (seeAllocateMemoryDesc).Memorypassed toBindXMemoryandCreatePlacedXcan 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
Corein a better form (AllocateX=>CreateCommittedXorCreatePlacedX), offering 2 ways of memory allocation and binding:- VK style (no changes):
CreateX=>GetXMemoryDesc(doesn't requireVK_KHR_maintenance4) =>AllocateMemory+BindXMemory - D3D12 style (new):
GetXMemoryDesc2(requiresVK_KHR_maintenance4support) =>CreateCommittedXorAllocateMemory+CreatePlacedX(supports implicit heaps managed by VMA)
- VK style (no changes):
- Streamer:
StreamerDesc::dynamicBufferUsageBitsreplaced withdynamicBufferDescto allow explicitstructureStridespecification, i.e. typed or structured (#196)
DETAILS:
- Core: added
SAMPLER_HEAP_DIRECTLY_INDEXEDandRESOURCE_HEAP_DIRECTLY_INDEXEDtoPipelineLayoutBits - Core: added
MUTABLEtoDescriptorRangeBits, indicating that this range may have any non-sampler descriptor types (aka resource heap), currently it's impossible to know an offset inDescriptorPoolpointing to this range (WIP) - Core:
mutableMaxNumadded toDescriptorPoolDesc - Core:
mutableDescriptorTypeadded to device features - Core: added Slang support to
NRI.hlsl(#189) - Core: added missing
stddef.htoNRI.hneeded forsize_t(#194) - Upscaler: fixed NIS behavior on edges if resolution scaling is active (NIS bug)
- Helper:
nriConvertDXGIFormatToNRIreturns 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)withpthread_threadid_np - fixed missing calling conventions and improved related code (#193, #195)
- refactoring and code cleanup
v175
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:
CopyDescriptorSetreworked toCopyDescriptorSets - Core: reorganized
UpdateDescriptorRangesto accept an array ofUpdateDescriptorRangeDescstructs, allowing per-range specification of destination{descriptorSet, rangeIndex, baseDescriptor}and source{descriptors, num} - Core: renamed and reorganized
CopyDescriptorSetstoCopyDescriptorRanges. This function now accepts an array ofCopyDescriptorRangeDescstructs, each of which can specify the destination and source using{descriptorSet, rangeIndex, baseDescriptor} - Core: removed "device" first argument from all
BindXxxMemoryfunctions, because the device can be deduced from the input entities - Core: renamed
ALL_SAMPLEStoALL, which can now be used forCopyDescriptorRangeDesc::descriptorNum
DETAILS:
- Core: added
features.resizableSwapChaintoDeviceDescindicating that a swap chain can be resized without getting the "OUT_OF_DATE" error - Core: added
unnormalizedCoordinatestoSamplerDescandshaderFeaturesofDeviceDesc - Core: added
features.rootConstantsOffsetandfeatures.nonConstantBufferRootDescriptorOffsetwhich are not supported only by D3D11 - VK: improved handling of sampler border color
- VK:
UpdateDescriptorRangesandCopyDescriptorSetsmapped to a singlevkUpdateDescriptorSetscall - VK: fixed potential wrong handling of
StageBits::NONEinGetShaderStageFlags - 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
RSSetStateifNRI_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
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
v173
HIGHLIGHTS:
- Core: added wave intrinsics related information to
DeviceDesc - Core: added optional and narrow
CLEAR_STORAGEaccess - improved documentation
- bug fixes and improvements
BREAKING CHANGES:
- renamed
MESH_CONTROL_SHADERtoTASK_SHADER - renamed
MESH_EVALUATION_SHADERtoMESH_SHADER - renamed
INVALID_AGILITY_SDKtoINVALID_SDKand added availability checks for required interfaces during device creation - replaced
NriRefwithNriPtrfor theDestroy/Free,GetNativeObject, andWaitIdlefunctions. This change emphasizes that aNULLpointer is allowed and helps prevent segmentation faults with certain compilers
DETAILS:
- Core: added optional
enableMemoryZeroInitializationto device descs, it invokes fast page-clears for all memory allocations when enabled and supported - Core: added "wave" section to
DeviceDescdescribing wave properties and intrinsics availability - Core: added "wave" section to
ShaderFeaturesdescribing wave intrinsics support - Core: added optional and narrow
CLEAR_STORAGEaccess, clarified usage - Core: clarified
ClearStorageDescusage - 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_CUBEto internalGetImageViewTypeand improved readability of this function - Imgui: removed ShaderMake dependency (embedded shaders)
- Imgui: fixed texture management in case of multiple devices drawing the same
nri::Imguiinstance - 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_EXTENSIONSis disabled - fixed invalid type reference in ".natvis"
- fixed compilation with some disabled backends
- reduced code entropy around
NRIAgilitySDK.h - updated dependencies
- improved documentation
v172
HIGHLIGHTS:
- Core: added convenient
DeviceWaitIdleandQueueWaitIdlefunctions - Core: improved
DEVICE_LOSThandling and reporting (now may be returned byQueueSubmit*,*WaitIdle,AcquireNextTexture,QueuePresent, andWaitForPresentto match VK spec) - Core:
AbortExecutioncallback is no longer called for user-actionable errors:DEVICE_LOST,OUT_OF_DATEandINVALID_AGILITY_SDK(many apps/games can handle these gracefully) - Core: added optional
SharingModefor 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_ttoDim_t(simplification) - Core: renamed
Dim2toDim2_t(to emphasize a basic type) - Core: renamed
Float2toFloat2_t(to emphasize a basic type) - Core: renamed
AccessBits::UNKNOWNtoNONE(to match GAPIs, no change in meaning) - Core: renamed
Layout::UNKNOWNtoUNDEFINED(to match GAPIs, no change in meaning) - Core: renamed
BlendFunc,LogicFunc,CompareFuncandStencilFunctoBlendOp,LogicOp,CompareOpandStencilOprespectively (to match GAPIs, applies to struct fields as well) - Core: renamed
FilterExttoReductionMode(to match GAPIs) - Core: renamed
enchancedBarriertoenhancedBarriers(to match D3D12 and fix a typo) - Core: merged
REMAINING_MIPSandREMAINING_LAYERSintoREMAINING(to reduce syntax sugar) - Core: moved
GetSupportedDepthFormatto Helper - Helper: removed
WaitForIdle(useDeviceWaitIdleorQueueWaitIdlefrom Core instead) - Streamer: renamed
dstBufferOffsettodstOffset - Streamer: renamed
dstRegionDesctodstRegion
DETAILS:
- Core: added optional
SharingModetoTextureDesc, 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
DeviceWaitIdleandQueueWaitIdlefunctions - 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.AbortExecutionfor user-actionable errors - DeviceCreation: added
disableD3D12EnhancedBarrierstoggle - 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_STRUCTUREis supported) - CMake: fixed compilation with disabled Agility SDK
- CMake: updated dependencies
- improved error reporting
- improved documentation
v171
v171:
HIGHLIGHTS:
- improvements (no bug fixes)
- SwapChain: added explicit
SwapChainBits::ALLOW_TEARINGflag
BREAKING CHANGE:
- SwapChain:
verticalSyncInterval,waitableandallowLowLatencyorganized intoflags
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