Releases: NVIDIAGameWorks/NRI
Releases · NVIDIAGameWorks/NRI
v1.150
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
inDeviceDesc
- 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 toCmdSetRootConstants
(yes, multiple constants can be organized in a single binding)NRI_PUSH_CONSTANTS
renamed toNRI_ROOT_CONSTANTS
(yes, multiple constants can be organized in a single binding)PushConstantDesc
renamed toRootConstantDesc
(foggy, but not a plural form to allowrootConstants
)PipelineLayoutDesc::pushConstants
renamed torootConstants
color
inOutputMergerDesc
renamed tocolors
(a plural form needed)colorNum
moved right aftercolors
inOutputMergerDesc
to follow "objects first, number of objects next" idiom (like in VK)- swapped order of
streams
andattributeNum
inVertexInputDesc
to follow "objects first, number of objects next" idiom (like in VK) isLogicOpSupported
renamed toisLogicFuncSupported
(sinceLogicFunc
is used)boundDescriptorSetMaxNum
renamed topipelineLayoutDescriptorSetMaxNum
(to emphasize the meaning)pushConstantsMaxSize
renamed torootConstantMaxSize
(again to follow the nomenclature currently in use)
DETAILS (in addition to major changes):
- NRI: added
RootDescriptorSetDesc
used inPipelineLayoutDesc
- 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
HIGHLIGHTS:
- Core: simplified understanding of how to work with descriptor ranges and sets (no functional changes)
- minor improvements
BREAKING CHANGES:
offsetInRange
=>baseDescriptor
(forDescriptorRangeUpdateDesc
)offsetInRange
=>descriptorIndex
(for clear storage descs)setIndexInPipelineLayout
=>setIndex
- rotated
src/dst
andbase
prefixes inDescriptorSetCopyDesc
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
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
toDeviceDesc
(best guess for VK, but still useful) - MeshShader: added support for optional
countBuffer
inCmdDrawMeshTasksIndirect
- improved docs
BREAKING CHANGES (simple and straightforward):
- PSL: all names are based on "locations" without "programmable"
DescriptorRangeDesc::isDescriptorNumVariable
(andVARIABLE_DESCRIPTOR_NUM
) =>DescriptorRangeBits::VARIABLE_SIZED_ARRAY
DescriptorRangeDesc::isArray
(andDESCRIPTOR_ARRAY
) =>DescriptorRangeBits::ARRAY
DescriptorSetDesc::partiallyBound
(andPARTIALLY_BOUND
) =>DescriptorRangeBits::PARTIALLY_BOUND
(moved to descriptor range)DeviceDesc
tweaks
DETAILS:
- Core: added
rayTracingTier
toDeviceDesc
- Core: added
isAdditionalShadingRatesSupported
toDeviceDesc
to highlight 2x4, 4x2 and 4x4 rates support - Core: shading rate features replaced with
shadingRateTier
inDeviceDesc
- Core: explained all old and new "tiers" in
DeviceDesc
- Core: removed
isDrawMeshTasksIndirectSupported
fromDeviceDesc
(always supported if mesh shaders are supported) - Core: removed
isDispatchRaysIndirectSupported
fromDeviceDesc
(userayTracingTier
) - Core: added
DescriptorRangeBits
expanding and simplifying functionality around previously usedpartiallyBound
,isArray
andisDescriptorNumVariable
- MeshShader: added support for optional
countBuffer
inCmdDrawMeshTasksIndirect
- improved comments in the main headers
v1.147
HIGHLIGHTS:
- interface polishing
DETAILS:
- Core: removed misleading
drawIndexedIndex16ValueMax
anddrawIndexedIndex32ValueMax
fromDeviceDesc
- Core:
smoothLines
renamed tolineSmoothing
to matchisLineSmoothingSupported
- Core:
conservativeRasterization
renamed toconservativeRaster
to matchconservativeRasterTier
v1.146
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 tosmoothLines
to matchisLineSmoothingSupported
- VK:
VK_EXT_line_rasterization
replaced with theKHR
version - improved docs
v1.145
HIGHLIGHTS:
- added beauty to the interface (no interface changes, except a few name changes)
- improvements and bug fixes
BREAKING CHANGES:
ShadingRate
values gotFRAGMENT_SIZE
prefix (x
in the middle was capitalized)- massaged
ClearDesc
because of introducedColor
union (color32f
=>color.f
) - removed
TYPE_
prefix fromMessage
(clarified interaction withwingdi.h
) - removed
BorderColor
, added flexibleSamplerDesc::borderColor
andSamplerDesc::isInteger
DETAILS:
- NRI: massaged
NRIMacro.h
- NRI: added a few missing
const
- NRI:
GetSupportedDepthFormat
moved toNRI.h
due to dependency onCoreInterface
- NRI: all headers of extensions made self-contained (depend only on
NRIDescs.h
) - NRI:
MAX_NUM
got hidden in depths ofNRIMacro.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
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 toplanes
ClearDesc::planes
must be set toPlaneBits::COLOR
explicitly for color only clears- no changes in barriers unless depth and stencil separation needed
- removed
ResourceViewBits
, use extendedTexture1DViewType
andTexture2DViewType
instead - no more API changes planned \O/
DETAILS:
- NRI: introduced
PlaneBits
- NRI: extended
Texture1DViewType
andTexture2DViewType
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 withPlaneBits
- NRI: added
PlaneBits
toTextureBarrierDesc
- D3D11/D3D12/VK: improvements around
ClearAttachments
- VK:
ClearAttachments
behavior matched D3D - Helper: added
planes
toTextureUploadDesc
- Validation: improved
ClearAttachments
validation - Validation: added detection of a mismatched D3D/VK behavior related to read-only depth-stencil usage
v1.143
HIGHLIGHTS:
- NRI: added shading rate support (aka VRS) for all GAPIs, including D3D11
- bug fixes and improvements
BREAKING_CHANGES:
DEPTH_STENCIL
inLayout
andAccess
renamed toDEPTH_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
HIGHLIGHTS:
- interface polishing (sorry for the breaking changes)
- bug fixes and improvements
BREAKING CHANGES:
REMAINING_ARRAY_LAYERS
renamed toREMAINING_LAYERS
REMAINING_MIP_LEVELS
renamed toREMAINING_MIPS
arraySize
renamed tolayerNum
arrayOffset
renamed tolayerOffset
textureArrayMaxDim
renamed totextureArrayMaxLayerNum
GeometryObject::triangles
replaced withGeometryObject::geometry.triangles
GeometryObject::boxes
replaced withGeometryObject::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
HIGHLIGHTS:
- added a new extension
NRIResourceAllocator
, which adds a simple way to create resources already bound to memory. Moreover, this extension usesAMD 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 toAllocationCallbacks
(similarly formemoryAllocatorInterface
) - Core:
DeviceDesc::memoryTier
replaced withDeviceDesc::isMemoryTier2Supported
- Raytracing:
GetAccelerationStructureMemoryDesc
madeAccelerationStructure
object independent - WrapperVK:
GetVk*
replaced withGet*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 useallocationCallbacks
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