Diligent Engine
 
Loading...
Searching...
No Matches
Diligent::IDeviceContextVk Struct Referenceabstract

Exposes Vulkan-specific functionality of a device context. More...

#include <DeviceContextVk.h>

Inheritance diagram for Diligent::IDeviceContextVk:
Diligent.IDeviceContext Diligent.IObject

Public Member Functions

virtual void DILIGENT_CALL_TYPE TransitionImageLayout (ITexture *pTexture, VkImageLayout NewLayout)=0
 Transitions the internal Vulkan image to the specified layout.
 
virtual void DILIGENT_CALL_TYPE BufferMemoryBarrier (IBuffer *pBuffer, VkAccessFlags NewAccessFlags)=0
 Transitions the internal Vulkan buffer object to the specified state.
 
virtual VkCommandBuffer DILIGENT_CALL_TYPE GetVkCommandBuffer ()=0
 Returns the Vulkan handle of the command buffer currently being recorded.
 
- Public Member Functions inherited from Diligent.IDeviceContext
virtual const DeviceContextDesc &DILIGENT_CALL_TYPE GetDesc () const =0
 Returns the context description.
 
virtual void DILIGENT_CALL_TYPE Begin (Uint32 ImmediateContextId)=0
 Begins recording commands in the deferred context.
 
virtual void DILIGENT_CALL_TYPE SetPipelineState (IPipelineState *pPipelineState)=0
 Sets the pipeline state.
 
virtual void DILIGENT_CALL_TYPE TransitionShaderResources (IShaderResourceBinding *pShaderResourceBinding)=0
 
virtual void DILIGENT_CALL_TYPE CommitShaderResources (IShaderResourceBinding *pShaderResourceBinding, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0
 Commits shader resources to the device context.
 
virtual void DILIGENT_CALL_TYPE SetStencilRef (Uint32 StencilRef)=0
 Sets the stencil reference value.
 
virtual void DILIGENT_CALL_TYPE SetBlendFactors (const float *pBlendFactors=nullptr)=0
 Sets the blend factors for alpha blending.
 
virtual void DILIGENT_CALL_TYPE SetVertexBuffers (Uint32 StartSlot, Uint32 NumBuffersSet, IBuffer *const *ppBuffers, const Uint64 *pOffsets, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode, SET_VERTEX_BUFFERS_FLAGS Flags=SET_VERTEX_BUFFERS_FLAG_NONE)=0
 Binds vertex buffers to the pipeline.
 
virtual void DILIGENT_CALL_TYPE InvalidateState ()=0
 Invalidates the cached context state.
 
virtual void DILIGENT_CALL_TYPE SetIndexBuffer (IBuffer *pIndexBuffer, Uint64 ByteOffset, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0
 Binds an index buffer to the pipeline.
 
virtual void DILIGENT_CALL_TYPE SetViewports (Uint32 NumViewports, const Viewport *pViewports, Uint32 RTWidth, Uint32 RTHeight)=0
 Sets an array of viewports.
 
virtual void DILIGENT_CALL_TYPE SetScissorRects (Uint32 NumRects, const Rect *pRects, Uint32 RTWidth, Uint32 RTHeight)=0
 Sets active scissor rects.
 
virtual void DILIGENT_CALL_TYPE SetRenderTargets (Uint32 NumRenderTargets, ITextureView *ppRenderTargets[], ITextureView *pDepthStencil, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0
 
virtual void DILIGENT_CALL_TYPE SetRenderTargetsExt (const SetRenderTargetsAttribs &Attribs)=0
 
virtual void DILIGENT_CALL_TYPE BeginRenderPass (const BeginRenderPassAttribs &Attribs)=0
 Begins a new render pass.
 
virtual void DILIGENT_CALL_TYPE NextSubpass ()=0
 Transitions to the next subpass in the render pass instance.
 
virtual void DILIGENT_CALL_TYPE EndRenderPass ()=0
 Ends current render pass.
 
virtual void DILIGENT_CALL_TYPE Draw (const DrawAttribs &Attribs)=0
 Executes a draw command.
 
virtual void DILIGENT_CALL_TYPE DrawIndexed (const DrawIndexedAttribs &Attribs)=0
 Executes an indexed draw command.
 
virtual void DILIGENT_CALL_TYPE DrawIndirect (const DrawIndirectAttribs &Attribs)=0
 Executes an indirect draw command.
 
virtual void DILIGENT_CALL_TYPE DrawIndexedIndirect (const DrawIndexedIndirectAttribs &Attribs)=0
 Executes an indexed indirect draw command.
 
virtual void DILIGENT_CALL_TYPE DrawMesh (const DrawMeshAttribs &Attribs)=0
 Executes a mesh draw command.
 
virtual void DILIGENT_CALL_TYPE DrawMeshIndirect (const DrawMeshIndirectAttribs &Attribs)=0
 Executes an indirect mesh draw command.
 
virtual void DILIGENT_CALL_TYPE MultiDraw (const MultiDrawAttribs &Attribs)=0
 Executes a multi-draw command.
 
virtual void DILIGENT_CALL_TYPE MultiDrawIndexed (const MultiDrawIndexedAttribs &Attribs)=0
 Executes an indexed multi-draw command.
 
virtual void DILIGENT_CALL_TYPE DispatchCompute (const DispatchComputeAttribs &Attribs)=0
 Executes a dispatch compute command.
 
virtual void DILIGENT_CALL_TYPE DispatchComputeIndirect (const DispatchComputeIndirectAttribs &Attribs)=0
 Executes an indirect dispatch compute command.
 
virtual void DILIGENT_CALL_TYPE DispatchTile (const DispatchTileAttribs &Attribs)=0
 Executes a dispatch tile command.
 
virtual void DILIGENT_CALL_TYPE GetTileSize (Uint32 &TileSizeX, Uint32 &TileSizeY)=0
 Returns current render pass tile size.
 
virtual void DILIGENT_CALL_TYPE ClearDepthStencil (ITextureView *pView, CLEAR_DEPTH_STENCIL_FLAGS ClearFlags, float fDepth, Uint8 Stencil, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0
 Clears a depth-stencil view.
 
virtual void DILIGENT_CALL_TYPE ClearRenderTarget (ITextureView *pView, const void *RGBA, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0
 Clears a render target view.
 
virtual void DILIGENT_CALL_TYPE FinishCommandList (ICommandList **ppCommandList)=0
 Finishes recording commands and generates a command list.
 
virtual void DILIGENT_CALL_TYPE ExecuteCommandLists (Uint32 NumCommandLists, ICommandList *const *ppCommandLists)=0
 Submits an array of recorded command lists for execution.
 
virtual void DILIGENT_CALL_TYPE EnqueueSignal (IFence *pFence, Uint64 Value)=0
 Tells the GPU to set a fence to a specified value after all previous work has completed.
 
virtual void DILIGENT_CALL_TYPE DeviceWaitForFence (IFence *pFence, Uint64 Value)=0
 Waits until the specified fence reaches or exceeds the specified value, on the device.
 
virtual void DILIGENT_CALL_TYPE WaitForIdle ()=0
 Submits all outstanding commands for execution to the GPU and waits until they are complete.
 
virtual void DILIGENT_CALL_TYPE BeginQuery (IQuery *pQuery)=0
 Marks the beginning of a query.
 
virtual void DILIGENT_CALL_TYPE EndQuery (IQuery *pQuery)=0
 Marks the end of a query.
 
virtual void DILIGENT_CALL_TYPE Flush ()=0
 Submits all pending commands in the context for execution to the command queue.
 
virtual void DILIGENT_CALL_TYPE UpdateBuffer (IBuffer *pBuffer, Uint64 Offset, Uint64 Size, const void *pData, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0
 Updates the data in the buffer.
 
virtual void DILIGENT_CALL_TYPE CopyBuffer (IBuffer *pSrcBuffer, Uint64 SrcOffset, RESOURCE_STATE_TRANSITION_MODE SrcBufferTransitionMode, IBuffer *pDstBuffer, Uint64 DstOffset, Uint64 Size, RESOURCE_STATE_TRANSITION_MODE DstBufferTransitionMode)=0
 Copies the data from one buffer to another.
 
virtual void DILIGENT_CALL_TYPE MapBuffer (IBuffer *pBuffer, MAP_TYPE MapType, MAP_FLAGS MapFlags, PVoid &pMappedData)=0
 Maps the buffer.
 
virtual void DILIGENT_CALL_TYPE UnmapBuffer (IBuffer *pBuffer, MAP_TYPE MapType)=0
 Unmaps the previously mapped buffer.
 
virtual void DILIGENT_CALL_TYPE UpdateTexture (ITexture *pTexture, Uint32 MipLevel, Uint32 Slice, const Box &DstBox, const TextureSubResData &SubresData, RESOURCE_STATE_TRANSITION_MODE SrcBufferTransitionMode, RESOURCE_STATE_TRANSITION_MODE TextureTransitionMode)=0
 Updates the data in the texture.
 
virtual void DILIGENT_CALL_TYPE CopyTexture (const CopyTextureAttribs &CopyAttribs)=0
 Copies data from one texture to another.
 
virtual void DILIGENT_CALL_TYPE MapTextureSubresource (ITexture *pTexture, Uint32 MipLevel, Uint32 ArraySlice, MAP_TYPE MapType, MAP_FLAGS MapFlags, const Box *pMapRegion, MappedTextureSubresource &MappedData)=0
 Maps the texture subresource.
 
virtual void DILIGENT_CALL_TYPE UnmapTextureSubresource (ITexture *pTexture, Uint32 MipLevel, Uint32 ArraySlice)=0
 Unmaps the texture subresource.
 
virtual void DILIGENT_CALL_TYPE GenerateMips (ITextureView *pTextureView)=0
 Generates a mipmap chain.
 
virtual void DILIGENT_CALL_TYPE FinishFrame ()=0
 Finishes the current frame and releases dynamic resources allocated by the context.
 
virtual Uint64 DILIGENT_CALL_TYPE GetFrameNumber () const =0
 Returns the current frame number.
 
virtual void DILIGENT_CALL_TYPE TransitionResourceStates (Uint32 BarrierCount, const StateTransitionDesc *pResourceBarriers)=0
 Transitions resource states.
 
virtual void DILIGENT_CALL_TYPE ResolveTextureSubresource (ITexture *pSrcTexture, ITexture *pDstTexture, const ResolveTextureSubresourceAttribs &ResolveAttribs)=0
 Resolves a multi-sampled texture subresource into a non-multi-sampled texture subresource.
 
virtual void DILIGENT_CALL_TYPE BuildBLAS (const BuildBLASAttribs &Attribs)=0
 Builds a bottom-level acceleration structure with the specified geometries.
 
virtual void DILIGENT_CALL_TYPE BuildTLAS (const BuildTLASAttribs &Attribs)=0
 Builds a top-level acceleration structure with the specified instances.
 
virtual void DILIGENT_CALL_TYPE CopyBLAS (const CopyBLASAttribs &Attribs)=0
 Copies data from one acceleration structure to another.
 
virtual void DILIGENT_CALL_TYPE CopyTLAS (const CopyTLASAttribs &Attribs)=0
 Copies data from one acceleration structure to another.
 
virtual void DILIGENT_CALL_TYPE WriteBLASCompactedSize (const WriteBLASCompactedSizeAttribs &Attribs)=0
 Writes a bottom-level acceleration structure memory size required for compacting operation to a buffer.
 
virtual void DILIGENT_CALL_TYPE WriteTLASCompactedSize (const WriteTLASCompactedSizeAttribs &Attribs)=0
 Writes a top-level acceleration structure memory size required for compacting operation to a buffer.
 
virtual void DILIGENT_CALL_TYPE TraceRays (const TraceRaysAttribs &Attribs)=0
 Executes a trace rays command.
 
virtual void DILIGENT_CALL_TYPE TraceRaysIndirect (const TraceRaysIndirectAttribs &Attribs)=0
 Executes an indirect trace rays command.
 
virtual void DILIGENT_CALL_TYPE UpdateSBT (IShaderBindingTable *pSBT, const UpdateIndirectRTBufferAttribs *pUpdateIndirectBufferAttribs=nullptr)=0
 Updates SBT with the pending data that were recorded in IShaderBindingTable::Bind*** calls.
 
virtual void DILIGENT_CALL_TYPE SetUserData (IObject *pUserData)=0
 Stores a pointer to the user-provided data object.
 
virtual IObject *DILIGENT_CALL_TYPE GetUserData () const =0
 Returns a pointer to the user data object previously.
 
virtual void DILIGENT_CALL_TYPE BeginDebugGroup (const Char *Name, const float *pColor=nullptr)=0
 Begins a debug group with name and color.
 
virtual void DILIGENT_CALL_TYPE EndDebugGroup ()=0
 Ends a debug group that was previously started with BeginDebugGroup().
 
virtual void DILIGENT_CALL_TYPE InsertDebugLabel (const Char *Label, const float *pColor=nullptr)=0
 Inserts a debug label with name and color.
 
virtual ICommandQueue *DILIGENT_CALL_TYPE LockCommandQueue ()=0
 Locks the internal mutex and returns a pointer to the command queue that is associated with this device context.
 
virtual void DILIGENT_CALL_TYPE UnlockCommandQueue ()=0
 Unlocks the command queue that was previously locked by LockCommandQueue().
 
virtual void DILIGENT_CALL_TYPE SetShadingRate (SHADING_RATE BaseRate, SHADING_RATE_COMBINER PrimitiveCombiner, SHADING_RATE_COMBINER TextureCombiner)=0
 Sets the shading base rate and combiners.
 
virtual void DILIGENT_CALL_TYPE BindSparseResourceMemory (const BindSparseResourceMemoryAttribs &Attribs)=0
 Binds or unbinds memory objects to sparse buffer and sparse textures.
 
virtual void DILIGENT_CALL_TYPE ClearStats ()=0
 Clears the device context statistics.
 
virtual const DeviceContextStats &DILIGENT_CALL_TYPE GetStats () const =0
 Returns the device context statistics, see Diligent::DeviceContextStats.
 
- Public Member Functions inherited from Diligent.IObject
virtual void DILIGENT_CALL_TYPE QueryInterface (const INTERFACE_ID &IID, IObject **ppInterface)=0
 Queries the specific interface.
 
virtual ReferenceCounterValueType DILIGENT_CALL_TYPE AddRef ()=0
 Increments the number of strong references by 1.
 
virtual ReferenceCounterValueType DILIGENT_CALL_TYPE Release ()=0
 
virtual IReferenceCounters *DILIGENT_CALL_TYPE GetReferenceCounters () const =0
 

Detailed Description

Exposes Vulkan-specific functionality of a device context.

Member Function Documentation

◆ BufferMemoryBarrier()

virtual void DILIGENT_CALL_TYPE Diligent::IDeviceContextVk::BufferMemoryBarrier ( IBuffer * pBuffer,
VkAccessFlags NewAccessFlags )
pure virtual

Transitions the internal Vulkan buffer object to the specified state.

Parameters
[in]pBuffer- Buffer to transition
[in]NewAccessFlags- Access flags to set for the buffer
Remarks
The buffer state must be known to the engine.

◆ GetVkCommandBuffer()

virtual VkCommandBuffer DILIGENT_CALL_TYPE Diligent::IDeviceContextVk::GetVkCommandBuffer ( )
pure virtual

Returns the Vulkan handle of the command buffer currently being recorded.

Returns
- handle to the current command buffer

Any command on the device context may potentially submit the command buffer for execution into the command queue and make it invalid. An application should never cache the handle and should instead request the command buffer every time it needs it.

Diligent Engine internally keeps track of all resource state changes (vertex and index buffers, pipeline states, render targets, etc.). If an application changes any of these states in the command buffer, it must invalidate the engine's internal state tracking by calling IDeviceContext::InvalidateState() and then manually restore all required states via appropriate Diligent API calls.

◆ TransitionImageLayout()

virtual void DILIGENT_CALL_TYPE Diligent::IDeviceContextVk::TransitionImageLayout ( ITexture * pTexture,
VkImageLayout NewLayout )
pure virtual

Transitions the internal Vulkan image to the specified layout.

Parameters
[in]pTexture- texture to transition
[in]NewLayout- Vulkan image layout this texture to transition to
Remarks
The texture state must be known to the engine.