Skip to content

Releases: NVIDIAGameWorks/NRI

v1.161

16 Jan 08:43
Compare
Choose a tag to compare

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 single SetDebugName

DETAILS:

  • Core: lots of SetXxxDebugName replaced with a single SetDebugName, unlocking infinite extensibility
  • Core: AdapterDesc::systemMemorySize renamed to sharedSystemMemorySize to avoid confusion
  • Core: added DeviceDesc::Architecture for UMA detection
  • Core: removed isShaderNativeI32Supported, isShaderNativeF32Supported and isShaderAtomicsI32Supported from DeviceDesc, 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 customized std::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

09 Jan 04:36
Compare
Choose a tag to compare

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 to Get[Buffer/Texture]MemoryDesc2
  • returned back Get[Buffer/Texture]MemoryDesc functions accepting an object instead of its desc

DETAILS:

  • Core: Get[Buffer/Texture]MemoryDesc renamed to Get[Buffer/Texture]MemoryDesc2
  • Core: returned back Get[Buffer/Texture]MemoryDesc functions accepting an object instead of its desc
  • Core: added isGetMemoryDesc2Supported to DeviceDesc
  • RayTracing: GetAccelerationStructureMemoryDesc renamed to GetAccelerationStructureMemoryDesc2
  • RayTracing: added GetAccelerationStructureMemoryDesc
  • Helper/Streamer/Validation: switched to GetMemoryDesc under the hood to maximize compatibility

v1.159

06 Jan 09:02
Compare
Choose a tag to compare

HIGHLIGHTS:

  • VK: TRUE Vulkan 1.3 support!
  • bug fixes and improvements

BREAKING CHANGES:

  • just remove viewportNum from RasterizationDesc (this state is dynamic now like in D3D)

DETAILS:

  • Core: made offsets an optional parameter for CmdSetVertexBuffers
  • VK: CmdSetViewport replaced with CmdSetViewportWithCount (that's the only function matching D3D behavior)
  • VK: CmdSetScissor replaced with CmdSetScissorWithCount (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 from VK_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 for BufferUsageBits::SHADER_RESOURCE_STORAGE (should be VK_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

02 Jan 10:35
Compare
Choose a tag to compare

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

23 Dec 09:29
Compare
Choose a tag to compare

HIGHLIGHTS:

Better annotations for profiling tools:

  • (Begin/End)Annotation start/end a named range
  • Annotation emit a named simultaneous event
  • nriBeginAnnotation, nriEndAnnotation and nriAnnotation annotate CPU timeline
  • CmdBeginAnnotation, "CmdEndAnnotationandCmdAnnotation` annotate GPU timeline (but most of the tools show them on the CPU timeline too)
  • hooked up PIX Event Runtime

BREAKING CHANGE:

  • nriEvent renamed to nriAnnotation

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

20 Dec 10:35
Compare
Choose a tag to compare

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 (use BGRA_UNUSED if don't care)
  • interface polishing

BREAKING CHANGES:

  • CmdBeginAnnotation has got bgra color argument, use BGRA_UNUSED or add a color

DETAILS:

  • Core: added nriBeginAnnotation, nriEndAnnotation, nriEvent and nriSetThreadName
  • Core: added ResetQueries
  • Core: added color for CmdBeginAnnotation
  • Core: removed misleading const from queryPool for CmdResetQueries, CmdBeginQuery and CmdEndQuery 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

05 Nov 02:03
Compare
Choose a tag to compare

HIGHLIGHTS:

  • Core: added "resolve" functionality
  • improvements and bug fixes

DETAILS:

  • Core: added CmdResolveTexture (for MSAA resolve at least)
  • Core: extended StageBits, AccessBits and Layout
  • Core: relaxed valid usage of srcRegionDesc and dstRegionDesc, 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 for Draw*
  • Validation: added missing dependency checks for some functions
  • updated NVAPI
  • minor bug fixes here and there
  • refactoring

v1.153

21 Oct 03:50
Compare
Choose a tag to compare

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 added Viewport::originBottomLeft as the last field in the struct, unlocking maximum flexibility.

BREAKING CHANGES:

  • depthRangeMin and depthRangeMax renamed to depthMin and depthMax 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

07 Oct 03:44
Compare
Choose a tag to compare

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 to usage
  • Core: typedBufferOffsetAlignment and storageBufferOffsetAlignment merged into a single bufferShaderResourceOffsetAlignment in DeviceDesc (in any case they should match)
  • RayTracing: RAY_TRACING_BUFFER decoupled into SCRATCH_BUFFER and SHADER_BINDING_TABLE (was an umbrella, hiding potential inefficiencies)
  • RayTracing: ACCELERATION_STRUCTURE_BUILD_READ renamed to ACCELERATION_STRUCTURE_BUILD_INPUT
  • RayTracing: rayTracingShaderTableAlignment renamed to shaderBindingTableAlignment (to match overall style)
  • RayTracing: rayTracingScratchAlignment renamed to scratchBufferOffsetAlignment (to match overall style)

DETAILS:

  • Core: Added missing NONE to nriGetGraphicsAPIString
  • Core: ReportMessage improvement - messageType, file and line 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 from DeviceDesc
  • Core: added comments, clarifying compatible AccessBits expected by Layout
  • 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 utilizing FitPipelineLayoutSettingsIntoDeviceLimits helper
  • Validation: fixed and improved incomplete validation for AllocateDescriptorSets
  • code polishing

v1.151

20 Sep 08:14
Compare
Choose a tag to compare

HIGHLIGHTS:

  • bug fixes and improvements

BREAKING CHANGE:

  • PipelineLayoutDesc::rootRegisterSpace affects root constants in shaders
  • added pipelineLayout prefix to root limits in DeviceDesc 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 and sampleNum in TextureDesc
  • Core: added rootRegisterSpace to PipelineLayoutDesc, which is used for root constants and descriptors
  • bug fixes and improvements