Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
Renderer::Backend::Dummy::CDeviceCommandContext Class Reference

#include <DeviceCommandContext.h>

Inheritance diagram for Renderer::Backend::Dummy::CDeviceCommandContext:
Collaboration diagram for Renderer::Backend::Dummy::CDeviceCommandContext:

Public Types

using UploadBufferFunction = std::function< void(u8 *)>
 
- Public Types inherited from Renderer::Backend::IDeviceCommandContext
using UploadBufferFunction = std::function< void(u8 *)>
 

Public Member Functions

 ~CDeviceCommandContext ()
 
IDeviceGetDevice () override
 
void SetGraphicsPipelineState (IGraphicsPipelineState *pipelineState) override
 Binds the graphics pipeline state. More...
 
void SetComputePipelineState (IComputePipelineState *pipelineState) override
 Binds the graphics pipeline state. More...
 
void BlitFramebuffer (IFramebuffer *sourceFramebuffer, IFramebuffer *destinationFramebuffer, const Rect &sourceRegion, const Rect &destinationRegion, const Sampler::Filter filter) override
 Copies source region into destination region automatically applying compatible format conversion and scaling using a provided filter. More...
 
void ResolveFramebuffer (IFramebuffer *sourceFramebuffer, IFramebuffer *destinationFramebuffer) override
 Resolves multisample source framebuffer attachments to destination attachments. More...
 
void ClearFramebuffer (const bool color, const bool depth, const bool stencil) override
 Clears all mentioned attachments. More...
 
void BeginFramebufferPass (IFramebuffer *framebuffer) override
 Starts a framebuffer pass, performs attachment load operations. More...
 
void EndFramebufferPass () override
 Finishes a framebuffer pass, performs attachment store operations. More...
 
void ReadbackFramebufferSync (const uint32_t x, const uint32_t y, const uint32_t width, const uint32_t height, void *data) override
 Readbacks the current backbuffer to data in R8G8B8_UNORM format somewhen between the function call and Flush (inclusively). More...
 
void UploadTexture (ITexture *texture, const Format dataFormat, const void *data, const size_t dataSize, const uint32_t level=0, const uint32_t layer=0) override
 
void UploadTextureRegion (ITexture *texture, const Format dataFormat, const void *data, const size_t dataSize, const uint32_t xOffset, const uint32_t yOffset, const uint32_t width, const uint32_t height, const uint32_t level=0, const uint32_t layer=0) override
 
void UploadBuffer (IBuffer *buffer, const void *data, const uint32_t dataSize) override
 
void UploadBuffer (IBuffer *buffer, const UploadBufferFunction &uploadFunction) override
 
void UploadBufferRegion (IBuffer *buffer, const void *data, const uint32_t dataOffset, const uint32_t dataSize) override
 
void UploadBufferRegion (IBuffer *buffer, const uint32_t dataOffset, const uint32_t dataSize, const UploadBufferFunction &uploadFunction) override
 
void SetScissors (const uint32_t scissorCount, const Rect *scissors) override
 
void SetViewports (const uint32_t viewportCount, const Rect *viewports) override
 
void SetVertexInputLayout (IVertexInputLayout *vertexInputLayout) override
 Binds the vertex input layout. More...
 
void SetVertexBuffer (const uint32_t bindingSlot, IBuffer *buffer, const uint32_t offset) override
 
void SetVertexBufferData (const uint32_t bindingSlot, const void *data, const uint32_t dataSize) override
 
void SetIndexBuffer (IBuffer *buffer) override
 
void SetIndexBufferData (const void *data, const uint32_t dataSize) override
 
void BeginPass () override
 
void EndPass () override
 
void Draw (const uint32_t firstVertex, const uint32_t vertexCount) override
 
void DrawIndexed (const uint32_t firstIndex, const uint32_t indexCount, const int32_t vertexOffset) override
 
void DrawInstanced (const uint32_t firstVertex, const uint32_t vertexCount, const uint32_t firstInstance, const uint32_t instanceCount) override
 
void DrawIndexedInstanced (const uint32_t firstIndex, const uint32_t indexCount, const uint32_t firstInstance, const uint32_t instanceCount, const int32_t vertexOffset) override
 
void DrawIndexedInRange (const uint32_t firstIndex, const uint32_t indexCount, const uint32_t start, const uint32_t end) override
 
void BeginComputePass () override
 Starts a compute pass, can't be called inside a framebuffer pass. More...
 
void EndComputePass () override
 Finishes a compute pass. More...
 
void Dispatch (const uint32_t groupCountX, const uint32_t groupCountY, const uint32_t groupCountZ) override
 Dispatches groupCountX * groupCountY * groupCountZ compute groups. More...
 
void SetTexture (const int32_t bindingSlot, ITexture *texture) override
 Sets a read-only texture to the binding slot. More...
 
void SetStorageTexture (const int32_t bindingSlot, ITexture *texture) override
 Sets a read & write resource to the binding slot. More...
 
void SetUniform (const int32_t bindingSlot, const float value) override
 
void SetUniform (const int32_t bindingSlot, const float valueX, const float valueY) override
 
void SetUniform (const int32_t bindingSlot, const float valueX, const float valueY, const float valueZ) override
 
void SetUniform (const int32_t bindingSlot, const float valueX, const float valueY, const float valueZ, const float valueW) override
 
void SetUniform (const int32_t bindingSlot, PS::span< const float > values) override
 
void BeginScopedLabel (const char *name) override
 
void EndScopedLabel () override
 
void Flush () override
 
virtual void SetGraphicsPipelineState (IGraphicsPipelineState *pipelineState)=0
 Binds the graphics pipeline state. More...
 
virtual void SetComputePipelineState (IComputePipelineState *pipelineState)=0
 Binds the graphics pipeline state. More...
 
virtual void BlitFramebuffer (IFramebuffer *sourceFramebuffer, IFramebuffer *destinationFramebuffer, const Rect &sourceRegion, const Rect &destinationRegion, const Sampler::Filter filter)=0
 Copies source region into destination region automatically applying compatible format conversion and scaling using a provided filter. More...
 
virtual void ResolveFramebuffer (IFramebuffer *sourceFramebuffer, IFramebuffer *destinationFramebuffer)=0
 Resolves multisample source framebuffer attachments to destination attachments. More...
 
virtual void BeginFramebufferPass (IFramebuffer *framebuffer)=0
 Starts a framebuffer pass, performs attachment load operations. More...
 
virtual void EndFramebufferPass ()=0
 Finishes a framebuffer pass, performs attachment store operations. More...
 
virtual void ClearFramebuffer (const bool color, const bool depth, const bool stencil)=0
 Clears all mentioned attachments. More...
 
virtual void ReadbackFramebufferSync (const uint32_t x, const uint32_t y, const uint32_t width, const uint32_t height, void *data)=0
 Readbacks the current backbuffer to data in R8G8B8_UNORM format somewhen between the function call and Flush (inclusively). More...
 
virtual void UploadTexture (ITexture *texture, const Format dataFormat, const void *data, const size_t dataSize, const uint32_t level=0, const uint32_t layer=0)=0
 
virtual void UploadTextureRegion (ITexture *texture, const Format dataFormat, const void *data, const size_t dataSize, const uint32_t xOffset, const uint32_t yOffset, const uint32_t width, const uint32_t height, const uint32_t level=0, const uint32_t layer=0)=0
 
virtual void UploadBuffer (IBuffer *buffer, const void *data, const uint32_t dataSize)=0
 
virtual void UploadBuffer (IBuffer *buffer, const UploadBufferFunction &uploadFunction)=0
 
virtual void UploadBufferRegion (IBuffer *buffer, const void *data, const uint32_t dataOffset, const uint32_t dataSize)=0
 
virtual void UploadBufferRegion (IBuffer *buffer, const uint32_t dataOffset, const uint32_t dataSize, const UploadBufferFunction &uploadFunction)=0
 
virtual void SetScissors (const uint32_t scissorCount, const Rect *scissors)=0
 
virtual void SetViewports (const uint32_t viewportCount, const Rect *viewports)=0
 
virtual void SetVertexInputLayout (IVertexInputLayout *vertexInputLayout)=0
 Binds the vertex input layout. More...
 
virtual void SetVertexBuffer (const uint32_t bindingSlot, IBuffer *buffer, const uint32_t offset)=0
 
virtual void SetVertexBufferData (const uint32_t bindingSlot, const void *data, const uint32_t dataSize)=0
 
virtual void SetIndexBuffer (IBuffer *buffer)=0
 
virtual void SetIndexBufferData (const void *data, const uint32_t dataSize)=0
 
virtual void BeginPass ()=0
 
virtual void EndPass ()=0
 
virtual void Draw (const uint32_t firstVertex, const uint32_t vertexCount)=0
 
virtual void DrawIndexed (const uint32_t firstIndex, const uint32_t indexCount, const int32_t vertexOffset)=0
 
virtual void DrawInstanced (const uint32_t firstVertex, const uint32_t vertexCount, const uint32_t firstInstance, const uint32_t instanceCount)=0
 
virtual void DrawIndexedInstanced (const uint32_t firstIndex, const uint32_t indexCount, const uint32_t firstInstance, const uint32_t instanceCount, const int32_t vertexOffset)=0
 
virtual void DrawIndexedInRange (const uint32_t firstIndex, const uint32_t indexCount, const uint32_t start, const uint32_t end)=0
 
virtual void BeginComputePass ()=0
 Starts a compute pass, can't be called inside a framebuffer pass. More...
 
virtual void EndComputePass ()=0
 Finishes a compute pass. More...
 
virtual void Dispatch (const uint32_t groupCountX, const uint32_t groupCountY, const uint32_t groupCountZ)=0
 Dispatches groupCountX * groupCountY * groupCountZ compute groups. More...
 
virtual void SetTexture (const int32_t bindingSlot, ITexture *texture)=0
 Sets a read-only texture to the binding slot. More...
 
virtual void SetStorageTexture (const int32_t bindingSlot, ITexture *texture)=0
 Sets a read & write resource to the binding slot. More...
 
virtual void SetUniform (const int32_t bindingSlot, const float value)=0
 
virtual void SetUniform (const int32_t bindingSlot, const float valueX, const float valueY)=0
 
virtual void SetUniform (const int32_t bindingSlot, const float valueX, const float valueY, const float valueZ)=0
 
virtual void SetUniform (const int32_t bindingSlot, const float valueX, const float valueY, const float valueZ, const float valueW)=0
 
virtual void SetUniform (const int32_t bindingSlot, PS::span< const float > values)=0
 
virtual void BeginScopedLabel (const char *name)=0
 
virtual void EndScopedLabel ()=0
 
virtual void Flush ()=0
 
- Public Member Functions inherited from Renderer::Backend::IDeviceObject< IDeviceCommandContext >
virtual ~IDeviceObject ()
 
virtual IDeviceGetDevice ()=0
 
TAs ()
 

Private Member Functions

 CDeviceCommandContext ()
 

Static Private Member Functions

static std::unique_ptr< CDeviceCommandContextCreate (CDevice *device)
 

Private Attributes

CDevicem_Device = nullptr
 

Friends

class CDevice
 

Member Typedef Documentation

◆ UploadBufferFunction

Constructor & Destructor Documentation

◆ ~CDeviceCommandContext()

Renderer::Backend::Dummy::CDeviceCommandContext::~CDeviceCommandContext ( )
default

◆ CDeviceCommandContext()

Renderer::Backend::Dummy::CDeviceCommandContext::CDeviceCommandContext ( )
privatedefault

Member Function Documentation

◆ BeginComputePass()

void Renderer::Backend::Dummy::CDeviceCommandContext::BeginComputePass ( )
overridevirtual

Starts a compute pass, can't be called inside a framebuffer pass.

It should be called as rarely as possible.

Implements Renderer::Backend::IDeviceCommandContext.

◆ BeginFramebufferPass()

void Renderer::Backend::Dummy::CDeviceCommandContext::BeginFramebufferPass ( IFramebuffer framebuffer)
overridevirtual

Starts a framebuffer pass, performs attachment load operations.

It should be called as rarely as possible.

See also
IFramebuffer

Implements Renderer::Backend::IDeviceCommandContext.

◆ BeginPass()

void Renderer::Backend::Dummy::CDeviceCommandContext::BeginPass ( )
overridevirtual

◆ BeginScopedLabel()

void Renderer::Backend::Dummy::CDeviceCommandContext::BeginScopedLabel ( const char *  name)
overridevirtual

◆ BlitFramebuffer()

void Renderer::Backend::Dummy::CDeviceCommandContext::BlitFramebuffer ( IFramebuffer sourceFramebuffer,
IFramebuffer destinationFramebuffer,
const Rect sourceRegion,
const Rect destinationRegion,
const Sampler::Filter  filter 
)
overridevirtual

Copies source region into destination region automatically applying compatible format conversion and scaling using a provided filter.

A backbuffer can't be a source.

Implements Renderer::Backend::IDeviceCommandContext.

◆ ClearFramebuffer()

void Renderer::Backend::Dummy::CDeviceCommandContext::ClearFramebuffer ( const bool  color,
const bool  depth,
const bool  stencil 
)
overridevirtual

Clears all mentioned attachments.

Prefer to use attachment load operations over this function. It should be called only inside a framebuffer pass.

Implements Renderer::Backend::IDeviceCommandContext.

◆ Create()

std::unique_ptr< CDeviceCommandContext > Renderer::Backend::Dummy::CDeviceCommandContext::Create ( CDevice device)
staticprivate

◆ Dispatch()

void Renderer::Backend::Dummy::CDeviceCommandContext::Dispatch ( const uint32_t  groupCountX,
const uint32_t  groupCountY,
const uint32_t  groupCountZ 
)
overridevirtual

Dispatches groupCountX * groupCountY * groupCountZ compute groups.

Implements Renderer::Backend::IDeviceCommandContext.

◆ Draw()

void Renderer::Backend::Dummy::CDeviceCommandContext::Draw ( const uint32_t  firstVertex,
const uint32_t  vertexCount 
)
overridevirtual

◆ DrawIndexed()

void Renderer::Backend::Dummy::CDeviceCommandContext::DrawIndexed ( const uint32_t  firstIndex,
const uint32_t  indexCount,
const int32_t  vertexOffset 
)
overridevirtual

◆ DrawIndexedInRange()

void Renderer::Backend::Dummy::CDeviceCommandContext::DrawIndexedInRange ( const uint32_t  firstIndex,
const uint32_t  indexCount,
const uint32_t  start,
const uint32_t  end 
)
overridevirtual

◆ DrawIndexedInstanced()

void Renderer::Backend::Dummy::CDeviceCommandContext::DrawIndexedInstanced ( const uint32_t  firstIndex,
const uint32_t  indexCount,
const uint32_t  firstInstance,
const uint32_t  instanceCount,
const int32_t  vertexOffset 
)
overridevirtual

◆ DrawInstanced()

void Renderer::Backend::Dummy::CDeviceCommandContext::DrawInstanced ( const uint32_t  firstVertex,
const uint32_t  vertexCount,
const uint32_t  firstInstance,
const uint32_t  instanceCount 
)
overridevirtual

◆ EndComputePass()

void Renderer::Backend::Dummy::CDeviceCommandContext::EndComputePass ( )
overridevirtual

Finishes a compute pass.

Implements Renderer::Backend::IDeviceCommandContext.

◆ EndFramebufferPass()

void Renderer::Backend::Dummy::CDeviceCommandContext::EndFramebufferPass ( )
overridevirtual

Finishes a framebuffer pass, performs attachment store operations.

Implements Renderer::Backend::IDeviceCommandContext.

◆ EndPass()

void Renderer::Backend::Dummy::CDeviceCommandContext::EndPass ( )
overridevirtual

◆ EndScopedLabel()

void Renderer::Backend::Dummy::CDeviceCommandContext::EndScopedLabel ( )
overridevirtual

◆ Flush()

void Renderer::Backend::Dummy::CDeviceCommandContext::Flush ( )
overridevirtual

◆ GetDevice()

IDevice * Renderer::Backend::Dummy::CDeviceCommandContext::GetDevice ( )
overridevirtual

◆ ReadbackFramebufferSync()

void Renderer::Backend::Dummy::CDeviceCommandContext::ReadbackFramebufferSync ( const uint32_t  x,
const uint32_t  y,
const uint32_t  width,
const uint32_t  height,
void *  data 
)
overridevirtual

Readbacks the current backbuffer to data in R8G8B8_UNORM format somewhen between the function call and Flush (inclusively).

Because of that the data pointer should be valid in that time period and have enough space to fit the readback result.

Note
this operation is very slow and should not be used regularly. TODO: ideally we should do readback on Present or even asynchronously but a client doesn't support that yet.

Implements Renderer::Backend::IDeviceCommandContext.

◆ ResolveFramebuffer()

void Renderer::Backend::Dummy::CDeviceCommandContext::ResolveFramebuffer ( IFramebuffer sourceFramebuffer,
IFramebuffer destinationFramebuffer 
)
overridevirtual

Resolves multisample source framebuffer attachments to destination attachments.

Source attachments should have a sample count > 1 and destination attachments should have a sample count = 1. A backbuffer can't be a source.

Implements Renderer::Backend::IDeviceCommandContext.

◆ SetComputePipelineState()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetComputePipelineState ( IComputePipelineState pipelineState)
overridevirtual

Binds the graphics pipeline state.

It should be called only inside a framebuffer pass and as rarely as possible.

Implements Renderer::Backend::IDeviceCommandContext.

◆ SetGraphicsPipelineState()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetGraphicsPipelineState ( IGraphicsPipelineState pipelineState)
overridevirtual

Binds the graphics pipeline state.

It should be called only inside a framebuffer pass and as rarely as possible.

Implements Renderer::Backend::IDeviceCommandContext.

◆ SetIndexBuffer()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetIndexBuffer ( IBuffer buffer)
overridevirtual

◆ SetIndexBufferData()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetIndexBufferData ( const void *  data,
const uint32_t  dataSize 
)
overridevirtual

◆ SetScissors()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetScissors ( const uint32_t  scissorCount,
const Rect scissors 
)
overridevirtual

◆ SetStorageTexture()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetStorageTexture ( const int32_t  bindingSlot,
ITexture texture 
)
overridevirtual

Sets a read & write resource to the binding slot.

Implements Renderer::Backend::IDeviceCommandContext.

◆ SetTexture()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetTexture ( const int32_t  bindingSlot,
ITexture texture 
)
overridevirtual

Sets a read-only texture to the binding slot.

Implements Renderer::Backend::IDeviceCommandContext.

◆ SetUniform() [1/5]

void Renderer::Backend::Dummy::CDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
const float  value 
)
overridevirtual

◆ SetUniform() [2/5]

void Renderer::Backend::Dummy::CDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
const float  valueX,
const float  valueY 
)
overridevirtual

◆ SetUniform() [3/5]

void Renderer::Backend::Dummy::CDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
const float  valueX,
const float  valueY,
const float  valueZ 
)
overridevirtual

◆ SetUniform() [4/5]

void Renderer::Backend::Dummy::CDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
const float  valueX,
const float  valueY,
const float  valueZ,
const float  valueW 
)
overridevirtual

◆ SetUniform() [5/5]

void Renderer::Backend::Dummy::CDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
PS::span< const float >  values 
)
overridevirtual

◆ SetVertexBuffer()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetVertexBuffer ( const uint32_t  bindingSlot,
IBuffer buffer,
const uint32_t  offset 
)
overridevirtual

◆ SetVertexBufferData()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetVertexBufferData ( const uint32_t  bindingSlot,
const void *  data,
const uint32_t  dataSize 
)
overridevirtual

◆ SetVertexInputLayout()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetVertexInputLayout ( IVertexInputLayout vertexInputLayout)
overridevirtual

Binds the vertex input layout.

It should be compatible with the shader program's one. It should be called only inside a framebuffer pass and as rarely as possible.

Implements Renderer::Backend::IDeviceCommandContext.

◆ SetViewports()

void Renderer::Backend::Dummy::CDeviceCommandContext::SetViewports ( const uint32_t  viewportCount,
const Rect viewports 
)
overridevirtual

◆ UploadBuffer() [1/2]

void Renderer::Backend::Dummy::CDeviceCommandContext::UploadBuffer ( IBuffer buffer,
const UploadBufferFunction uploadFunction 
)
overridevirtual

◆ UploadBuffer() [2/2]

void Renderer::Backend::Dummy::CDeviceCommandContext::UploadBuffer ( IBuffer buffer,
const void *  data,
const uint32_t  dataSize 
)
overridevirtual

◆ UploadBufferRegion() [1/2]

void Renderer::Backend::Dummy::CDeviceCommandContext::UploadBufferRegion ( IBuffer buffer,
const uint32_t  dataOffset,
const uint32_t  dataSize,
const UploadBufferFunction uploadFunction 
)
overridevirtual

◆ UploadBufferRegion() [2/2]

void Renderer::Backend::Dummy::CDeviceCommandContext::UploadBufferRegion ( IBuffer buffer,
const void *  data,
const uint32_t  dataOffset,
const uint32_t  dataSize 
)
overridevirtual

◆ UploadTexture()

void Renderer::Backend::Dummy::CDeviceCommandContext::UploadTexture ( ITexture texture,
const Format  dataFormat,
const void *  data,
const size_t  dataSize,
const uint32_t  level = 0,
const uint32_t  layer = 0 
)
overridevirtual

◆ UploadTextureRegion()

void Renderer::Backend::Dummy::CDeviceCommandContext::UploadTextureRegion ( ITexture texture,
const Format  dataFormat,
const void *  data,
const size_t  dataSize,
const uint32_t  xOffset,
const uint32_t  yOffset,
const uint32_t  width,
const uint32_t  height,
const uint32_t  level = 0,
const uint32_t  layer = 0 
)
overridevirtual

Friends And Related Function Documentation

◆ CDevice

friend class CDevice
friend

Member Data Documentation

◆ m_Device

CDevice* Renderer::Backend::Dummy::CDeviceCommandContext::m_Device = nullptr
private

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