HIGHLIGHTS:
- added experimental
WGPU(WebGPU) backend (turned off by default) - added pipeline cache support
- added calibrated timestamps support
- improved
AdapterDescto cover software and virtual devices and expose per-device backend support - added missing features previously uncovered in
DeviceDesc:occlusion,timestamp,tessellationShader,geometryShader,sumShadingRateCombinerandextendedDynamicState - VK: Vulkan backend made
v1.2 (core)compatible (eliminatedVK_KHR_copy_commands2,VK_KHR_dynamic_renderingandVK_EXT_extended_dynamic_statehard requirements) - D3D12: implemented
drawIDemulation, seeNRI.hlsl - D3D12: respected the fact that NRI always uses the latest
AgilitySDKfor compilation (if enabled), but may be used with any version by picking the latest "available" interfaces exposed inD3D12Core.dllloaded by the app
BREAKING CHANGES:
D32_SFLOAT_S8_UINT_X24renamed toD32_SFLOAT_S8_UINTDESCRETErenamed toDISCRETE(oops)DeviceDesc::features.copyQueueTimestamprenamed totimestampCopyQueueTextureViewDesc::readonlyPlanesreworked toaccessiblePlanes(and explained valid usage)- removed special depth-stencil formats for shader resource views:
R24_UNORM_X8,X24_G8_UINT,R32_SFLOAT_X8_X24andX32_G8_UINT_X24(useTextureViewDesc::accessiblePlanes)
DETAILS:
- added
WGPUbackend (implemented #238) - Core: exposed
AdapterDesc::driverVersion - Core: exposed
AdapterDesc::supportedGraphicsAPIsandGraphicsAPItransformed toNriBits, because some adapters may not support some backends - Core: exposed
SOFTWAREandVIRTUALinArchitecture - Core:
DeviceDesc::viewport.boundsMin/Maxtype changed toint32_tbecause of some mobile devices support[-131072; 131071]range - Core: added pipeline cache support (merged PR #225, implemented #36)
- Core: added
GetCalibratedTimestampsand the corresponding feature toDeviceDesc::features - Core: added missing
StageBits::SHADING_RATE_ATTACHMENT - Core: added optional
VertexStreamDesc::stride, which is mandatory iffeatures.extendedDynamicStateis not supported - Core: added missing
features.sumShadingRateCombinerneeded forShadingRateCombiner::SUM - Core: added missing
occlusion,timestamp,tessellationShaderandgeometryShader, which may be unavailable on some HW - D3D12: fixed on-the-fly resolve
- D3D12: fix for integer root samplers
- D3D12:
ComPtrusage polishing - D3D12: fixed compilation with Win SDK
10.0.20348(latest pre-Agility SDK, min spec for NRI) - D3D12: ignored
D3D12_MESSAGE_ID_CREATEPIPELINELIBRARY_INVALIDLIBRARYBLOBmessage, 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_OFFSETandNRI_INSTANCE_ID_OFFSETmacros for SM 6.8 - D3D12/D3D11: fixed
waitableSwapChaindetection - 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_maintenance1is 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