EngineWebGPUCreateInfoIEngineFactoryWebGPU interfaceRENDER_DEVICE_TYPE_WEBGPU, SHADER_SOURCE_LANGUAGE_WGSL, SHADER_VARIABLE_FLAG_UNFILTERABLE_FLOAT_TEXTURE_WEBGPU, SHADER_VARIABLE_FLAG_NON_FILTERING_SAMPLER_WEBGPU enum valuesWEB_GPU_BINDING_TYPE enum, WebGPUResourceAttribs struct, and WebGPUResourceAttribs WebGPUAttribs member to PipelineResourceDesc structIRenderDeviceWebGPU, IDeviceContextWebGPU, etc.)AsyncShaderCompilation render device featurepAsyncShaderCompilationThreadPool and NumAsyncShaderCompilerThreads members to EngineCreateInfo structSHADER_COMPILE_FLAG_ASYNCHRONOUS and PSO_CREATE_FLAG_ASYNCHRONOUS flagsSHADER_STATUS and PIPELINE_STATE_STATUS enumsIShader::GetStatus and IPipelineState::GetStatus methodsAdded samples and tutorials web page
MultiDraw and MultiDrawIndexed commands (API254006)SerializationDeviceGLInfo struct (API254005)ValidateShaders member allows disabling time-consuming shader compilationAnisotropicFilteringSupported member of SamplerProperties struct with MaxAnisotropy (API254004)TextureSubresourceViews device feature (API254003)DeviceContextStats structIDeviceContext::ClearStats and IDeviceContext::GetStats methodsIDeviceContext::TransitionShaderResources: removed unused pPipelineState parameter (API254001)ShaderMacroArray struct (API253011)Macros member of ShaderCreateInfo struct is now of type ShaderMacroArrayResourceMappingDesc with ResourceMappingCreateInfo (API253010)ResourceMappingCreateInfo::NumEntries to define the number of entries instead of the trailing null entryShaderCreateInfo::ppConversionStream (API253009)ppCompilerOutput member of the ShaderCreateInfo struct and added it as parameter to the IRenderDevice::CreateShader method (API253008)IPipelineStateGL::GetGLProgramHandle and IShaderGL::GetGLShaderHandle methods (API253007)TEXTURE_VIEW_READ_ONLY_DEPTH_STENCIL view typeUseReadOnlyDSV member to GraphicsPipelineDesc structPSO_CACHE_FLAGS enum and PipelineStateCacheDesc::Flags member (API253005)RenderDeviceShaderVersionInfo struct and RenderDeviceInfo::MaxShaderVersion member (API253003)TEXTURE_COMPONENT_SWIZZLE enum and TextureComponentMapping structSwizzle member to TextureViewDesc structTextureComponentSwizzle member to DeviceFeatures structSHADER_CODE_BASIC_TYPE and SHADER_CODE_VARIABLE_CLASS enumsShaderCodeVariableDesc and ShaderCodeBufferDesc structsIShader::GetConstantBufferDesc methodRENDER_STATE_CACHE_LOG_LEVEL enum, replaced EnableLogging member of RenderStateCacheCreateInfo struct with LoggingLevel (API252009)IPipelineResourceSignature::CopyStaticResources and IPipelineState::CopyStaticResources methods (API252008)IRenderStateCache interface and related data types) (API252007)UseCombinedTextureSamplers and CombinedSamplerSuffix members from ShaderCreateInfo to ShaderDesc (API252006)IntanceLayerCount and ppInstanceLayerNames members to EngineVkCreateInfo struct (API252005)IgnoreDebugMessageCount and ppIgnoreDebugMessageNames to EngineVkCreateInfo struct (API252004)IDeviceObjectArchive and IArchive; enabled dearchiver to load multiple archives to allow storing signatures and pipelines separately) (API252003)SET_SHADER_RESOURCES_FLAGS enum and Flags parameter to IShaderResourceVariable::Set and IShaderResourceVariable::SetArray methods (API252002)SamplerDesc::UnnormalizedCoords parameter (API Version 250014)STATE_TRANSITION_FLAGS enum and replaced StateTransitionDesc::UpdateResourceState with STATE_TRANSITION_FLAGS Flags (API Version 250004)ComputeShaderProperties struct (API Version 250003)IShaderResourceBinding::CheckResources method and SHADER_RESOURCE_VARIABLE_TYPE_FLAGS enum (API Version 250002)IShaderResourceVariable::IsBound with IShaderResourceVariable::Get (API Version 250001)RayTracing2 device feature and added RAY_TRACING_CAP_FLAGS enum (API Version 240099)PIPELINE_TYPE_TILE and SHADER_TYPE_TILE enum valuesTileShaders device featureTilePipelineDesc, TilePipelineStateCreateInfo and DispatchTileAttribs structsIRenderDevice::CreateTilePipelineState, IPipelineState::GetTilePipelineDesc, IDeviceContext::DispatchTile and IDeviceContext::GetTileSize methodsGetNextFenceValue, GetCompletedFenceValue, and IsFenceSignaled methods from IRenderDeviceD3D12 and IRenderDeviceVk interfaces as they are now in ICommandQueue interface (API Version 240097)ICommandQueue interface, IDeviceContext::LockCommandQueue and IDeviceContext::UnlockCommandQueue methods, removed fence query methods from IRenderDeviceVk, IRenderDeviceD3D12, and IRenderDeviceMtl (API Version 240096)CommandQueueMask member of TextureDesc, BufferDesc, PipelineStateDesc, TopLevelASDesc, and BottomLevelASDesc, was renamed to ImmediateContextMaskpContext member to TextureData and BufferData structs to indicate which context to use for initialization.GetDeviceCaps and GetDeviceProperties IDeviceContext methods and added GetDeviceInfo and GetAdapterInfo methods; added RenderDeviceInfo struct.SamplerCaps to SamplerProperties,TextureCapstoTextureProperties; addedBufferProperties, RayTracingProperties, andMeshShaderPropertiesstructsRemovedDeviceLimitsstructRemovedDeviceCapsstruct and moved its members toGraphicsAdapterInfoandRenderDeviceInfostructsAddedNativeFencetoDeviceFeaturesAddedCommandQueueInfostructAddedCOMMAND_QUEUE_TYPEandQUEUE_PRIORITYenumsRenamedShaderVersionstruct toVersionReworkedGraphicsAdapterInfostructAddedImmediateContextCreateInfostruct andpImmediateContextInfo,NumImmediateContextsmembers toEngineCreateInfostructAddedAdapterIdandGraphicsAPIVersionmembers toEngineCreateInfostructRemovedDIRECT3D_FEATURE_LEVELenumAddedFENCE_TYPEenumRenamedIFence::ResettoIFence::Signal; addedIFence::WaitmethodAddedIEngineFactory::EnumerateAdaptersmethodAddedDeviceContextDescstruct andIDeviceContext::GetDescmethodAddedIDeviceContext::Beginmethod, renamedIDeviceContext::SignalFencetoIDeviceContext::EnqueueSignalAdded debug annotationsIDeviceContext::BeginDebugGroup,IDeviceContext::EndDebugGroup, IDeviceContext::InsertDebugLabel<tt>(API Version 240095)DefaultVariableMergeStagesmember toPipelineResourceLayoutDescstruct (API240094)
IShaderResourceVariable::SetBufferRangeandIShaderResourceVariable::SetBufferOffsetmethods, addedDeviceLimitsstruct (API240093)
MEMORY_PROPERTIESenum,IBuffer::GetMemoryProperties(),IBuffer::FlushMappedRange(), andIBuffer::InvalidateMappedRange()methods (API240092)
IDeviceContext::SetUserData()andIDeviceContext::GetUserData()methods (API240091)
SHADER_VARIABLE_FLAGSenum andSHADER_VARIABLE_FLAGS Flagsmember to ShaderResourceVariableDesc struct (API240090)
VALIDATION_FLAGSandD3D12_VALIDATION_FLAGSenums; renamedD3D11_DEBUG_FLAGStoD3D11_VALIDATION_FLAGS
VALIDATION_FLAGS ValidationFlagsandbool EnableValidationtoEngineCreateInfo
D3D12_VALIDATION_FLAGS D3D12ValidationFlagstoEngineD3D12CreateInfo; removedEnableDebugLayer,EnableGPUBasedValidation, BreakOnError,BreakOnCorruption
VALIDATION_LEVELenum andSetValidationLevel()‘ create info structs’ helper functions
EngineGLCreateInfo::CreateDebugContext member (it is replaced with EnableValidation)Added MtlThreadGroupSizeX, MtlThreadGroupSizeY, and MtlThreadGroupSizeZ members to DispatchComputeAttribs and DispatchComputeIndirectAttribs structs (API Version 240088)
EngineD3D12CreateInfo::NumCommandsToFlushCmdList and EngineVkCreateInfo::NumCommandsToFlushCmdBuffer as flushing the context based on the number of commands is unreasonable (API Version 240084)IDeviceContext::ExecuteCommandList() with IDeviceContext::ExecuteCommandLists() method that takes an array of command lists instead of one (API Version 240082)IDeviceObject::SetUserData() and IDeviceObject::GetUserData() methods (API Version 240081)IDeviceContext::GetFrameNumber method (API Version 240079)ShaderResourceQueries device feature and EngineGLCreateInfo::ForceNonSeparablePrograms parameter (API Version 240078)USAGE_STATIC to USAGE_IMMUTABLE (API Version 240077)StaticSamplerDesc -> ImmutableSamplerDescPipelineResourceLayoutDesc::NumStaticSamplers -> PipelineResourceLayoutDesc::NumImmutableSamplersPipelineResourceLayoutDesc::StaticSamplers -> PipelineResourceLayoutDesc::ImmutableSamplersRefactored pipeline state creation (API Version 240075)
PipelineStateCreateInfo with GraphicsPipelineStateCreateInfo and ComputePipelineStateCreateInfoIRenderDevice::CreatePipelineState with IRenderDevice::CreateGraphicsPipelineState and IRenderDevice::CreateComputePipelineStatepVS, pGS, pHS, pDS, pPS, pAS, pMS were moved from GraphicsPipelineDesc to GraphicsPipelineStateCreateInfoGraphicsPipelineDesc GraphicsPipeline was moved from PipelineStateDesc to GraphicsPipelineStateCreateInfopCS is now a member of ComputePipelineStateCreateInfo, ComputePipelineDesc was removedIPipelineState::GetGraphicsPipelineDesc methodOld API for graphics pipeline initialization:
New API for graphics pipeline initialization:
Old API for compute pipeline initialization:
New API for compute pipeline initialization:
ShaderInt8, ResourceBuffer8BitAccess, and UniformBuffer8BitAccess device features. (API Version 240074)ShaderFloat16, ResourceBuffer16BitAccess, UniformBuffer16BitAccess, and ShaderInputOutput16 device features. (API Version 240073)UnifiedMemoryCPUAccess member to GraphicsAdapterInfo struct (API Version 240072)ADAPTER_VENDOR enumGraphicsAdapterInfo structGraphicsAdapterInfo AdapterInfo member to DeviceCaps structADAPTER_TYPE AdaterType from DeviceCaps structRESOURCE_DIMENSION_SUPPORT enumTextureFormatInfoExt structDEVICE_FEATURE_STATE enumDeviceFeatures struct from bool to DEVICE_FEATURE_STATEDeviceFeatures Features member to EngineCreateInfo structPIPELINE_TYPE enumIsComputePipline member of PipelineStateDesc struct with PIPELINE_TYPE PipelineTypeQUERY_TYPE_DURATION query type (API Version 240067)USAGE_UNIFIED usage type (API Version 240066)CREATE_SHADER_SOURCE_INPUT_STREAM_FLAGS enum and IShaderSourceInputStreamFactory::CreateInputStream2 method (API Version 240064)ISwapChain::SetMaximumFrameLatency function (API Version 240061)EngineGLCreateInfo::CreateDebugContext member (API Version 240060)SHADER_SOURCE_LANGUAGE_GLSL_VERBATIM value (API Version 240059).GLBindTarget parameter to IRenderDeviceGL::CreateTextureFromGLHandle method (API Version 240058).PreTransform parameter to swap chain description (API Version 240057).Added PipelineStateCreateInfo struct that is now taken by IRenderDevice::CreatePipelineState instead of PipelineStateDesc struct. Added PSO_CREATE_FLAGS enum (API Version 240056).
Old API:
New API:
PRIMITIVE_TOPOLOGY_LINE_STRIP topology (API Version 240055)NativeWindow (API Version 240054)NativeWindow wrapper and replaced pNativeWndHandle and pDisplay members with it in EngineGLCreateInfo (API Version 240053)AdapterType member to DeviceCaps struct (API Version 240048)IDeviceContextGL::SetSwapChain and IRenderDeviceGL::CreateDummyTexture methods (API Version 240047)IDeviceContext::SetSwapChain method (API Version 240046)MAP_FLAG_DO_NOT_SYNCHRONIZE flag to MAP_FLAG_NO_OVERWRITE (API Version 240045)GetVkInstance and GetVkPhysicalDevice methods to IRenderDeviceVk interface (API Version 240044)HLSLSemantic member to LayoutElement struct (API Version 240042)ResolveTextureSubresource device context command, removed SamplesCount member of the SwapChainDesc (API Version 240041)APIVersion member to EngineCreateInfo struct (API Version 240040)IDeviceObject::GetUniqueID method (API Version 240039)IDeviceContextD3D12::LockCommandQueue, IDeviceContextD3D12::UnlockCommandQueue, IDeviceContextVk::LockCommandQueue, and IDeviceContextVk::UnlockCommandQueue methods (API Version 240038)EnableGPUBasedValidation member to EngineD3D12CreateInfo struct (API Version 240037)DRAW_FLAG_RESOURCE_BUFFERS_INTACT flag (API Version 240036)HLSLVersion, GLSLVersion and GLESSLVersion to ShaderCreateInfo struct (API Version 240035)EngineD3D11DebugFlags to D3D11_DEBUG_FLAGS (API Version 240034)Draw command into Draw, DrawIndexed, DrawIndirect and DrawIndexedIndirect. Split up DispatchCompute command into DispatchCompute and DispatchComputeInidrect (API Version 240033).SHADER_PROFILE enum (API Version 240032)DIRECT3D_FEATURE_LEVEL and DIRECT3D_FEATURE_LEVEL MinimumFeatureLevel member to EngineD3D11CreateInfo and EngineD3D12CreateInfo structs (API Version 240032)IEngineFactoryD3D11::EnumerateHardwareAdapters, IEngineFactoryD3D11::EnumerateDisplayModes, IEngineFactoryD3D12::EnumerateHardwareAdapters, IEngineFactoryD3D12::EnumerateDisplayModes to take minimum feature level. (API Version 240032)bBindlessSupported member to DeviceCaps struct. (API Version 240032)NumDeferredContexts parameter from factory functions IEngineFactoryD3D11::CreateDeviceAndContextsD3D11, IEngineFactoryD3D12::CreateDeviceAndContextsD3D12 and IEngineFactoryVk::CreateDeviceAndContextsVk to EngineCreateInfo struct.USAGE_CPU_ACCESSIBLE -> USAGE_STAGINGSWAP_CHAIN_USAGE_FLAGS enumIPipelineState::GetStaticShaderVariable() with IPipelineState::GetStaticVariableByName() and IPipelineState::GetStaticVariableByIndex()IShaderResourceBinding::GetVariable() with IShaderResourceBinding::GetVariableByName() and IShaderResourceBinding::GetVariableByIndex()IShaderSourceInputStreamFactory derived from IObject; added IEngineFactory::CreateDefaultShaderSourceStreamFactory() method; added IRenderDevice::GetEngineFactory() method (API Version 240021)DRAW_FLAG_VERIFY_DRAW_ATTRIBS, DRAW_FLAG_VERIFY_RENDER_TARGETS, and DRAW_FLAG_VERIFY_ALL flags (API Version 240022)TEXTURE_VIEW_FLAGS enum and Flags member to TextureViewDesc structure (API Version 240023)IShaderResourceVariable::IsBound() method (API Version 240024)Diligent- prefix to project names to avoid name conflicts.IDeviceContextD3D12::GetD3D12CommandList methodIDeviceContext::WaitForFence() method (API Version 240027)IDeviceContext::WaitForIdle() method (API Version 240028)IRenderDevice::IdleGPU() method (API Version 240029)EngineD3D12CreateInfo::EnableDebugLayer member (API Version 240030)EngineD3D12CreateInfo::BreakOnError and EngineD3D12CreateInfo::BreakOnCorruption members (API Version 240031)IRenderDevice::CreateTexture() and IRenderDevice::CreateBuffer() to take pointer to initialization data rather than references.LayoutElement::AutoOffset and LayoutElement::AutoOffset values to use instead of 0 when automatically computing input layout elements offset and strides.IRenderDeviceFactoryD3D11 -> IEngineFactoryD3D11, RenderDeviceFactoryD3D11.h -> EngineFactoryD3D11.hIRenderDeviceFactoryD3D12 -> IEngineFactoryD3D12, RenderDeviceFactoryD3D12.h -> EngineFactoryD3D12.hIRenderDeviceFactoryOpenGL -> IEngineFactoryOpenGL, RenderDeviceFactoryOpenGL.h -> EngineFactoryOpenGL.hIRenderDeviceFactoryVk -> IEngineFactoryVk, RenderDeviceFactoryVk.h -> EngineFactoryVk.hIRenderDeviceFactoryMtl -> IEngineFactoryMtl, RenderDeviceFactoryMtl.h -> EngineFactoryMtl.hIShaderVariable -> IShaderResourceVariableSHADER_VARIABLE_TYPE -> SHADER_RESOURCE_VARIABLE_TYPEShaderVariableDesc -> ShaderResourceVariableDescSHADER_RESOURCE_TYPE enumIShader::GetVariable, IShader::GetVariableCount, and IShader::BindResources methodsIPipelineState::BindStaticResoruces, IPipelineState::GetStaticVariableCount, and IPipelineState::GetStaticShaderVariable methodsPipelineResourceLayoutDesc structure and ResourceLayout member to PipelineStateDescShaderResourceDesc structureIShader::GetResourceCount and IShader::GetResource methodsIShaderVariable::GetArraySize and IShaderVariable::GetName methods with IShaderResourceVariable::GetResourceDesc methodHLSLShaderResourceDesc structure as well as IShaderResourceVariableD3D and IShaderResourceVariableD3D interfaces to query HLSL-specific shader resource description (shader register)With the new API, shader initialization and pipeline state creation changed as shown below.
Old API:
New API:
STATE_TRANSITION_TYPE enum and STATE_TRANSITION_TYPE TransitionType member to StateTransitionDesc structureCore:
RESOURCE_STATE enum that defines the resource stateRESOURCE_STATE_TRANSITION_MODE enum that controls resource state transition modeDRAW_FLAGS enum that controls state validation performed by Draw commandFlags member to DrawAttribs structure (values from DRAW_FLAGS)IndirectAttribsBufferStateTransitionMode member to DrawAttribs and DispatchComputeAttribs structures (values from RESOURCE_STATE_TRANSITION_MODE)StateTransitionDesc structure that describes resource state transition barrierIDeviceContext::TransitionResourceStates(Uint32 BarrierCount, StateTransitionDesc* pResourceBarriers) methodIBuffer::SetState(), IBuffer::GetState(), ITexture::SetState(), ITexture::GetState() methodsIShaderResourceBinding::InitializeStaticResources() to explicitly initialize static resources and avoid problems in multi-threaded environmentsInitStaticResources parameter to IPipelineState::CreateShaderResourceBinding() method to allow immediate initialization of static resources in a SRBIBuffer::UpdateData() to IDeviceContext::UpdateBuffer()IBuffer::CopyData() to IDeviceContext::CopyBuffer()IBuffer::Map() to IDeviceContext::MapBuffer()IBuffer::Unmap() to IDeviceContext::UnmapBuffer()ITexture::UpdateData() to IDeviceContext::UpdateTexture()ITexture::CopyData() to IDeviceContext::CopyTexture()ITexture::Map() to IDeviceContext::MapTextureSubresource()ITexture::Unmap() to IDeviceContext::UnmapTextureSubresource()ITextureView::GenerateMips() to IDeviceContext::GenerateMips()IDeviceContext::UpdateBuffer(), IDeviceContext::UpdateTexture(), IDeviceContext::CopyBuffer(), IDeviceContext::CopyTexture(), IDeviceContext::SetVertexBuffers(), IDeviceContext::SetIndexBuffers(), IDeviceContext::ClearRenderTargets(), and IDeviceContext::ClearDepthStencil() methodsCOMMIT_SHADER_RESOURCES_FLAGS enum with RESOURCE_STATE_TRANSITION_MODEITextureD3D12::GetD3D12ResourceState(), IBufferD3D12::GetD3D12ResourceState(), IBufferVk::GetAccessFlags(), and ITextureVk::GetLayout() methodsCopyTextureAttribs structure that combines all parameters of IDeviceContext::CopyTexture() methodUseCombinedTextureSamplers and CombinedSamplerSuffix members to ShaderCreationAttribs structureUseCombinedTextureSamplers == false), samplers are set in the same way as other shader variables via shader or SRB objectsBIND_SHADER_RESOURCES_RESET_BINDINGS flag, renamed BIND_SHADER_RESOURCES_KEEP_EXISTING to BIND_SHADER_RESOURCES_KEEP_EXISTING. Added BIND_SHADER_RESOURCES_UPDATE_STATIC, BIND_SHADER_RESOURCES_UPDATE_MUTABLE, BIND_SHADER_RESOURCES_UPDATE_DYNAMIC, and BIND_SHADER_RESOURCES_UPDATE_ALL flagsIFence interface and IDeviceContext::SignalFence() method to enable CPU-GPU synchronizationBUFFER_MODE_RAW mode allowing raw buffer views in D3D11/D3D12.Format member from BufferDesc to BufferViewDescIsIndirect member from DrawAttrbis as setting pIndirectDrawAttribs to a non-null buffer already indicates indirect renderingNumViewports member to GraphicsPipelineDesc structPRIMITIVE_TOPOLOGY_TYPE typePRIMITIVE_TOPOLOGY_TYPE GraphicsPipelineDesc::PrimitiveTopologyType with PRIMITIVE_TOPOLOGY GraphicsPipelineDesc::PrimitiveTopologyDrawAttribs::TopologypStrides parameter from IDeviceContext::SetVertexBuffers(). Strides are now defined through vertex layout.SetNearFarClipPlanes(), GetNearFarPlaneFromProjMatrix(), Projection(), OrthoOffCenter(), and Ortho() take bIsGL flag instead of bIsDirectXLayoutElement::Stride)COMMIT_SHADER_RESOURCES_FLAG_VERIFY_STATES flagNumViewports member to GraphicsPipelineDesc structureAlpha release of Diligent Engine 2.0. The engine has been updated to take advantages of Direct3D12:
Initial release