Diligent Engine  v.2.4.g
DeviceContextD3D11Impl.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2019-2021 Diligent Graphics LLC
3  * Copyright 2015-2019 Egor Yusov
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * In no event and under no legal theory, whether in tort (including negligence),
18  * contract, or otherwise, unless required by applicable law (such as deliberate
19  * and grossly negligent acts) or agreed to in writing, shall any Contributor be
20  * liable for any damages, including any direct, indirect, special, incidental,
21  * or consequential damages of any character arising as a result of this License or
22  * out of the use or inability to use the software (including but not limited to damages
23  * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
24  * all other commercial damages or losses), even if such Contributor has been advised
25  * of the possibility of such damages.
26  */
27 
28 #pragma once
29 
32 
33 #include <vector>
34 
36 #include "DeviceContextBase.hpp"
37 #include "BufferD3D11Impl.hpp"
38 #include "TextureBaseD3D11.hpp"
40 #include "QueryD3D11Impl.hpp"
41 #include "FramebufferD3D11Impl.hpp"
42 #include "RenderPassD3D11Impl.hpp"
43 #include "DisjointQueryPool.hpp"
44 #include "BottomLevelASBase.hpp"
45 #include "TopLevelASBase.hpp"
47 
48 #ifdef DILIGENT_DEVELOPMENT
49 # define VERIFY_CONTEXT_BINDINGS
50 #endif
51 
52 namespace Diligent
53 {
54 
56 class DeviceContextD3D11Impl final : public DeviceContextBase<EngineD3D11ImplTraits>
57 {
58 public:
60 
62  IMemoryAllocator& Allocator,
63  RenderDeviceD3D11Impl* pDevice,
64  ID3D11DeviceContext* pd3d11DeviceContext,
65  const struct EngineD3D11CreateInfo& EngineAttribs,
66  bool bIsDeferred);
67  virtual void DILIGENT_CALL_TYPE QueryInterface(const INTERFACE_ID& IID, IObject** ppInterface) override final;
68 
70  virtual void DILIGENT_CALL_TYPE SetPipelineState(IPipelineState* pPipelineState) override final;
71 
73  virtual void DILIGENT_CALL_TYPE TransitionShaderResources(IPipelineState* pPipelineState,
74  IShaderResourceBinding* pShaderResourceBinding) override final;
75 
77  virtual void DILIGENT_CALL_TYPE CommitShaderResources(IShaderResourceBinding* pShaderResourceBinding,
78  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
79 
81  virtual void DILIGENT_CALL_TYPE SetStencilRef(Uint32 StencilRef) override final;
82 
84  virtual void DILIGENT_CALL_TYPE SetBlendFactors(const float* pBlendFactors = nullptr) override final;
85 
87  virtual void DILIGENT_CALL_TYPE SetVertexBuffers(Uint32 StartSlot,
88  Uint32 NumBuffersSet,
89  IBuffer** ppBuffers,
90  Uint32* pOffsets,
91  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode,
92  SET_VERTEX_BUFFERS_FLAGS Flags) override final;
93 
95  virtual void DILIGENT_CALL_TYPE InvalidateState() override final;
96 
98  virtual void DILIGENT_CALL_TYPE SetIndexBuffer(IBuffer* pIndexBuffer,
99  Uint32 ByteOffset,
100  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
101 
103  virtual void DILIGENT_CALL_TYPE SetViewports(Uint32 NumViewports,
104  const Viewport* pViewports,
105  Uint32 RTWidth,
106  Uint32 RTHeight) override final;
107 
109  virtual void DILIGENT_CALL_TYPE SetScissorRects(Uint32 NumRects,
110  const Rect* pRects,
111  Uint32 RTWidth,
112  Uint32 RTHeight) override final;
113 
115  virtual void DILIGENT_CALL_TYPE SetRenderTargets(Uint32 NumRenderTargets,
116  ITextureView* ppRenderTargets[],
117  ITextureView* pDepthStencil,
118  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
119 
121  virtual void DILIGENT_CALL_TYPE BeginRenderPass(const BeginRenderPassAttribs& Attribs) override final;
122 
124  virtual void DILIGENT_CALL_TYPE NextSubpass() override final;
125 
127  virtual void DILIGENT_CALL_TYPE EndRenderPass() override final;
128 
130  virtual void DILIGENT_CALL_TYPE Draw(const DrawAttribs& Attribs) override final;
132  virtual void DILIGENT_CALL_TYPE DrawIndexed(const DrawIndexedAttribs& Attribs) override final;
134  virtual void DILIGENT_CALL_TYPE DrawIndirect(const DrawIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
136  virtual void DILIGENT_CALL_TYPE DrawIndexedIndirect(const DrawIndexedIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
138  virtual void DILIGENT_CALL_TYPE DrawMesh(const DrawMeshAttribs& Attribs) override final;
140  virtual void DILIGENT_CALL_TYPE DrawMeshIndirect(const DrawMeshIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
142  virtual void DILIGENT_CALL_TYPE DrawMeshIndirectCount(const DrawMeshIndirectCountAttribs& Attribs, IBuffer* pAttribsBuffer, IBuffer* pCountBuffer) override final;
143 
145  virtual void DILIGENT_CALL_TYPE DispatchCompute(const DispatchComputeAttribs& Attribs) override final;
147  virtual void DILIGENT_CALL_TYPE DispatchComputeIndirect(const DispatchComputeIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
148 
151  CLEAR_DEPTH_STENCIL_FLAGS ClearFlags,
152  float fDepth,
153  Uint8 Stencil,
154  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
155 
157  virtual void DILIGENT_CALL_TYPE ClearRenderTarget(ITextureView* pView, const float* RGBA, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
158 
160  virtual void DILIGENT_CALL_TYPE UpdateBuffer(IBuffer* pBuffer,
161  Uint32 Offset,
162  Uint32 Size,
163  const void* pData,
164  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
165 
167  virtual void DILIGENT_CALL_TYPE CopyBuffer(IBuffer* pSrcBuffer,
168  Uint32 SrcOffset,
169  RESOURCE_STATE_TRANSITION_MODE SrcBufferTransitionMode,
170  IBuffer* pDstBuffer,
171  Uint32 DstOffset,
172  Uint32 Size,
173  RESOURCE_STATE_TRANSITION_MODE DstBufferTransitionMode) override final;
174 
176  virtual void DILIGENT_CALL_TYPE MapBuffer(IBuffer* pBuffer, MAP_TYPE MapType, MAP_FLAGS MapFlags, PVoid& pMappedData) override final;
177 
179  virtual void DILIGENT_CALL_TYPE UnmapBuffer(IBuffer* pBuffer, MAP_TYPE MapType) override final;
180 
182  virtual void DILIGENT_CALL_TYPE UpdateTexture(ITexture* pTexture,
183  Uint32 MipLevel,
184  Uint32 Slice,
185  const Box& DstBox,
186  const TextureSubResData& SubresData,
187  RESOURCE_STATE_TRANSITION_MODE SrcBufferTransitionMode,
188  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
189 
191  virtual void DILIGENT_CALL_TYPE CopyTexture(const CopyTextureAttribs& CopyAttribs) override final;
192 
194  virtual void DILIGENT_CALL_TYPE MapTextureSubresource(ITexture* pTexture,
195  Uint32 MipLevel,
196  Uint32 ArraySlice,
197  MAP_TYPE MapType,
198  MAP_FLAGS MapFlags,
199  const Box* pMapRegion,
200  MappedTextureSubresource& MappedData) override final;
201 
203  virtual void DILIGENT_CALL_TYPE UnmapTextureSubresource(ITexture* pTexture, Uint32 MipLevel, Uint32 ArraySlice) override final;
204 
206  virtual void DILIGENT_CALL_TYPE GenerateMips(ITextureView* pTextureView) override final;
207 
209  virtual void DILIGENT_CALL_TYPE FinishFrame() override final;
210 
212  virtual void DILIGENT_CALL_TYPE TransitionResourceStates(Uint32 BarrierCount, StateTransitionDesc* pResourceBarriers) override final;
213 
215  virtual void DILIGENT_CALL_TYPE ResolveTextureSubresource(ITexture* pSrcTexture,
216  ITexture* pDstTexture,
217  const ResolveTextureSubresourceAttribs& ResolveAttribs) override final;
218 
220  void DILIGENT_CALL_TYPE FinishCommandList(class ICommandList** ppCommandList) override final;
221 
223  virtual void DILIGENT_CALL_TYPE ExecuteCommandLists(Uint32 NumCommandLists,
224  ICommandList* const* ppCommandLists) override final;
225 
227  virtual void DILIGENT_CALL_TYPE SignalFence(IFence* pFence, Uint64 Value) override final;
228 
230  virtual void DILIGENT_CALL_TYPE WaitForFence(IFence* pFence, Uint64 Value, bool FlushContext) override final;
231 
233  virtual void DILIGENT_CALL_TYPE WaitForIdle() override final;
234 
236  virtual void DILIGENT_CALL_TYPE BeginQuery(IQuery* pQuery) override final;
237 
239  virtual void DILIGENT_CALL_TYPE EndQuery(IQuery* pQuery) override final;
240 
242  virtual void DILIGENT_CALL_TYPE Flush() override final;
243 
245  virtual void DILIGENT_CALL_TYPE BuildBLAS(const BuildBLASAttribs& Attribs) override final;
246 
248  virtual void DILIGENT_CALL_TYPE BuildTLAS(const BuildTLASAttribs& Attribs) override final;
249 
251  virtual void DILIGENT_CALL_TYPE CopyBLAS(const CopyBLASAttribs& Attribs) override final;
252 
254  virtual void DILIGENT_CALL_TYPE CopyTLAS(const CopyTLASAttribs& Attribs) override final;
255 
257  virtual void DILIGENT_CALL_TYPE WriteBLASCompactedSize(const WriteBLASCompactedSizeAttribs& Attribs) override final;
258 
260  virtual void DILIGENT_CALL_TYPE WriteTLASCompactedSize(const WriteTLASCompactedSizeAttribs& Attribs) override final;
261 
263  virtual void DILIGENT_CALL_TYPE TraceRays(const TraceRaysAttribs& Attribs) override final;
264 
266  virtual void DILIGENT_CALL_TYPE TraceRaysIndirect(const TraceRaysIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
267 
269  virtual void DILIGENT_CALL_TYPE UpdateSBT(IShaderBindingTable* pSBT, const UpdateIndirectRTBufferAttribs* pUpdateIndirectBufferAttribs) override final;
270 
272  virtual ID3D11DeviceContext* DILIGENT_CALL_TYPE GetD3D11DeviceContext() override final { return m_pd3d11DeviceContext; }
273 
274  void CommitRenderTargets();
275 
283 
285  virtual void ResetRenderTargets() override final;
286 
287  void TransitionResource(TextureBaseD3D11& Texture, RESOURCE_STATE NewState, RESOURCE_STATE OldState = RESOURCE_STATE_UNKNOWN, bool UpdateResourceState = true);
288  void TransitionResource(BufferD3D11Impl& Buffer, RESOURCE_STATE NewState, RESOURCE_STATE OldState = RESOURCE_STATE_UNKNOWN, bool UpdateResourceState = true);
289 
290 private:
292  void CommitD3D11IndexBuffer(VALUE_TYPE IndexType);
293 
295  void CommitD3D11VertexBuffers(class PipelineStateD3D11Impl* pPipelineStateD3D11);
296 
298  template <typename TD3D11ResourceViewType,
299  typename TSetD3D11View,
300  size_t NumSlots>
301  void UnbindResourceView(TD3D11ResourceViewType CommittedD3D11ViewsArr[][NumSlots],
302  ID3D11Resource* CommittedD3D11ResourcesArr[][NumSlots],
303  Uint8 NumCommittedResourcesArr[],
304  ID3D11Resource* pd3d11ResToUndind,
305  TSetD3D11View SetD3D11ViewMethods[]);
306 
310  void UnbindTextureFromInput(TextureBaseD3D11* pTexture, ID3D11Resource* pd3d11Resource);
311 
316  void UnbindBufferFromInput(BufferD3D11Impl* pBuffer, ID3D11Resource* pd3d11Buffer);
317 
321  void UnbindResourceFromUAV(IDeviceObject* pResource, ID3D11Resource* pd3d11Resource);
322 
324  void UnbindTextureFromRenderTarget(TextureBaseD3D11* pResource);
325 
327  void UnbindTextureFromDepthStencil(TextureBaseD3D11* pTexD3D11);
328 
330  __forceinline void PrepareForDraw(DRAW_FLAGS Flags);
331 
333  __forceinline void PrepareForIndexedDraw(DRAW_FLAGS Flags, VALUE_TYPE IndexType);
334 
336  void BeginSubpass();
338  void EndSubpass();
339 
340  void ClearStateCache();
341 
342  void BindShaderResources();
343 
344  static constexpr int NumShaderTypes = D3D11ResourceBindPoints::NumShaderTypes;
345  struct TCommittedResources
346  {
347  // clang-format off
348 
352  ID3D11Buffer* d3d11CBs [NumShaderTypes][D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = {};
353 
357  ID3D11ShaderResourceView* d3d11SRVs [NumShaderTypes][D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT] = {};
358 
362  ID3D11SamplerState* d3d11Samplers[NumShaderTypes][D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT] = {};
363 
367  ID3D11UnorderedAccessView* d3d11UAVs [NumShaderTypes][D3D11_PS_CS_UAV_REGISTER_COUNT] = {};
368 
372  ID3D11Resource* d3d11SRVResources [NumShaderTypes][D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT] = {};
373 
377  ID3D11Resource* d3d11UAVResources [NumShaderTypes][D3D11_PS_CS_UAV_REGISTER_COUNT] = {};
378 
379  Uint8 NumCBs [NumShaderTypes] = {};
380  Uint8 NumSRVs [NumShaderTypes] = {};
381  Uint8 NumSamplers[NumShaderTypes] = {};
382  Uint8 NumUAVs [NumShaderTypes] = {};
383 
384  // clang-format on
385 
386  void Clear()
387  {
388  *this = {};
389  }
390  };
391 
392  enum PixelShaderUAVBindMode
393  {
394  Clear = 0,
395  Keep,
396  Bind
397  };
398 
399  void BindCacheResources(const ShaderResourceCacheD3D11& ResourceCache,
400  const D3D11ShaderResourceCounters& BaseBindings,
401  PixelShaderUAVBindMode& PsUavBindMode);
402 
403 #ifdef DILIGENT_DEVELOPMENT
404  void DvpValidateCommittedShaderResources();
405 #endif
406 
407  std::shared_ptr<DisjointQueryPool::DisjointQueryWrapper> BeginDisjointQuery();
408 
409  CComPtr<ID3D11DeviceContext> m_pd3d11DeviceContext;
410 
411  struct BindInfo : CommittedShaderResources
412  {
413  // Shader stages that are active in current PSO.
414  SHADER_TYPE ActiveStages = SHADER_TYPE_UNKNOWN;
415 
416 #ifdef DILIGENT_DEVELOPMENT
417  // Base bindings that were used in the last BindShaderResources() call.
418  std::array<D3D11ShaderResourceCounters, MAX_RESOURCE_SIGNATURES> BaseBindings = {};
419 #endif
420  void Invalidate()
421  {
422  *this = {};
423  }
424  } m_BindInfo;
425 
426  TCommittedResources m_CommittedRes;
427 
432  ID3D11Buffer* m_CommittedD3D11VertexBuffers[MAX_BUFFER_SLOTS] = {};
434  UINT m_CommittedD3D11VBStrides[MAX_BUFFER_SLOTS] = {};
436  UINT m_CommittedD3D11VBOffsets[MAX_BUFFER_SLOTS] = {};
438  UINT m_NumCommittedD3D11VBs = 0;
440  bool m_bCommittedD3D11VBsUpToDate = false;
441 
445  ID3D11InputLayout* m_CommittedD3D11InputLayout = nullptr;
446 
449  CComPtr<ID3D11Buffer> m_CommittedD3D11IndexBuffer;
451  VALUE_TYPE m_CommittedIBFormat = VT_UNDEFINED;
453  Uint32 m_CommittedD3D11IndexDataStartOffset = 0;
455  bool m_bCommittedD3D11IBUpToDate = false;
456 
457  D3D11_PRIMITIVE_TOPOLOGY m_CommittedD3D11PrimTopology = D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED;
458  PRIMITIVE_TOPOLOGY m_CommittedPrimitiveTopology = PRIMITIVE_TOPOLOGY_UNDEFINED;
459 
461  CComPtr<ID3D11DeviceChild> m_CommittedD3DShaders[NumShaderTypes];
462 
463  const Uint32 m_DebugFlags;
464 
465  FixedBlockMemoryAllocator m_CmdListAllocator;
466 
467  DisjointQueryPool m_DisjointQueryPool;
468  std::shared_ptr<DisjointQueryPool::DisjointQueryWrapper> m_ActiveDisjointQuery;
469 
470  std::vector<OptimizedClearValue> m_AttachmentClearValues;
471 
472 #ifdef VERIFY_CONTEXT_BINDINGS
473 
475  template <UINT MaxResources, typename TD3D11ResourceType, typename TGetD3D11ResourcesType>
476  void DvpVerifyCommittedResources(TD3D11ResourceType CommittedD3D11ResourcesArr[][MaxResources],
477  Uint8 NumCommittedResourcesArr[],
478  TGetD3D11ResourcesType GetD3D11ResMethods[],
479  const Char* ResourceName,
480  SHADER_TYPE ShaderStages);
481 
483  template <UINT MaxResources, typename TD3D11ViewType>
484  void DvpVerifyViewConsistency(TD3D11ViewType CommittedD3D11ViewArr[][MaxResources],
485  ID3D11Resource* CommittedD3D11ResourcesArr[][MaxResources],
486  Uint8 NumCommittedResourcesArr[],
487  const Char* ResourceName,
488  SHADER_TYPE ShaderStages);
489 
492  void DvpVerifyCommittedSRVs(SHADER_TYPE ShaderStages);
493 
496  void DvpVerifyCommittedUAVs(SHADER_TYPE ShaderStages);
497 
500  void DvpVerifyCommittedSamplers(SHADER_TYPE ShaderStages);
501 
504  void DvpVerifyCommittedCBs(SHADER_TYPE ShaderStages);
505 
509  void DvpVerifyCommittedIndexBuffer();
510 
514  void DvpVerifyCommittedVertexBuffers();
515 
519  void DvpVerifyCommittedShaders();
520 
521 #endif // VERIFY_CONTEXT_BINDINGS
522 };
523 
524 } // namespace Diligent
Diligent::MAP_FLAGS
MAP_FLAGS
Special map flags.
Definition: GraphicsTypes.h:227
ShaderResourceBindingD3D11Impl.hpp
Diligent::IReferenceCounters
Base interface for a reference counter object that stores the number of strong and weak references an...
Definition: ReferenceCounters.h:44
Diligent::PVoid
void * PVoid
Definition: BasicTypes.h:56
Diligent::DeviceContextD3D11Impl::UpdateSBT
virtual void UpdateSBT(IShaderBindingTable *pSBT, const UpdateIndirectRTBufferAttribs *pUpdateIndirectBufferAttribs) override final
Implementation of IDeviceContext::UpdateSBT().
Definition: DeviceContextD3D11Impl.cpp:2087
Diligent::DeviceContextD3D11Impl::BuildTLAS
virtual void BuildTLAS(const BuildTLASAttribs &Attribs) override final
Implementation of IDeviceContext::BuildTLAS().
Definition: DeviceContextD3D11Impl.cpp:2052
Diligent::Char
char Char
Definition: BasicTypes.h:64
Diligent::DeviceContextD3D11Impl::ResetRenderTargets
virtual void ResetRenderTargets() override final
Unbinds all render targets. Used when resizing the swap chain.
Definition: DeviceContextD3D11Impl.cpp:1331
Diligent::UpdateIndirectRTBufferAttribs
This structure is used by IDeviceContext::UpdateSBT().
Definition: DeviceContext.h:1303
Diligent::TraceRaysIndirectAttribs
This structure is used by IDeviceContext::TraceRaysIndirect().
Definition: DeviceContext.h:1284
Diligent::IShaderResourceBinding
Shader resource binding interface.
Definition: ShaderResourceBinding.h:58
Diligent::DeviceContextD3D11Impl::CopyTexture
virtual void CopyTexture(const CopyTextureAttribs &CopyAttribs) override final
Implementation of IDeviceContext::CopyTexture() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:859
Diligent::TraceRaysAttribs
This structure is used by IDeviceContext::TraceRays().
Definition: DeviceContext.h:1267
Diligent::DeviceContextD3D11Impl::BeginRenderPass
virtual void BeginRenderPass(const BeginRenderPassAttribs &Attribs) override final
Implementation of IDeviceContext::BeginRenderPass() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1513
Diligent::BeginRenderPassAttribs
BeginRenderPass command attributes.
Definition: DeviceContext.h:731
Diligent::SHADER_TYPE
SHADER_TYPE
Describes the shader type.
Definition: GraphicsTypes.h:65
Diligent::IShaderBindingTable
Shader binding table interface.
Definition: ShaderBindingTable.h:93
Diligent::DeviceContextD3D11Impl::GetD3D11DeviceContext
virtual ID3D11DeviceContext * GetD3D11DeviceContext() override final
Implementation of IDeviceContextD3D11::GetD3D11DeviceContext().
Definition: DeviceContextD3D11Impl.hpp:272
Diligent::DeviceContextD3D11Impl::FinishFrame
virtual void FinishFrame() override final
Implementation of IDeviceContext::FinishFrame() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:934
Diligent::DeviceContextD3D11Impl::SetBlendFactors
virtual void SetBlendFactors(const float *pBlendFactors=nullptr) override final
Implementation of IDeviceContext::SetBlendFactors() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:411
Diligent::DrawMeshIndirectCountAttribs
Defines the mesh indirect draw count command attributes.
Definition: DeviceContext.h:440
Diligent::IPipelineState
Pipeline state interface.
Definition: PipelineState.h:505
Diligent::RESOURCE_STATE_TRANSITION_MODE
RESOURCE_STATE_TRANSITION_MODE
Defines resource state transition mode performed by various commands.
Definition: DeviceContext.h:136
Diligent::DeviceContextD3D11Impl::BeginQuery
virtual void BeginQuery(IQuery *pQuery) override final
Implementation of IDeviceContext::BeginQuery() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1771
Flags
Uint32 Flags
Definition: DXBCUtils.cpp:71
Diligent::CLEAR_DEPTH_STENCIL_FLAGS
CLEAR_DEPTH_STENCIL_FLAGS
Defines which parts of the depth-stencil buffer to clear.
Definition: DeviceContext.h:483
Diligent::IObject
Base interface for all dynamic objects in the engine.
Definition: Object.h:41
Diligent::Uint64
uint64_t Uint64
64-bit unsigned integer
Definition: BasicTypes.h:50
Diligent::DeviceContextD3D11Impl::NextSubpass
virtual void NextSubpass() override final
Implementation of IDeviceContext::NextSubpass() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1528
Diligent::DeviceContextD3D11Impl::WriteBLASCompactedSize
virtual void WriteBLASCompactedSize(const WriteBLASCompactedSizeAttribs &Attribs) override final
Implementation of IDeviceContext::WriteBLASCompactedSize().
Definition: DeviceContextD3D11Impl.cpp:2067
DisjointQueryPool.hpp
Diligent::WriteBLASCompactedSizeAttribs
This structure is used by IDeviceContext::WriteBLASCompactedSize().
Definition: DeviceContext.h:1217
Diligent::DeviceContextD3D11Impl
Device context implementation in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.hpp:56
Diligent::PRIMITIVE_TOPOLOGY
PRIMITIVE_TOPOLOGY
Input primitive topology.
Definition: GraphicsTypes.h:989
Diligent::WriteTLASCompactedSizeAttribs
This structure is used by IDeviceContext::WriteTLASCompactedSize().
Definition: DeviceContext.h:1242
Diligent::DeviceContextD3D11Impl::DispatchCompute
virtual void DispatchCompute(const DispatchComputeAttribs &Attribs) override final
Implementation of IDeviceContext::DispatchCompute() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:642
Diligent::ITextureView
Texture view interface.
Definition: TextureView.h:202
Diligent::DeviceContextD3D11Impl::WriteTLASCompactedSize
virtual void WriteTLASCompactedSize(const WriteTLASCompactedSizeAttribs &Attribs) override final
Implementation of IDeviceContext::WriteTLASCompactedSize().
Definition: DeviceContextD3D11Impl.cpp:2072
Diligent::PipelineStateD3D11Impl
Pipeline state object implementation in Direct3D11 backend.
Definition: PipelineStateD3D11Impl.hpp:43
Diligent::DeviceContextD3D11Impl::SetIndexBuffer
virtual void SetIndexBuffer(IBuffer *pIndexBuffer, Uint32 ByteOffset, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::SetIndexBuffer() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:983
Diligent::DXBCUtils::BindInfo
ResourceBinding::BindInfo BindInfo
Definition: DXBCUtils.hpp:40
Diligent::DrawMeshAttribs
Defines the mesh draw command attributes.
Definition: DeviceContext.h:376
Diligent::VT_UNDEFINED
@ VT_UNDEFINED
Undefined type.
Definition: GraphicsTypes.h:51
Diligent::Box
Box.
Definition: GraphicsTypes.h:2407
Diligent::MappedTextureSubresource
Definition: Texture.h:245
Diligent::DeviceContextD3D11Impl::SetPipelineState
virtual void SetPipelineState(IPipelineState *pPipelineState) override final
Implementation of IDeviceContext::SetPipelineState() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:70
Diligent::EngineD3D11CreateInfo
Attributes specific to D3D11 engine.
Definition: GraphicsTypes.h:2082
Diligent::IDeviceObject
Base interface for all objects created by the render device Diligent::IRenderDevice.
Definition: DeviceObject.h:52
Diligent::TextureBaseD3D11
Base implementation of a texture object in Direct3D11 backend.
Definition: TextureBaseD3D11.hpp:44
Diligent::DeviceContextD3D11Impl::SetScissorRects
virtual void SetScissorRects(Uint32 NumRects, const Rect *pRects, Uint32 RTWidth, Uint32 RTHeight) override final
Implementation of IDeviceContext::SetScissorRects() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1033
Diligent::INTERFACE_ID
Unique interface identifier.
Definition: InterfaceID.h:37
Diligent::IBuffer
Buffer interface.
Definition: Buffer.h:187
DeviceContextBase.hpp
Diligent::DeviceContextD3D11Impl::TransitionResource
void TransitionResource(TextureBaseD3D11 &Texture, RESOURCE_STATE NewState, RESOURCE_STATE OldState=RESOURCE_STATE_UNKNOWN, bool UpdateResourceState=true)
Definition: DeviceContextD3D11Impl.cpp:1922
Diligent::DeviceContextD3D11Impl::ClearRenderTarget
virtual void ClearRenderTarget(ITextureView *pView, const float *RGBA, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::ClearRenderTarget() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:715
Diligent::DeviceContextD3D11Impl::Flush
virtual void Flush() override final
Implementation of IDeviceContext::Flush() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:733
FramebufferD3D11Impl.hpp
Diligent::DeviceContextD3D11Impl::DispatchComputeIndirect
virtual void DispatchComputeIndirect(const DispatchComputeIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::DispatchComputeIndirect() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:667
Diligent::DeviceContextD3D11Impl::CommitShaderResources
virtual void CommitShaderResources(IShaderResourceBinding *pShaderResourceBinding, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::CommitShaderResources() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:198
Diligent::DeviceContextD3D11Impl::DrawIndexedIndirect
virtual void DrawIndexedIndirect(const DrawIndexedIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::DrawIndexedIndirect() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:616
PipelineStateD3D11Impl.hpp
Diligent::DeviceContextD3D11Impl::FinishCommandList
void FinishCommandList(class ICommandList **ppCommandList) override final
Implementation of IDeviceContext::FinishCommandList() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1632
Diligent::DeviceContextD3D11Impl::CopyTLAS
virtual void CopyTLAS(const CopyTLASAttribs &Attribs) override final
Implementation of IDeviceContext::CopyTLAS().
Definition: DeviceContextD3D11Impl.cpp:2062
Diligent::DeviceContextD3D11Impl::ClearDepthStencil
virtual void ClearDepthStencil(ITextureView *pView, CLEAR_DEPTH_STENCIL_FLAGS ClearFlags, float fDepth, Uint8 Stencil, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::ClearDepthStencil() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:694
Diligent::StateTransitionDesc
Resource state transition barrier description.
Definition: DeviceContext.h:1333
Diligent::DeviceContextD3D11Impl::InvalidateState
virtual void InvalidateState() override final
Implementation of IDeviceContext::InvalidateState() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1835
Diligent::ICommandList
Command list interface.
Definition: CommandList.h:48
Diligent::DeviceContextD3D11Impl::Draw
virtual void Draw(const DrawAttribs &Attribs) override final
Implementation of IDeviceContext::Draw() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:580
Diligent::DeviceContextD3D11Impl::DeviceContextD3D11Impl
DeviceContextD3D11Impl(IReferenceCounters *pRefCounters, IMemoryAllocator &Allocator, RenderDeviceD3D11Impl *pDevice, ID3D11DeviceContext *pd3d11DeviceContext, const struct EngineD3D11CreateInfo &EngineAttribs, bool bIsDeferred)
Definition: DeviceContextD3D11Impl.cpp:48
Diligent::SET_VERTEX_BUFFERS_FLAGS
SET_VERTEX_BUFFERS_FLAGS
Defines allowed flags for IDeviceContext::SetVertexBuffers() function.
Definition: DeviceContext.h:578
Diligent::DeviceContextD3D11Impl::MapBuffer
virtual void MapBuffer(IBuffer *pBuffer, MAP_TYPE MapType, MAP_FLAGS MapFlags, PVoid &pMappedData) override final
Implementation of IDeviceContext::MapBuffer() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:788
Diligent::D3D11ShaderResourceCounters
std::array< D3D11ResourceRangeCounters, D3D11_RESOURCE_RANGE_COUNT > D3D11ShaderResourceCounters
Resource counters for all shader stages and all resource types.
Definition: PipelineResourceAttribsD3D11.hpp:271
Diligent::DeviceContextD3D11Impl::ExecuteCommandLists
virtual void ExecuteCommandLists(Uint32 NumCommandLists, ICommandList *const *ppCommandLists) override final
Implementation of IDeviceContext::ExecuteCommandLists() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1669
Diligent::ResolveTextureSubresourceAttribs
Describes multi-sampled texture resolve command arguments.
Definition: DeviceContext.h:549
Diligent::DispatchComputeIndirectAttribs
Describes dispatch command arguments.
Definition: DeviceContext.h:523
Diligent::DeviceContextD3D11Impl::EndRenderPass
virtual void EndRenderPass() override final
Implementation of IDeviceContext::EndRenderPass() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1537
Diligent::VALUE_TYPE
VALUE_TYPE
Value type.
Definition: GraphicsTypes.h:49
Diligent::DeviceContextD3D11Impl::TraceRays
virtual void TraceRays(const TraceRaysAttribs &Attribs) override final
Implementation of IDeviceContext::TraceRays().
Definition: DeviceContextD3D11Impl.cpp:2077
Diligent::DrawIndexedIndirectAttribs
Defines the indexed indirect draw command attributes.
Definition: DeviceContext.h:330
Diligent::DeviceContextD3D11Impl::SignalFence
virtual void SignalFence(IFence *pFence, Uint64 Value) override final
Implementation of IDeviceContext::SignalFence() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1728
DILIGENT_CALL_TYPE
#define DILIGENT_CALL_TYPE
Definition: CommonDefinitions.h:45
Diligent::DeviceContextD3D11Impl::TransitionShaderResources
virtual void TransitionShaderResources(IPipelineState *pPipelineState, IShaderResourceBinding *pShaderResourceBinding) override final
Implementation of IDeviceContext::TransitionShaderResources() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:182
Diligent::DeviceContextD3D11Impl::DrawIndexed
virtual void DrawIndexed(const DrawIndexedAttribs &Attribs) override final
Implementation of IDeviceContext::DrawIndexed() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:592
Diligent::BuildTLASAttribs
This structure is used by IDeviceContext::BuildTLAS().
Definition: DeviceContext.h:1082
Diligent::Uint32
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
Diligent::DeviceContextD3D11Impl::WaitForFence
virtual void WaitForFence(IFence *pFence, Uint64 Value, bool FlushContext) override final
Implementation of IDeviceContext::WaitForFence() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1738
Diligent::DrawMeshIndirectAttribs
Defines the mesh indirect draw command attributes.
Definition: DeviceContext.h:402
Diligent::DeviceContextD3D11Impl::ReleaseCommittedShaderResources
void ReleaseCommittedShaderResources()
Clears committed shader resource cache. This function is called once per frame (before present) to re...
Definition: DeviceContextD3D11Impl.cpp:1591
Diligent::PRIMITIVE_TOPOLOGY_UNDEFINED
@ PRIMITIVE_TOPOLOGY_UNDEFINED
Undefined topology.
Definition: GraphicsTypes.h:992
Diligent::DeviceContextBase
Base implementation of the device context.
Definition: DeviceContextBase.hpp:107
Diligent::Viewport
Describes the viewport.
Definition: DeviceContext.h:593
Diligent::DispatchComputeAttribs
Describes dispatch command arguments.
Definition: DeviceContext.h:500
Diligent::DeviceContextD3D11Impl::ResolveTextureSubresource
virtual void ResolveTextureSubresource(ITexture *pSrcTexture, ITexture *pDstTexture, const ResolveTextureSubresourceAttribs &ResolveAttribs) override final
Implementation of IDeviceContext::ResolveTextureSubresource() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:2014
Diligent::SHADER_TYPE_UNKNOWN
@ SHADER_TYPE_UNKNOWN
Unknown shader type.
Definition: GraphicsTypes.h:67
Diligent::DeviceContextD3D11Impl::DrawMeshIndirect
virtual void DrawMeshIndirect(const DrawMeshIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::DrawMeshIndirect() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:632
Diligent::RESOURCE_STATE_UNKNOWN
@ RESOURCE_STATE_UNKNOWN
The resource state is not known to the engine and is managed by the application.
Definition: GraphicsTypes.h:2817
Diligent::D3D11ResourceBindPoints
Resource binding points in all shader stages.
Definition: PipelineResourceAttribsD3D11.hpp:56
Diligent::DeviceContextD3D11Impl::SetVertexBuffers
virtual void SetVertexBuffers(Uint32 StartSlot, Uint32 NumBuffersSet, IBuffer **ppBuffers, Uint32 *pOffsets, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode, SET_VERTEX_BUFFERS_FLAGS Flags) override final
Implementation of IDeviceContext::SetVertexBuffers() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:946
Diligent::DeviceContextD3D11Impl::TransitionResourceStates
virtual void TransitionResourceStates(Uint32 BarrierCount, StateTransitionDesc *pResourceBarriers) override final
Implementation of IDeviceContext::TransitionResourceStates() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1887
Diligent::DeviceContextD3D11Impl::CopyBuffer
virtual void CopyBuffer(IBuffer *pSrcBuffer, Uint32 SrcOffset, RESOURCE_STATE_TRANSITION_MODE SrcBufferTransitionMode, IBuffer *pDstBuffer, Uint32 DstOffset, Uint32 Size, RESOURCE_STATE_TRANSITION_MODE DstBufferTransitionMode) override final
Implementation of IDeviceContext::CopyBuffer() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:764
Diligent::BufferD3D11Impl
Buffer object implementation in Direct3D11 backend.
Definition: BufferD3D11Impl.hpp:42
Diligent::BuildBLASAttribs
This structure is used by IDeviceContext::BuildBLAS().
Definition: DeviceContext.h:925
Diligent::CopyBLASAttribs
This structure is used by IDeviceContext::CopyBLAS().
Definition: DeviceContext.h:1159
Diligent::DeviceContextD3D11Impl::UpdateBuffer
virtual void UpdateBuffer(IBuffer *pBuffer, Uint32 Offset, Uint32 Size, const void *pData, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::UpdateBuffer() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:743
Diligent::DeviceContextD3D11Impl::SetViewports
virtual void SetViewports(Uint32 NumViewports, const Viewport *pViewports, Uint32 RTWidth, Uint32 RTHeight) override final
Implementation of IDeviceContext::SetViewports() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1012
Diligent::DeviceContextD3D11Impl::DrawMeshIndirectCount
virtual void DrawMeshIndirectCount(const DrawMeshIndirectCountAttribs &Attribs, IBuffer *pAttribsBuffer, IBuffer *pCountBuffer) override final
Implementation of IDeviceContext::DrawMeshIndirectCount() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:637
Diligent::DeviceContextD3D11Impl::SetStencilRef
virtual void SetStencilRef(Uint32 StencilRef) override final
Implementation of IDeviceContext::SetStencilRef() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:400
Diligent::DrawIndirectAttribs
Defines the indirect draw command attributes.
Definition: DeviceContext.h:291
Diligent::IMemoryAllocator
Base interface for a raw memory allocator.
Definition: MemoryAllocator.h:41
Diligent::DeviceContextD3D11Impl::EndQuery
virtual void EndQuery(IQuery *pQuery) override final
Implementation of IDeviceContext::EndQuery() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1787
Diligent::DeviceContextD3D11Impl::CopyBLAS
virtual void CopyBLAS(const CopyBLASAttribs &Attribs) override final
Implementation of IDeviceContext::CopyBLAS().
Definition: DeviceContextD3D11Impl.cpp:2057
Diligent::DRAW_FLAGS
DRAW_FLAGS
Draw command flags.
Definition: DeviceContext.h:68
Diligent::DeviceContextD3D11Impl::GenerateMips
virtual void GenerateMips(ITextureView *pTextureView) override final
Implementation of IDeviceContext::GenerateMips() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:926
Diligent::DeviceContextD3D11Impl::WaitForIdle
virtual void WaitForIdle() override final
Implementation of IDeviceContext::WaitForIdle() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1747
Diligent::CopyTLASAttribs
This structure is used by IDeviceContext::CopyTLAS().
Definition: DeviceContext.h:1188
Diligent::IFence
Fence interface.
Definition: Fence.h:62
Diligent::DrawIndexedAttribs
Defines the indexed draw command attributes.
Definition: DeviceContext.h:224
Diligent::DeviceContextD3D11Impl::QueryInterface
virtual void QueryInterface(const INTERFACE_ID &IID, IObject **ppInterface) override final
Diligent::DeviceContextD3D11Impl::CommitRenderTargets
void CommitRenderTargets()
Definition: DeviceContextD3D11Impl.cpp:1053
Diligent::DeviceContextD3D11Impl::UpdateTexture
virtual void UpdateTexture(ITexture *pTexture, Uint32 MipLevel, Uint32 Slice, const Box &DstBox, const TextureSubResData &SubresData, RESOURCE_STATE_TRANSITION_MODE SrcBufferTransitionMode, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::UpdateTexture() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:814
EngineD3D11ImplTraits.hpp
Diligent::IQuery
Query interface.
Definition: Query.h:177
TextureBaseD3D11.hpp
Diligent::Uint8
uint8_t Uint8
8-bit unsigned integer
Definition: BasicTypes.h:53
Diligent::DeviceContextD3D11Impl::TraceRaysIndirect
virtual void TraceRaysIndirect(const TraceRaysIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::TraceRaysIndirect().
Definition: DeviceContextD3D11Impl.cpp:2082
Diligent::DeviceContextD3D11Impl::SetRenderTargets
virtual void SetRenderTargets(Uint32 NumRenderTargets, ITextureView *ppRenderTargets[], ITextureView *pDepthStencil, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::SetRenderTargets() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:1337
Diligent::RenderDeviceD3D11Impl
Render device implementation in Direct3D11 backend.
Definition: RenderDeviceD3D11Impl.hpp:40
Diligent::Rect
Describes the rectangle.
Definition: DeviceContext.h:642
Diligent::DeviceContextD3D11Impl::MapTextureSubresource
virtual void MapTextureSubresource(ITexture *pTexture, Uint32 MipLevel, Uint32 ArraySlice, MAP_TYPE MapType, MAP_FLAGS MapFlags, const Box *pMapRegion, MappedTextureSubresource &MappedData) override final
Implementation of IDeviceContext::MapTextureSubresource() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:884
BottomLevelASBase.hpp
Diligent::DeviceContextD3D11Impl::DrawMesh
virtual void DrawMesh(const DrawMeshAttribs &Attribs) override final
Implementation of IDeviceContext::DrawMesh() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:627
Diligent::DrawAttribs
Defines the draw command attributes.
Definition: DeviceContext.h:169
Diligent::DeviceContextD3D11Impl::UnmapTextureSubresource
virtual void UnmapTextureSubresource(ITexture *pTexture, Uint32 MipLevel, Uint32 ArraySlice) override final
Implementation of IDeviceContext::UnmapTextureSubresource() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:916
Diligent::RESOURCE_STATE
RESOURCE_STATE
Resource usage state.
Definition: GraphicsTypes.h:2814
Diligent::DeviceContextD3D11Impl::DrawIndirect
virtual void DrawIndirect(const DrawIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::DrawIndirect() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:604
Diligent::DeviceContextD3D11Impl::BuildBLAS
virtual void BuildBLAS(const BuildBLASAttribs &Attribs) override final
Implementation of IDeviceContext::BuildBLAS().
Definition: DeviceContextD3D11Impl.cpp:2047
Diligent::MAP_TYPE
MAP_TYPE
Resource mapping type.
Definition: GraphicsTypes.h:206
Diligent::CopyTextureAttribs
Defines copy texture command attributes.
Definition: DeviceContext.h:672
TopLevelASBase.hpp
BufferD3D11Impl.hpp
static
#define static
Definition: GLSLDefinitions.h:73
RenderPassD3D11Impl.hpp
Diligent::ITexture
Texture inteface.
Definition: Texture.h:273
Diligent::DeviceContextD3D11Impl::UnmapBuffer
virtual void UnmapBuffer(IBuffer *pBuffer, MAP_TYPE MapType) override final
Implementation of IDeviceContext::UnmapBuffer() in Direct3D11 backend.
Definition: DeviceContextD3D11Impl.cpp:807
Diligent
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37
QueryD3D11Impl.hpp
Diligent::TextureSubResData
Describes data for one subresource.
Definition: Texture.h:165