EngineWebGPUCreateInfo
IEngineFactoryWebGPU
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 ShaderMacroArray
ResourceMappingDesc
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 ImmediateContextMask
pContext
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,
TextureCapsto
TextureProperties; added
BufferProperties,
RayTracingProperties, and
MeshShaderPropertiesstructs
Removed
DeviceLimitsstruct
Removed
DeviceCapsstruct and moved its members to
GraphicsAdapterInfoand
RenderDeviceInfostructs
Added
NativeFenceto
DeviceFeatures
Added
CommandQueueInfostruct
Added
COMMAND_QUEUE_TYPEand
QUEUE_PRIORITYenums
Renamed
ShaderVersionstruct to
Version
Reworked
GraphicsAdapterInfostruct
Added
ImmediateContextCreateInfostruct and
pImmediateContextInfo,
NumImmediateContextsmembers to
EngineCreateInfostruct
Added
AdapterIdand
GraphicsAPIVersionmembers to
EngineCreateInfostruct
Removed
DIRECT3D_FEATURE_LEVELenum
Added
FENCE_TYPEenum
Renamed
IFence::Resetto
IFence::Signal; added
IFence::Waitmethod
Added
IEngineFactory::EnumerateAdaptersmethod
Added
DeviceContextDescstruct and
IDeviceContext::GetDescmethod
Added
IDeviceContext::Beginmethod, renamed
IDeviceContext::SignalFenceto
IDeviceContext::EnqueueSignal
Added debug annotations
IDeviceContext::BeginDebugGroup,
IDeviceContext::EndDebugGroup,
IDeviceContext::InsertDebugLabel<tt>(API Version 240095)DefaultVariableMergeStagesmember to
PipelineResourceLayoutDescstruct (API240094)
IShaderResourceVariable::SetBufferRangeand
IShaderResourceVariable::SetBufferOffsetmethods, added
DeviceLimitsstruct (API240093)
MEMORY_PROPERTIESenum,
IBuffer::GetMemoryProperties(),
IBuffer::FlushMappedRange(), and
IBuffer::InvalidateMappedRange()methods (API240092)
IDeviceContext::SetUserData()and
IDeviceContext::GetUserData()methods (API240091)
SHADER_VARIABLE_FLAGSenum and
SHADER_VARIABLE_FLAGS Flagsmember to ShaderResourceVariableDesc struct (API240090)
VALIDATION_FLAGSand
D3D12_VALIDATION_FLAGSenums; renamed
D3D11_DEBUG_FLAGSto
D3D11_VALIDATION_FLAGS
VALIDATION_FLAGS ValidationFlagsand
bool EnableValidationto
EngineCreateInfo
D3D12_VALIDATION_FLAGS D3D12ValidationFlagsto
EngineD3D12CreateInfo; removed
EnableDebugLayer,
EnableGPUBasedValidation,
BreakOnError,
BreakOnCorruption
VALIDATION_LEVELenum and
SetValidationLevel()‘ 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
-> ImmutableSamplerDesc
PipelineResourceLayoutDesc::NumStaticSamplers
-> PipelineResourceLayoutDesc::NumImmutableSamplers
PipelineResourceLayoutDesc::StaticSamplers
-> PipelineResourceLayoutDesc::ImmutableSamplers
Refactored pipeline state creation (API Version 240075)
PipelineStateCreateInfo
with GraphicsPipelineStateCreateInfo
and ComputePipelineStateCreateInfo
IRenderDevice::CreatePipelineState
with IRenderDevice::CreateGraphicsPipelineState
and IRenderDevice::CreateComputePipelineState
pVS
, pGS
, pHS
, pDS
, pPS
, pAS
, pMS
were moved from GraphicsPipelineDesc
to GraphicsPipelineStateCreateInfo
GraphicsPipelineDesc GraphicsPipeline
was moved from PipelineStateDesc
to GraphicsPipelineStateCreateInfo
pCS
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_STATE
DeviceFeatures Features
member to EngineCreateInfo
structPIPELINE_TYPE
enumIsComputePipline
member of PipelineStateDesc
struct with PIPELINE_TYPE PipelineType
QUERY_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_STAGING
SWAP_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
-> IShaderResourceVariable
SHADER_VARIABLE_TYPE
-> SHADER_RESOURCE_VARIABLE_TYPE
ShaderVariableDesc
-> ShaderResourceVariableDesc
SHADER_RESOURCE_TYPE
enumIShader::GetVariable
, IShader::GetVariableCount
, and IShader::BindResources
methodsIPipelineState::BindStaticResoruces
, IPipelineState::GetStaticVariableCount
, and IPipelineState::GetStaticShaderVariable
methodsPipelineResourceLayoutDesc
structure and ResourceLayout
member to PipelineStateDesc
ShaderResourceDesc
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_MODE
ITextureD3D12::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 BufferViewDesc
IsIndirect
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::PrimitiveTopology
DrawAttribs::Topology
pStrides
parameter from IDeviceContext::SetVertexBuffers()
. Strides are now defined through vertex layout.SetNearFarClipPlanes()
, GetNearFarPlaneFromProjMatrix()
, Projection()
, OrthoOffCenter()
, and Ortho()
take bIsGL
flag instead of bIsDirectX
LayoutElement::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