Releases: NVIDIAGameWorks/NRI
Releases Β· NVIDIAGameWorks/NRI
v1.160
HIGHLIGHTS:
- VK: removed hard dependency on
VK_KHR_maintenance4
(fixed compatibility with MoltenVK) - VK: initialization polishing
- updated docs
BREAKING CHANGES:
Get[Buffer/Texture]MemoryDesc
renamed toGet[Buffer/Texture]MemoryDesc2
- returned back
Get[Buffer/Texture]MemoryDesc
functions accepting an object instead of its desc
DETAILS:
- Core:
Get[Buffer/Texture]MemoryDesc
renamed toGet[Buffer/Texture]MemoryDesc2
- Core: returned back
Get[Buffer/Texture]MemoryDesc
functions accepting an object instead of its desc - Core: added
isGetMemoryDesc2Supported
toDeviceDesc
- RayTracing:
GetAccelerationStructureMemoryDesc
renamed toGetAccelerationStructureMemoryDesc2
- RayTracing: added
GetAccelerationStructureMemoryDesc
- Helper/Streamer/Validation: switched to
GetMemoryDesc
under the hood to maximize compatibility
v1.159
HIGHLIGHTS:
- VK: TRUE Vulkan 1.3 support!
- bug fixes and improvements
BREAKING CHANGES:
- just remove
viewportNum
fromRasterizationDesc
(this state is dynamic now like in D3D)
DETAILS:
- Core: made
offsets
an optional parameter forCmdSetVertexBuffers
- VK:
CmdSetViewport
replaced withCmdSetViewportWithCount
(that's the only function matching D3D behavior) - VK:
CmdSetScissor
replaced withCmdSetScissorWithCount
(that's the only function matching D3D behavior) - VK:
CmdBindVertexBuffers
replaced with v2 (supports range and dynamic strides, better validation) - VK:
CmdBindIndexBuffer
replaced with v2 (supports range, better validation) - VK:
GetPhysicalDeviceFormatProperties
replaced with v2 (extensibility) - VK:
GetDeviceQueue
replaced with v2 (extensibility) - VK:
GetPhysicalDeviceQueueFamilyProperties2
replaced with v2 (extensibility) - VK:
GetPhysicalDeviceSurfaceFormatsKHR
replaced with v2 (extensibility) - VK:
CmdCopyBuffer
replaced with v2 (extensibility) - VK:
CmdCopyImage
replaced with v2 (extensibility) - VK:
CmdResolveImage
replaced with v2 (extensibility) - VK:
CmdCopyBufferToImage
replaced with v2 (extensibility) - VK:
CmdCopyImageToBuffer
replaced with v2 (extensibility) - VK:
CmdWriteTimestamp
replaced with v2 (extensibility) - VK:
VK_KHR_get_surface_capabilities2
related functions detached fromVK_KHR_surface
group - VK: fixed some pipeline stage flags without
2
(actually NOP, they are a subset of the new set of flags) - VK: fixed incorrect usage of
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
forBufferUsageBits::SHADER_RESOURCE_STORAGE
(should beVK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
) - D3D11: fixed a "copy-paste" bug in newly introduced CPU perf markers (oops!)
- Validation:
viewMask
was not down-streamed for core API (oops!) - standardization
- updated README
v1.158
HIGHLIGHTS:
- Core: hooked up VK robustness on device and pipeline levels
- Core: added multiview support
- improvements and bug fixes
DETAILS:
- Core: added robustness (can be set per "Device" or "Pipeline", VK only)
- Core: added multiview support for all GAPIs
- Core: added multiview features and restrictions to
DeviceDesc
- Core: added missing shader features to
DeviceDesc
: ROV, barycentrics, viewport and layer indices - Compatibility HLSL: added VK/D3D-compatible decorations for dual-source blending
- D3D11: fixed potential NULL dereferencing in
[src/dst]RegionDesc
variables - D3D11: hooked up AMD multiview
- D3D12: disabled useless and previously forgotten
D3D12_MESSAGE_ID_CLEARRENDERTARGETVIEW_MISMATCHINGCLEARVALUE
to avoid debug layer spam - VK: fixed potential validation errors for
CmdClearAttachments
- VK: fixed
GetImageViewType
functions returning incorrect view type for layered attachments - VK: grouped up extensions needed only for VK < 1.3
- VK: hooked up many missing shader-only extensions
- VK: fixed shader model detection
- updated comments in main headers
- updated README
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