Diligent Engine  v.2.4.g
DeviceContextGLImpl.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 
30 #include <vector>
31 
32 #include "EngineGLImplTraits.hpp"
33 #include "DeviceContextBase.hpp"
34 
35 // GL object implementations are required by DeviceContextBase
36 #include "BufferGLImpl.hpp"
37 #include "TextureBaseGL.hpp"
38 #include "QueryGLImpl.hpp"
39 #include "FramebufferGLImpl.hpp"
40 #include "RenderPassGLImpl.hpp"
41 #include "PipelineStateGLImpl.hpp"
43 
44 #include "GLContextState.hpp"
45 #include "GLObjectWrapper.hpp"
46 
47 namespace Diligent
48 {
49 
51 class DeviceContextGLImpl final : public DeviceContextBase<EngineGLImplTraits>
52 {
53 public:
55 
56  DeviceContextGLImpl(IReferenceCounters* pRefCounters, RenderDeviceGLImpl* pDeviceGL, bool bIsDeferred);
57 
59  virtual void DILIGENT_CALL_TYPE QueryInterface(const INTERFACE_ID& IID, IObject** ppInterface) override final;
60 
62  virtual void DILIGENT_CALL_TYPE SetPipelineState(IPipelineState* pPipelineState) override final;
63 
65  virtual void DILIGENT_CALL_TYPE TransitionShaderResources(IPipelineState* pPipelineState, IShaderResourceBinding* pShaderResourceBinding) override final;
66 
68  virtual void DILIGENT_CALL_TYPE CommitShaderResources(IShaderResourceBinding* pShaderResourceBinding,
69  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
70 
72  virtual void DILIGENT_CALL_TYPE SetStencilRef(Uint32 StencilRef) override final;
73 
75  virtual void DILIGENT_CALL_TYPE SetBlendFactors(const float* pBlendFactors = nullptr) override final;
76 
78  virtual void DILIGENT_CALL_TYPE SetVertexBuffers(Uint32 StartSlot,
79  Uint32 NumBuffersSet,
80  IBuffer** ppBuffers,
81  Uint32* pOffsets,
82  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode,
83  SET_VERTEX_BUFFERS_FLAGS Flags) override final;
84 
86  virtual void DILIGENT_CALL_TYPE InvalidateState() override final;
87 
89  virtual void DILIGENT_CALL_TYPE SetIndexBuffer(IBuffer* pIndexBuffer,
90  Uint32 ByteOffset,
91  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
92 
94  virtual void DILIGENT_CALL_TYPE SetViewports(Uint32 NumViewports,
95  const Viewport* pViewports,
96  Uint32 RTWidth,
97  Uint32 RTHeight) override final;
98 
100  virtual void DILIGENT_CALL_TYPE SetScissorRects(Uint32 NumRects,
101  const Rect* pRects,
102  Uint32 RTWidth,
103  Uint32 RTHeight) override final;
104 
106  virtual void DILIGENT_CALL_TYPE SetRenderTargets(Uint32 NumRenderTargets,
107  ITextureView* ppRenderTargets[],
108  ITextureView* pDepthStencil,
109  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
110 
112  virtual void DILIGENT_CALL_TYPE BeginRenderPass(const BeginRenderPassAttribs& Attribs) override final;
113 
115  virtual void DILIGENT_CALL_TYPE NextSubpass() override final;
116 
118  virtual void DILIGENT_CALL_TYPE EndRenderPass() override final;
119 
120  // clang-format off
121 
123  virtual void DILIGENT_CALL_TYPE Draw (const DrawAttribs& Attribs) override final;
125  virtual void DILIGENT_CALL_TYPE DrawIndexed (const DrawIndexedAttribs& Attribs) override final;
127  virtual void DILIGENT_CALL_TYPE DrawIndirect (const DrawIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
129  virtual void DILIGENT_CALL_TYPE DrawIndexedIndirect(const DrawIndexedIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
131  virtual void DILIGENT_CALL_TYPE DrawMesh (const DrawMeshAttribs& Attribs) override final;
133  virtual void DILIGENT_CALL_TYPE DrawMeshIndirect (const DrawMeshIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
135  virtual void DILIGENT_CALL_TYPE DrawMeshIndirectCount(const DrawMeshIndirectCountAttribs& Attribs, IBuffer* pAttribsBuffer, IBuffer* pCountBuffer) override final;
136 
138  virtual void DILIGENT_CALL_TYPE DispatchCompute (const DispatchComputeAttribs& Attribs) override final;
140  virtual void DILIGENT_CALL_TYPE DispatchComputeIndirect(const DispatchComputeIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
141 
142  // clang-format on
143 
146  CLEAR_DEPTH_STENCIL_FLAGS ClearFlags,
147  float fDepth,
148  Uint8 Stencil,
149  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
150 
153  const float* RGBA,
154  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
155 
157  virtual void DILIGENT_CALL_TYPE UpdateBuffer(IBuffer* pBuffer,
158  Uint32 Offset,
159  Uint32 Size,
160  const void* pData,
161  RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final;
162 
164  virtual void DILIGENT_CALL_TYPE CopyBuffer(IBuffer* pSrcBuffer,
165  Uint32 SrcOffset,
166  RESOURCE_STATE_TRANSITION_MODE SrcBufferTransitionMode,
167  IBuffer* pDstBuffer,
168  Uint32 DstOffset,
169  Uint32 Size,
170  RESOURCE_STATE_TRANSITION_MODE DstBufferTransitionMode) override final;
171 
173  virtual void DILIGENT_CALL_TYPE MapBuffer(IBuffer* pBuffer, MAP_TYPE MapType, MAP_FLAGS MapFlags, PVoid& pMappedData) override final;
174 
176  virtual void DILIGENT_CALL_TYPE UnmapBuffer(IBuffer* pBuffer, MAP_TYPE MapType) override final;
177 
179  virtual void DILIGENT_CALL_TYPE UpdateTexture(ITexture* pTexture,
180  Uint32 MipLevel,
181  Uint32 Slice,
182  const Box& DstBox,
183  const TextureSubResData& SubresData,
184  RESOURCE_STATE_TRANSITION_MODE SrcBufferStateTransitionMode,
185  RESOURCE_STATE_TRANSITION_MODE TextureStateTransitionMode) override final;
186 
188  virtual void DILIGENT_CALL_TYPE CopyTexture(const CopyTextureAttribs& CopyAttribs) override final;
189 
191  virtual void DILIGENT_CALL_TYPE MapTextureSubresource(ITexture* pTexture,
192  Uint32 MipLevel,
193  Uint32 ArraySlice,
194  MAP_TYPE MapType,
195  MAP_FLAGS MapFlags,
196  const Box* pMapRegion,
197  MappedTextureSubresource& MappedData) override final;
198 
200  virtual void DILIGENT_CALL_TYPE UnmapTextureSubresource(ITexture* pTexture, Uint32 MipLevel, Uint32 ArraySlice) override final;
201 
203  virtual void DILIGENT_CALL_TYPE GenerateMips(ITextureView* pTexView) override;
204 
206  virtual void DILIGENT_CALL_TYPE FinishFrame() override final;
207 
209  virtual void DILIGENT_CALL_TYPE TransitionResourceStates(Uint32 BarrierCount, StateTransitionDesc* pResourceBarriers) override final;
210 
212  virtual void DILIGENT_CALL_TYPE ResolveTextureSubresource(ITexture* pSrcTexture,
213  ITexture* pDstTexture,
214  const ResolveTextureSubresourceAttribs& ResolveAttribs) override final;
215 
217  virtual void DILIGENT_CALL_TYPE FinishCommandList(class ICommandList** ppCommandList) override final;
218 
220  virtual void DILIGENT_CALL_TYPE ExecuteCommandLists(Uint32 NumCommandLists,
221  ICommandList* const* ppCommandLists) override final;
222 
224  virtual void DILIGENT_CALL_TYPE SignalFence(IFence* pFence, Uint64 Value) override final;
225 
227  virtual void DILIGENT_CALL_TYPE WaitForFence(IFence* pFence, Uint64 Value, bool FlushContext) override final;
228 
230  virtual void DILIGENT_CALL_TYPE WaitForIdle() override final;
231 
233  virtual void DILIGENT_CALL_TYPE BeginQuery(IQuery* pQuery) override final;
234 
236  virtual void DILIGENT_CALL_TYPE EndQuery(IQuery* pQuery) override final;
237 
239  virtual void DILIGENT_CALL_TYPE Flush() override final;
240 
242  virtual void DILIGENT_CALL_TYPE BuildBLAS(const BuildBLASAttribs& Attribs) override final;
243 
245  virtual void DILIGENT_CALL_TYPE BuildTLAS(const BuildTLASAttribs& Attribs) override final;
246 
248  virtual void DILIGENT_CALL_TYPE CopyBLAS(const CopyBLASAttribs& Attribs) override final;
249 
251  virtual void DILIGENT_CALL_TYPE CopyTLAS(const CopyTLASAttribs& Attribs) override final;
252 
254  virtual void DILIGENT_CALL_TYPE WriteBLASCompactedSize(const WriteBLASCompactedSizeAttribs& Attribs) override final;
255 
257  virtual void DILIGENT_CALL_TYPE WriteTLASCompactedSize(const WriteTLASCompactedSizeAttribs& Attribs) override final;
258 
260  virtual void DILIGENT_CALL_TYPE TraceRays(const TraceRaysAttribs& Attribs) override final;
261 
263  virtual void DILIGENT_CALL_TYPE TraceRaysIndirect(const TraceRaysIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final;
264 
266  virtual void DILIGENT_CALL_TYPE UpdateSBT(IShaderBindingTable* pSBT, const UpdateIndirectRTBufferAttribs* pUpdateIndirectBufferAttribs) override final;
267 
269  virtual bool DILIGENT_CALL_TYPE UpdateCurrentGLContext() override final;
270 
272 
273  void CommitRenderTargets();
274 
275  virtual void DILIGENT_CALL_TYPE SetSwapChain(ISwapChainGL* pSwapChain) override final;
276 
277  virtual void ResetRenderTargets() override final;
278 
279 
280 protected:
281  friend class BufferGLImpl;
282  friend class TextureBaseGL;
283  friend class ShaderGLImpl;
284 
286 
287 private:
288  __forceinline void PrepareForDraw(DRAW_FLAGS Flags, bool IsIndexed, GLenum& GlTopology);
289  __forceinline void PrepareForIndexedDraw(VALUE_TYPE IndexType, Uint32 FirstIndexLocation, GLenum& GLIndexType, Uint32& FirstIndexByteOffset);
290  __forceinline void PrepareForIndirectDraw(IBuffer* pAttribsBuffer);
291  __forceinline void PostDraw();
292 
293  using TBindings = PipelineResourceSignatureGLImpl::TBindings;
294  void BindProgramResources();
295 
296 #ifdef DILIGENT_DEVELOPMENT
297  void DvpValidateCommittedShaderResources();
298 #endif
299 
300  void BeginSubpass();
301  void EndSubpass();
302 
303  struct BindInfo : CommittedShaderResources
304  {
305 #ifdef DILIGENT_DEVELOPMENT
306  // Binding offsets that were used in the last BindProgramResources() call.
307  std::array<TBindings, MAX_RESOURCE_SIGNATURES> BaseBindings = {};
308 #endif
309 
310  void Invalidate()
311  {
312  *this = {};
313  }
314  } m_BindInfo;
315 
316  MEMORY_BARRIER m_CommitedResourcesTentativeBarriers = MEMORY_BARRIER_NONE;
317 
318  std::vector<class TextureBaseGL*> m_BoundWritableTextures;
319  std::vector<class BufferGLImpl*> m_BoundWritableBuffers;
320 
321  RefCntAutoPtr<ISwapChainGL> m_pSwapChain;
322 
323  bool m_IsDefaultFBOBound = false;
324 
326 
327  std::vector<OptimizedClearValue> m_AttachmentClearValues;
328 };
329 
330 } // namespace Diligent
Diligent::MAP_FLAGS
MAP_FLAGS
Special map flags.
Definition: GraphicsTypes.h:227
Diligent::ISwapChainGL
Exposes OpenGL-specific functionality of a swap chain.
Definition: SwapChainGL.h:49
Diligent::PipelineResourceSignatureGLImpl
Implementation of the Diligent::PipelineResourceSignatureGLImpl class.
Definition: PipelineResourceSignatureGLImpl.hpp:63
Diligent::IReferenceCounters
Base interface for a reference counter object that stores the number of strong and weak references an...
Definition: ReferenceCounters.h:44
Diligent::DeviceContextGLImpl::TransitionResourceStates
virtual void TransitionResourceStates(Uint32 BarrierCount, StateTransitionDesc *pResourceBarriers) override final
Implementation of IDeviceContext::TransitionResourceStates() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1467
Diligent::DeviceContextGLImpl::SetStencilRef
virtual void SetStencilRef(Uint32 StencilRef) override final
Implementation of IDeviceContext::SetStencilRef() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:178
Diligent::PVoid
void * PVoid
Definition: BasicTypes.h:56
Diligent::ShaderGLImpl
Shader object implementation in OpenGL backend.
Definition: ShaderGLImpl.hpp:39
Diligent::DeviceContextGLImpl::WaitForFence
virtual void WaitForFence(IFence *pFence, Uint64 Value, bool FlushContext) override final
Implementation of IDeviceContext::WaitForFence() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1128
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::DeviceContextGLImpl::CopyTLAS
virtual void CopyTLAS(const CopyTLASAttribs &Attribs) override final
Implementation of IDeviceContext::CopyTLAS() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1563
Diligent::DeviceContextGLImpl::TransitionShaderResources
virtual void TransitionShaderResources(IPipelineState *pPipelineState, IShaderResourceBinding *pShaderResourceBinding) override final
Implementation of IDeviceContext::TransitionShaderResources() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:163
Diligent::TraceRaysAttribs
This structure is used by IDeviceContext::TraceRays().
Definition: DeviceContext.h:1267
Diligent::BeginRenderPassAttribs
BeginRenderPass command attributes.
Definition: DeviceContext.h:731
Diligent::IShaderBindingTable
Shader binding table interface.
Definition: ShaderBindingTable.h:93
Diligent::DeviceContextGLImpl::CopyTexture
virtual void CopyTexture(const CopyTextureAttribs &CopyAttribs) override final
Implementation of IDeviceContext::CopyTexture() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1308
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
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
GLContextState.hpp
Diligent::DeviceContextGLImpl
Device context implementation in OpenGL backend.
Definition: DeviceContextGLImpl.hpp:51
Diligent::WriteBLASCompactedSizeAttribs
This structure is used by IDeviceContext::WriteBLASCompactedSize().
Definition: DeviceContext.h:1217
FramebufferGLImpl.hpp
Diligent::WriteTLASCompactedSizeAttribs
This structure is used by IDeviceContext::WriteTLASCompactedSize().
Definition: DeviceContext.h:1242
Diligent::DeviceContextGLImpl::BuildTLAS
virtual void BuildTLAS(const BuildTLASAttribs &Attribs) override final
Implementation of IDeviceContext::BuildTLAS() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1553
Diligent::ITextureView
Texture view interface.
Definition: TextureView.h:202
Diligent::DeviceContextGLImpl::DrawMeshIndirect
virtual void DrawMeshIndirect(const DrawMeshIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::DrawMeshIndirect() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:933
Diligent::DXBCUtils::BindInfo
ResourceBinding::BindInfo BindInfo
Definition: DXBCUtils.hpp:40
Diligent::DrawMeshAttribs
Defines the mesh draw command attributes.
Definition: DeviceContext.h:376
Diligent::DeviceContextGLImpl::SetViewports
virtual void SetViewports(Uint32 NumViewports, const Viewport *pViewports, Uint32 RTWidth, Uint32 RTHeight) override final
Implementation of IDeviceContext::SetViewports() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:223
Diligent::DeviceContextGLImpl::UpdateSBT
virtual void UpdateSBT(IShaderBindingTable *pSBT, const UpdateIndirectRTBufferAttribs *pUpdateIndirectBufferAttribs) override final
Implementation of IDeviceContext::UpdateSBT() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1588
Diligent::Box
Box.
Definition: GraphicsTypes.h:2407
Diligent::MappedTextureSubresource
Definition: Texture.h:245
Diligent::DeviceContextGLImpl::DeviceContextGLImpl
DeviceContextGLImpl(IReferenceCounters *pRefCounters, RenderDeviceGLImpl *pDeviceGL, bool bIsDeferred)
Definition: DeviceContextGLImpl.cpp:61
Diligent::DeviceContextGLImpl::DispatchComputeIndirect
virtual void DispatchComputeIndirect(const DispatchComputeIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::DispatchComputeIndirect() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:966
Diligent::DeviceContextGLImpl::WriteTLASCompactedSize
virtual void WriteTLASCompactedSize(const WriteTLASCompactedSizeAttribs &Attribs) override final
Implementation of IDeviceContext::WriteTLASCompactedSize() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1573
Diligent::DeviceContextGLImpl::DrawMeshIndirectCount
virtual void DrawMeshIndirectCount(const DrawMeshIndirectCountAttribs &Attribs, IBuffer *pAttribsBuffer, IBuffer *pCountBuffer) override final
Implementation of IDeviceContext::DrawMeshIndirectCount() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:938
Diligent::INTERFACE_ID
Unique interface identifier.
Definition: InterfaceID.h:37
Diligent::IBuffer
Buffer interface.
Definition: Buffer.h:187
DeviceContextBase.hpp
Diligent::DeviceContextGLImpl::Draw
virtual void Draw(const DrawAttribs &Attribs) override final
Implementation of IDeviceContext::Draw() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:778
Diligent::DeviceContextGLImpl::GetContextState
GLContextState & GetContextState()
Definition: DeviceContextGLImpl.hpp:271
Diligent::DeviceContextGLImpl::EndQuery
virtual void EndQuery(IQuery *pQuery) override final
Implementation of IDeviceContext::EndQuery() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1189
Diligent::DeviceContextGLImpl::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 OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1004
Diligent::StateTransitionDesc
Resource state transition barrier description.
Definition: DeviceContext.h:1333
Diligent::DeviceContextGLImpl::DispatchCompute
virtual void DispatchCompute(const DispatchComputeAttribs &Attribs) override final
Implementation of IDeviceContext::DispatchCompute() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:944
Diligent::DeviceContextGLImpl::Flush
virtual void Flush() override final
Implementation of IDeviceContext::Flush() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1091
Diligent::DeviceContextGLImpl::DrawIndirect
virtual void DrawIndirect(const DrawIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::DrawIndirect() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:864
Diligent::DeviceContextGLImpl::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 OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1411
Diligent::ICommandList
Command list interface.
Definition: CommandList.h:48
TextureBaseGL.hpp
Diligent::SET_VERTEX_BUFFERS_FLAGS
SET_VERTEX_BUFFERS_FLAGS
Defines allowed flags for IDeviceContext::SetVertexBuffers() function.
Definition: DeviceContext.h:578
Diligent::DeviceContextGLImpl::SetScissorRects
virtual void SetScissorRects(Uint32 NumRects, const Rect *pRects, Uint32 RTWidth, Uint32 RTHeight) override final
Implementation of IDeviceContext::SetScissorRects() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:286
Diligent::DeviceContextGLImpl::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 OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1266
Diligent::ResolveTextureSubresourceAttribs
Describes multi-sampled texture resolve command arguments.
Definition: DeviceContext.h:549
Diligent::DispatchComputeIndirectAttribs
Describes dispatch command arguments.
Definition: DeviceContext.h:523
ShaderResourceBindingGLImpl.hpp
Diligent::DeviceContextGLImpl::ExecuteCommandLists
virtual void ExecuteCommandLists(Uint32 NumCommandLists, ICommandList *const *ppCommandLists) override final
Implementation of IDeviceContext::ExecuteCommandLists() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1110
Diligent::DeviceContextGLImpl::UnmapTextureSubresource
virtual void UnmapTextureSubresource(ITexture *pTexture, Uint32 MipLevel, Uint32 ArraySlice) override final
Implementation of IDeviceContext::UnmapTextureSubresource() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1440
Diligent::VALUE_TYPE
VALUE_TYPE
Value type.
Definition: GraphicsTypes.h:49
Diligent::DeviceContextGLImpl::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 OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1254
Diligent::DrawIndexedIndirectAttribs
Defines the indexed indirect draw command attributes.
Definition: DeviceContext.h:330
Diligent::DeviceContextGLImpl::CopyBLAS
virtual void CopyBLAS(const CopyBLASAttribs &Attribs) override final
Implementation of IDeviceContext::CopyBLAS() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1558
Diligent::DeviceContextGLImpl::MapBuffer
virtual void MapBuffer(IBuffer *pBuffer, MAP_TYPE MapType, MAP_FLAGS MapFlags, PVoid &pMappedData) override final
Implementation of IDeviceContext::MapBuffer() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1281
Diligent::DeviceContextGLImpl::DrawIndexedIndirect
virtual void DrawIndexedIndirect(const DrawIndexedIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::DrawIndexedIndirect() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:894
DILIGENT_CALL_TYPE
#define DILIGENT_CALL_TYPE
Definition: CommonDefinitions.h:45
Diligent::DeviceContextGLImpl::TraceRays
virtual void TraceRays(const TraceRaysAttribs &Attribs) override final
Implementation of IDeviceContext::TraceRays() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1578
Diligent::DeviceContextGLImpl::SetIndexBuffer
virtual void SetIndexBuffer(IBuffer *pIndexBuffer, Uint32 ByteOffset, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::SetIndexBuffer() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:217
Diligent::DeviceContextGLImpl::UpdateTexture
virtual void UpdateTexture(ITexture *pTexture, Uint32 MipLevel, Uint32 Slice, const Box &DstBox, const TextureSubResData &SubresData, RESOURCE_STATE_TRANSITION_MODE SrcBufferStateTransitionMode, RESOURCE_STATE_TRANSITION_MODE TextureStateTransitionMode) override final
Implementation of IDeviceContext::UpdateTexture() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1295
Diligent::BuildTLASAttribs
This structure is used by IDeviceContext::BuildTLAS().
Definition: DeviceContext.h:1082
Diligent::TextureBaseGL
Base implementation of a texture object in OpenGL backend.
Definition: TextureBaseGL.hpp:41
Diligent::DeviceContextGLImpl::InvalidateState
virtual void InvalidateState() override final
Implementation of IDeviceContext::InvalidateState() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:206
Diligent::Uint32
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
Diligent::DeviceContextGLImpl::SetPipelineState
virtual void SetPipelineState(IPipelineState *pPipelineState) override final
Implementation of IDeviceContext::SetPipelineState() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:80
Diligent::DrawMeshIndirectAttribs
Defines the mesh indirect draw command attributes.
Definition: DeviceContext.h:402
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::DeviceContextGLImpl::CommitShaderResources
virtual void CommitShaderResources(IShaderResourceBinding *pShaderResourceBinding, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::CommitShaderResources() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:168
Diligent::DeviceContextGLImpl::TraceRaysIndirect
virtual void TraceRaysIndirect(const TraceRaysIndirectAttribs &Attribs, IBuffer *pAttribsBuffer) override final
Implementation of IDeviceContext::TraceRaysIndirect() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1583
Diligent::MEMORY_BARRIER
MEMORY_BARRIER
Definition: AsyncWritableResource.hpp:33
Diligent::BuildBLASAttribs
This structure is used by IDeviceContext::BuildBLAS().
Definition: DeviceContext.h:925
QueryGLImpl.hpp
Diligent::CopyBLASAttribs
This structure is used by IDeviceContext::CopyBLAS().
Definition: DeviceContext.h:1159
Diligent::RenderDeviceGLImpl
Render device implementation in OpenGL backend.
Definition: RenderDeviceGLImpl.hpp:45
Diligent::BufferGLImpl
Buffer object implementation in OpenGL backend.
Definition: BufferGLImpl.hpp:41
Diligent::DeviceContextGLImpl::CommitRenderTargets
void CommitRenderTargets()
Definition: DeviceContextGLImpl.cpp:333
EngineGLImplTraits.hpp
Diligent::DeviceContextGLImpl::FinishFrame
virtual void FinishFrame() override final
Implementation of IDeviceContext::FinishFrame() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1100
Diligent::DeviceContextGLImpl::SetRenderTargets
virtual void SetRenderTargets(Uint32 NumRenderTargets, ITextureView *ppRenderTargets[], ITextureView *pDepthStencil, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::SetRenderTargets() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:386
Diligent::DrawIndirectAttribs
Defines the indirect draw command attributes.
Definition: DeviceContext.h:291
Diligent::DeviceContextGLImpl::SetSwapChain
virtual void SetSwapChain(ISwapChainGL *pSwapChain) override final
Definition: DeviceContextGLImpl.cpp:328
BufferGLImpl.hpp
Diligent::DRAW_FLAGS
DRAW_FLAGS
Draw command flags.
Definition: DeviceContext.h:68
RenderPassGLImpl.hpp
Diligent::CopyTLASAttribs
This structure is used by IDeviceContext::CopyTLAS().
Definition: DeviceContext.h:1188
Diligent::IFence
Fence interface.
Definition: Fence.h:62
Diligent::DeviceContextGLImpl::ClearRenderTarget
virtual void ClearRenderTarget(ITextureView *pView, const float *RGBA, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode) override final
Implementation of IDeviceContext::ClearRenderTarget() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1042
Diligent::DrawIndexedAttribs
Defines the indexed draw command attributes.
Definition: DeviceContext.h:224
Diligent::DeviceContextGLImpl::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 OpenGL backend.
Definition: DeviceContextGLImpl.cpp:195
Diligent::DeviceContextGLImpl::WaitForIdle
virtual void WaitForIdle() override final
Implementation of IDeviceContext::WaitForIdle() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1135
GLObjectWrappers::GLObjWrapper
Definition: GLObjectWrapper.hpp:36
Diligent::IQuery
Query interface.
Definition: Query.h:177
Diligent::DeviceContextGLImpl::DrawMesh
virtual void DrawMesh(const DrawMeshAttribs &Attribs) override final
Implementation of IDeviceContext::DrawMesh() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:928
Diligent::Uint8
uint8_t Uint8
8-bit unsigned integer
Definition: BasicTypes.h:53
Diligent::DeviceContextGLImpl::WriteBLASCompactedSize
virtual void WriteBLASCompactedSize(const WriteBLASCompactedSizeAttribs &Attribs) override final
Implementation of IDeviceContext::WriteBLASCompactedSize() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1568
Diligent::DeviceContextGLImpl::GenerateMips
virtual void GenerateMips(ITextureView *pTexView) override
Implementation of IDeviceContext::GenerateMips() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1456
Diligent::GLContextState
Definition: GLContextState.hpp:39
Diligent::DeviceContextGLImpl::DrawIndexed
virtual void DrawIndexed(const DrawIndexedAttribs &Attribs) override final
Implementation of IDeviceContext::DrawIndexed() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:801
Diligent::Rect
Describes the rectangle.
Definition: DeviceContext.h:642
Diligent::DeviceContextGLImpl::ResolveTextureSubresource
virtual void ResolveTextureSubresource(ITexture *pSrcTexture, ITexture *pDstTexture, const ResolveTextureSubresourceAttribs &ResolveAttribs) override final
Implementation of IDeviceContext::ResolveTextureSubresource() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1472
Diligent::DrawAttribs
Defines the draw command attributes.
Definition: DeviceContext.h:169
Diligent::DeviceContextGLImpl::BeginRenderPass
virtual void BeginRenderPass(const BeginRenderPassAttribs &Attribs) override final
Implementation of IDeviceContext::BeginRenderPass() in Direct3D11 backend.
Definition: DeviceContextGLImpl.cpp:598
Diligent::DeviceContextGLImpl::EndRenderPass
virtual void EndRenderPass() override final
Implementation of IDeviceContext::EndRenderPass() in Direct3D11 backend.
Definition: DeviceContextGLImpl.cpp:621
Diligent::DeviceContextGLImpl::QueryInterface
virtual void QueryInterface(const INTERFACE_ID &IID, IObject **ppInterface) override final
Queries the specific interface, see IObject::QueryInterface() for details.
PipelineStateGLImpl.hpp
Diligent::DeviceContextGLImpl::UnmapBuffer
virtual void UnmapBuffer(IBuffer *pBuffer, MAP_TYPE MapType) override final
Implementation of IDeviceContext::UnmapBuffer() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1288
Diligent::MAP_TYPE
MAP_TYPE
Resource mapping type.
Definition: GraphicsTypes.h:206
Diligent::CopyTextureAttribs
Defines copy texture command attributes.
Definition: DeviceContext.h:672
Diligent::DeviceContextGLImpl::FinishCommandList
virtual void FinishCommandList(class ICommandList **ppCommandList) override final
Implementation of IDeviceContext::FinishCommandList() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1105
Diligent::DeviceContextGLImpl::BuildBLAS
virtual void BuildBLAS(const BuildBLASAttribs &Attribs) override final
Implementation of IDeviceContext::BuildBLAS() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1548
Diligent::DeviceContextGLImpl::UpdateCurrentGLContext
virtual bool UpdateCurrentGLContext() override final
Implementation of IDeviceContextGL::UpdateCurrentGLContext().
Definition: DeviceContextGLImpl.cpp:1244
Diligent::DeviceContextGLImpl::NextSubpass
virtual void NextSubpass() override final
Implementation of IDeviceContext::NextSubpass() in Direct3D11 backend.
Definition: DeviceContextGLImpl.cpp:613
Diligent::ITexture
Texture inteface.
Definition: Texture.h:273
Diligent::DeviceContextGLImpl::m_ContextState
GLContextState m_ContextState
Definition: DeviceContextGLImpl.hpp:285
Diligent::MEMORY_BARRIER_NONE
@ MEMORY_BARRIER_NONE
Definition: AsyncWritableResource.hpp:35
Diligent::DeviceContextGLImpl::SignalFence
virtual void SignalFence(IFence *pFence, Uint64 Value) override final
Implementation of IDeviceContext::SignalFence() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1116
Diligent::DeviceContextGLImpl::SetBlendFactors
virtual void SetBlendFactors(const float *pBlendFactors=nullptr) override final
Implementation of IDeviceContext::SetBlendFactors() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:187
Diligent
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37
Diligent::DeviceContextGLImpl::ResetRenderTargets
virtual void ResetRenderTargets() override final
Definition: DeviceContextGLImpl.cpp:416
Diligent::TextureSubResData
Describes data for one subresource.
Definition: Texture.h:165
Diligent::DeviceContextGLImpl::BeginQuery
virtual void BeginQuery(IQuery *pQuery) override final
Implementation of IDeviceContext::BeginQuery() in OpenGL backend.
Definition: DeviceContextGLImpl.cpp:1142
GLObjectWrapper.hpp