Skip to content

v180

Latest

Choose a tag to compare

@dzhdanNV dzhdanNV released this 22 Jun 08:09
· 289 commits to main since this release

HIGHLIGHTS:

  • added experimental WGPU (WebGPU) backend (turned off by default)
  • added pipeline cache support
  • added calibrated timestamps support
  • improved AdapterDesc to cover software and virtual devices and expose per-device backend support
  • added missing features previously uncovered in DeviceDesc: occlusion, timestamp, tessellationShader, geometryShader, sumShadingRateCombiner and extendedDynamicState
  • VK: Vulkan backend made v1.2 (core) compatible (eliminated VK_KHR_copy_commands2, VK_KHR_dynamic_rendering and VK_EXT_extended_dynamic_state hard requirements)
  • D3D12: implemented drawID emulation, see NRI.hlsl
  • D3D12: respected the fact that NRI always uses the latest AgilitySDK for compilation (if enabled), but may be used with any version by picking the latest "available" interfaces exposed in D3D12Core.dll loaded by the app

BREAKING CHANGES:

  • D32_SFLOAT_S8_UINT_X24 renamed to D32_SFLOAT_S8_UINT
  • DESCRETE renamed to DISCRETE (oops)
  • DeviceDesc::features.copyQueueTimestamp renamed to timestampCopyQueue
  • TextureViewDesc::readonlyPlanes reworked to accessiblePlanes (and explained valid usage)
  • removed special depth-stencil formats for shader resource views: R24_UNORM_X8, X24_G8_UINT, R32_SFLOAT_X8_X24 and X32_G8_UINT_X24 (use TextureViewDesc::accessiblePlanes)

DETAILS:

  • added WGPU backend (implemented #238)
  • Core: exposed AdapterDesc::driverVersion
  • Core: exposed AdapterDesc::supportedGraphicsAPIs and GraphicsAPI transformed to NriBits, because some adapters may not support some backends
  • Core: exposed SOFTWARE and VIRTUAL in Architecture
  • Core: DeviceDesc::viewport.boundsMin/Max type changed to int32_t because of some mobile devices support [-131072; 131071] range
  • Core: added pipeline cache support (merged PR #225, implemented #36)
  • Core: added GetCalibratedTimestamps and the corresponding feature to DeviceDesc::features
  • Core: added missing StageBits::SHADING_RATE_ATTACHMENT
  • Core: added optional VertexStreamDesc::stride, which is mandatory if features.extendedDynamicState is not supported
  • Core: added missing features.sumShadingRateCombiner needed for ShadingRateCombiner::SUM
  • Core: added missing occlusion, timestamp, tessellationShader and geometryShader, which may be unavailable on some HW
  • D3D12: fixed on-the-fly resolve
  • D3D12: fix for integer root samplers
  • D3D12: ComPtr usage polishing
  • D3D12: fixed compilation with Win SDK 10.0.20348 (latest pre-Agility SDK, min spec for NRI)
  • D3D12: ignored D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOB message, which blocks pipeline cache recreation if API validation is enabled, this matches Vulkan behavior
  • D3D12: fixed corner cases of draw parameters emulation
  • D3D12: added missing NRI_VERTEX_ID_OFFSET and NRI_INSTANCE_ID_OFFSET macros for SM 6.8
  • D3D12/D3D11: fixed waitableSwapChain detection
  • D3D11: fixed critical section usage
  • D3D11: fixed "structured buffer" hack
  • VK: moved "swap chain caps" retrieval after determining the presentation mode, what is required by VK v1.4 if VK_KHR_swapchain_maintenance1 is supported (caps may be different for different modes)
  • Validation: fixed "typo" bugs
  • Validation: added missing checks
  • implemented #70, #213, #216, #223, #228, #233
  • merged PRs #227, #229, #230, #231, #235
  • other lesser fixes and improvements
  • updated README
  • code cleanup
  • polishing