Skip to content

Releases: NVIDIAGameWorks/NRI

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

v1.150

18 Sep 08:11
Compare
Choose a tag to compare

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 in DeviceDesc
  • 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 to CmdSetRootConstants (yes, multiple constants can be organized in a single binding)
  • NRI_PUSH_CONSTANTS renamed to NRI_ROOT_CONSTANTS (yes, multiple constants can be organized in a single binding)
  • PushConstantDesc renamed to RootConstantDesc (foggy, but not a plural form to allow rootConstants)
  • PipelineLayoutDesc::pushConstants renamed to rootConstants
  • color in OutputMergerDesc renamed to colors (a plural form needed)
  • colorNum moved right after colors in OutputMergerDesc to follow "objects first, number of objects next" idiom (like in VK)
  • swapped order of streams and attributeNum in VertexInputDesc to follow "objects first, number of objects next" idiom (like in VK)
  • isLogicOpSupported renamed to isLogicFuncSupported (since LogicFunc is used)
  • boundDescriptorSetMaxNum renamed to pipelineLayoutDescriptorSetMaxNum (to emphasize the meaning)
  • pushConstantsMaxSize renamed to rootConstantMaxSize (again to follow the nomenclature currently in use)

DETAILS (in addition to major changes):

  • NRI: added RootDescriptorSetDesc used in PipelineLayoutDesc
  • 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