Releases: NVIDIAGameWorks/NRI
Releases · NVIDIAGameWorks/NRI
v1.154
HIGHLIGHTS:
- Core: added "resolve" functionality
- improvements and bug fixes
DETAILS:
- Core: added
CmdResolveTexture
(for MSAA resolve at least) - Core: extended
StageBits
,AccessBits
andLayout
- Core: relaxed valid usage of
srcRegionDesc
anddstRegionDesc
, 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 forDraw*
- Validation: added missing dependency checks for some functions
- updated NVAPI
- minor bug fixes here and there
- refactoring
v1.153
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 addedViewport::originBottomLeft
as the last field in the struct, unlocking maximum flexibility.
BREAKING CHANGES:
depthRangeMin
anddepthRangeMax
renamed todepthMin
anddepthMax
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
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 tousage
- Core:
typedBufferOffsetAlignment
andstorageBufferOffsetAlignment
merged into a singlebufferShaderResourceOffsetAlignment
inDeviceDesc
(in any case they should match) - RayTracing:
RAY_TRACING_BUFFER
decoupled intoSCRATCH_BUFFER
andSHADER_BINDING_TABLE
(was an umbrella, hiding potential inefficiencies) - RayTracing:
ACCELERATION_STRUCTURE_BUILD_READ
renamed toACCELERATION_STRUCTURE_BUILD_INPUT
- RayTracing:
rayTracingShaderTableAlignment
renamed toshaderBindingTableAlignment
(to match overall style) - RayTracing:
rayTracingScratchAlignment
renamed toscratchBufferOffsetAlignment
(to match overall style)
DETAILS:
- Core: Added missing
NONE
tonriGetGraphicsAPIString
- Core:
ReportMessage
improvement -messageType
,file
andline
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
fromDeviceDesc
- Core: added comments, clarifying compatible
AccessBits
expected byLayout
- 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 utilizingFitPipelineLayoutSettingsIntoDeviceLimits
helper - Validation: fixed and improved incomplete validation for
AllocateDescriptorSets
- code polishing
v1.151
HIGHLIGHTS:
- bug fixes and improvements
BREAKING CHANGE:
PipelineLayoutDesc::rootRegisterSpace
affects root constants in shaders- added
pipelineLayout
prefix toroot
limits inDeviceDesc
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
andsampleNum
inTextureDesc
- Core: added
rootRegisterSpace
toPipelineLayoutDesc
, which is used for root constants and descriptors - bug fixes and improvements
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