Releases: NVIDIAGameWorks/NRI
Releases Β· NVIDIAGameWorks/NRI
v1.161
HIGHLIGHTS:
- a debug name can be assigned to any NRI object via the only one
SetDebugName
function - added
.natvis
debugger markup, unwrapping useless client-side anonymized opaque pointers to meaningful{ptr, name}
or{ptr, name, desc}
(if validation is enabled) - extended
DeviceDesc
(architecture, shader clock, ray tracing position fetch) - various improvements
BREAKING CHANGES:
SetXxxDebugName
replaced with a singleSetDebugName
DETAILS:
- Core: lots of
SetXxxDebugName
replaced with a singleSetDebugName
, unlocking infinite extensibility - Core:
AdapterDesc::systemMemorySize
renamed tosharedSystemMemorySize
to avoid confusion - Core: added
DeviceDesc::Architecture
for UMA detection - Core: removed
isShaderNativeI32Supported
,isShaderNativeF32Supported
andisShaderAtomicsI32Supported
fromDeviceDesc
, which are always supported on any device - Core: "shader clock" support
- Core/VKWrapper: added some missing bits for retrieving native objects
- D3D12: fixed crash on ray tracing pipeline creation (regression)
- D3D11/D3D12: removed
D3DExt.h/hpp
, its functionality copied to corresponding implementations - D3D11/D3D12: polished shader extensions, since AMD AGS casts some restrictions
- VK:
VK_KHR_ray_tracing_position_fetch
support - VK: semi-fix for rendering without attachments
- VK: updated headers
- Validation:
SetDebugName
validates that an object is an NRI object - Cmake: added
NRI_ENABLE_DEBUG_NAMES_AND_ANNOTATIONS
(on by default) - added
.natvis
(debugger markup) file - fixed creating a copy of
AllocationCallbacks
in every instance of a customizedstd::vector
(now it's a reference to a single instance stored in device, it reduces memory usage of tiny entities, which can be created 100 000 times) - added lots of
final
keywords - polishing
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