Plasma Engine  2.0
Loading...
Searching...
No Matches
plGALCommandEncoder Class Reference

Public Member Functions

 plGALCommandEncoder (plGALDevice &ref_device, plGALCommandEncoderCommonPlatformInterface &ref_commonImpl)
 
void SetShader (plGALShaderHandle hShader)
 
void SetConstantBuffer (const plShaderResourceBinding &binding, plGALBufferHandle hBuffer)
 
void SetSamplerState (const plShaderResourceBinding &binding, plGALSamplerStateHandle hSamplerState)
 
void SetResourceView (const plShaderResourceBinding &binding, plGALTextureResourceViewHandle hResourceView)
 
void SetResourceView (const plShaderResourceBinding &binding, plGALBufferResourceViewHandle hResourceView)
 
void SetUnorderedAccessView (const plShaderResourceBinding &binding, plGALTextureUnorderedAccessViewHandle hUnorderedAccessView)
 
void SetUnorderedAccessView (const plShaderResourceBinding &binding, plGALBufferUnorderedAccessViewHandle hUnorderedAccessView)
 
void SetPushConstants (plArrayPtr< const plUInt8 > data)
 
plGALTimestampHandle InsertTimestamp ()
 
plGALOcclusionHandle BeginOcclusionQuery (plEnum< plGALQueryType > type)
 Starts an occlusion query. This function must be called within a render scope and EndOcclusionQuery must be called within the same scope. Only one occlusion query can be active at any given time.
 
void EndOcclusionQuery (plGALOcclusionHandle hOcclusion)
 Ends an occlusion query. The given handle must afterwards be passed into the plGALDevice::GetOcclusionQueryResult function, which needs to be repeated every frame until results are ready.
 
plGALFenceHandle InsertFence ()
 
void ClearUnorderedAccessView (plGALTextureUnorderedAccessViewHandle hUnorderedAccessView, plVec4 vClearValues)
 Clears an unordered access view with a float value.
 
void ClearUnorderedAccessView (plGALBufferUnorderedAccessViewHandle hUnorderedAccessView, plVec4 vClearValues)
 
void ClearUnorderedAccessView (plGALTextureUnorderedAccessViewHandle hUnorderedAccessView, plVec4U32 vClearValues)
 Clears an unordered access view with an int value.
 
void ClearUnorderedAccessView (plGALBufferUnorderedAccessViewHandle hUnorderedAccessView, plVec4U32 vClearValues)
 
void CopyBuffer (plGALBufferHandle hDest, plGALBufferHandle hSource)
 
void CopyBufferRegion (plGALBufferHandle hDest, plUInt32 uiDestOffset, plGALBufferHandle hSource, plUInt32 uiSourceOffset, plUInt32 uiByteCount)
 
void UpdateBuffer (plGALBufferHandle hDest, plUInt32 uiDestOffset, plArrayPtr< const plUInt8 > sourceData, plGALUpdateMode::Enum updateMode=plGALUpdateMode::Discard)
 
void CopyTexture (plGALTextureHandle hDest, plGALTextureHandle hSource)
 
void CopyTextureRegion (plGALTextureHandle hDest, const plGALTextureSubresource &destinationSubResource, const plVec3U32 &vDestinationPoint, plGALTextureHandle hSource, const plGALTextureSubresource &sourceSubResource, const plBoundingBoxu32 &box)
 
void UpdateTexture (plGALTextureHandle hDest, const plGALTextureSubresource &destinationSubResource, const plBoundingBoxu32 &destinationBox, const plGALSystemMemoryDescription &sourceData)
 
void ResolveTexture (plGALTextureHandle hDest, const plGALTextureSubresource &destinationSubResource, plGALTextureHandle hSource, const plGALTextureSubresource &sourceSubResource)
 
void ReadbackTexture (plGALTextureHandle hTexture)
 
void CopyTextureReadbackResult (plGALTextureHandle hTexture, plArrayPtr< plGALTextureSubresource > sourceSubResource, plArrayPtr< plGALSystemMemoryDescription > targetData)
 
void GenerateMipMaps (plGALTextureResourceViewHandle hResourceView)
 
void Flush ()
 Submits all pending work to the GPU. Call this if you want to wait for a fence or some other kind of GPU synchronization to take place to ensure the work is actually submitted to the GPU.
 
void PushMarker (const char *szMarker)
 
void PopMarker ()
 
void InsertEventMarker (const char *szMarker)
 
void BeginCompute (const char *szName="")
 
void EndCompute ()
 
plResult Dispatch (plUInt32 uiThreadGroupCountX, plUInt32 uiThreadGroupCountY, plUInt32 uiThreadGroupCountZ)
 
plResult DispatchIndirect (plGALBufferHandle hIndirectArgumentBuffer, plUInt32 uiArgumentOffsetInBytes)
 
void BeginRendering (const plGALRenderingSetup &renderingSetup, const char *szName="")
 
void EndRendering ()
 
void Clear (const plColor &clearColor, plUInt32 uiRenderTargetClearMask=0xFFFFFFFFu, bool bClearDepth=true, bool bClearStencil=true, float fDepthClear=1.0f, plUInt8 uiStencilClear=0x0u)
 Clears active rendertargets.
 
plResult Draw (plUInt32 uiVertexCount, plUInt32 uiStartVertex)
 
plResult DrawIndexed (plUInt32 uiIndexCount, plUInt32 uiStartIndex)
 
plResult DrawIndexedInstanced (plUInt32 uiIndexCountPerInstance, plUInt32 uiInstanceCount, plUInt32 uiStartIndex)
 
plResult DrawIndexedInstancedIndirect (plGALBufferHandle hIndirectArgumentBuffer, plUInt32 uiArgumentOffsetInBytes)
 
plResult DrawInstanced (plUInt32 uiVertexCountPerInstance, plUInt32 uiInstanceCount, plUInt32 uiStartVertex)
 
plResult DrawInstancedIndirect (plGALBufferHandle hIndirectArgumentBuffer, plUInt32 uiArgumentOffsetInBytes)
 
void SetIndexBuffer (plGALBufferHandle hIndexBuffer)
 
void SetVertexBuffer (plUInt32 uiSlot, plGALBufferHandle hVertexBuffer)
 
void SetVertexDeclaration (plGALVertexDeclarationHandle hVertexDeclaration)
 
plGALPrimitiveTopology::Enum GetPrimitiveTopology () const
 
void SetPrimitiveTopology (plGALPrimitiveTopology::Enum topology)
 
void SetBlendState (plGALBlendStateHandle hBlendState, const plColor &blendFactor=plColor::White, plUInt32 uiSampleMask=0xFFFFFFFFu)
 
void SetDepthStencilState (plGALDepthStencilStateHandle hDepthStencilState, plUInt8 uiStencilRefValue=0xFFu)
 
void SetRasterizerState (plGALRasterizerStateHandle hRasterizerState)
 
void SetViewport (const plRectFloat &rect, float fMinDepth=0.0f, float fMaxDepth=1.0f)
 
void SetScissorRect (const plRectU32 &rect)
 
PL_ALWAYS_INLINE plGALDeviceGetDevice ()
 
void InvalidateState ()
 

Protected Member Functions

void AssertRenderingThread ()
 

Friends

class plGALDevice
 
class plMemoryUtils
 

Member Function Documentation

◆ BeginOcclusionQuery()

plGALOcclusionHandle plGALCommandEncoder::BeginOcclusionQuery ( plEnum< plGALQueryType > type)

Starts an occlusion query. This function must be called within a render scope and EndOcclusionQuery must be called within the same scope. Only one occlusion query can be active at any given time.

Parameters
typeThe type of the occlusion query.
Returns
A handle to be passed into EndOcclusionQuery.
See also
EndOcclusionQuery

◆ Clear()

void plGALCommandEncoder::Clear ( const plColor & clearColor,
plUInt32 uiRenderTargetClearMask = 0xFFFFFFFFu,
bool bClearDepth = true,
bool bClearStencil = true,
float fDepthClear = 1.0f,
plUInt8 uiStencilClear = 0x0u )

Clears active rendertargets.

Parameters
uiRenderTargetClearMaskEach bit represents a bound color target. If all bits are set, all bound color targets will be cleared.

◆ EndOcclusionQuery()

void plGALCommandEncoder::EndOcclusionQuery ( plGALOcclusionHandle hOcclusion)

Ends an occlusion query. The given handle must afterwards be passed into the plGALDevice::GetOcclusionQueryResult function, which needs to be repeated every frame until results are ready.

Parameters
hOcclusionValue returned by the previous call to BeginOcclusionQuery.
See also
plGALDevice::GetOcclusionQueryResult

◆ InsertFence()

plGALFenceHandle plGALCommandEncoder::InsertFence ( )

Inserts a fence. You need to flush commands to the GPU in order to be able to wait for a fence by either ending a frame or calling plCommandEncoder::Flush explicitly.

Returns
A handle to be passed into plGALDevice::GetFenceResult.
See also
plGALDevice::GetFenceResult

◆ InsertTimestamp()

plGALTimestampHandle plGALCommandEncoder::InsertTimestamp ( )

Inserts a timestamp.

Returns
A handle to be passed into ezGALDevice::GetTimestampResult.

◆ SetIndexBuffer()

void plGALCommandEncoder::SetIndexBuffer ( plGALBufferHandle hIndexBuffer)
Todo
Assert on index buffer type (if non nullptr)

◆ SetShader()

void plGALCommandEncoder::SetShader ( plGALShaderHandle hShader)
Todo
Assert for shader capabilities (supported shader stages etc.)

The documentation for this class was generated from the following files: