Releases: NVIDIAGameWorks/NRI
Releases · NVIDIAGameWorks/NRI
v1.156
HIGHLIGHTS:
Better annotations for profiling tools:
(Begin/End)Annotation
start/end a named rangeAnnotation
emit a named simultaneous eventnriBeginAnnotation
,nriEndAnnotation
andnriAnnotation
annotate CPU timelineCmdBeginAnnotation
, "CmdEndAnnotationand
CmdAnnotation` annotate GPU timeline (but most of the tools show them on the CPU timeline too)- hooked up PIX Event Runtime
BREAKING CHANGE:
nriEvent
renamed tonriAnnotation
DETAILS:
- Core: follow up improvements for v1.155
- Core: added
CmdAnnotation
to emit a named simultaneous event on the GPU timeline - VK: force
color.a = 1
for annotations to match PIX behavior - D3D11: clarify that colorization in annotations is not supported
- D3D12: try to load dynamically
WinPixEventRuntime.dll
as the only way to colorize annotations
v1.155
HIGHLIGHTS:
- Core: added functions for profiling tools (code markup for NVIDIA Nsight Systems), off by default (see Cmake option
NRI_ENABLE_NVTX_SUPPORT
) - Core: added
ResetQueries
to reset queries on the host - Core: added color for
CmdBeginAnnotation
(useBGRA_UNUSED
if don't care) - interface polishing
BREAKING CHANGES:
CmdBeginAnnotation
has gotbgra
color argument, useBGRA_UNUSED
or add a color
DETAILS:
- Core: added
nriBeginAnnotation
,nriEndAnnotation
,nriEvent
andnriSetThreadName
- Core: added
ResetQueries
- Core: added color for
CmdBeginAnnotation
- Core: removed misleading
const
fromqueryPool
forCmdResetQueries
,CmdBeginQuery
andCmdEndQuery
functions - Validation: removed Over9000 complex validation for queries (let's rely on the graphics debug layer)
- D3D11: switched perf markers to PIX, but actually it's a NOP change
- merged PR #106: mark methods as overridden for Device in all implementations
- updated NVAPI
- added NVTX submodule
- polishing
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