Pyrogenesis  trunk
Classes | Public Types | Public Member Functions | List of all members
Renderer::Backend::IDeviceCommandContext Class Referenceabstract

#include <IDeviceCommandContext.h>

Inheritance diagram for Renderer::Backend::IDeviceCommandContext:
Inheritance graph
[legend]
Collaboration diagram for Renderer::Backend::IDeviceCommandContext:
Collaboration graph
[legend]

Classes

struct  Rect
 

Public Types

using UploadBufferFunction = std::function< void(u8 *)>
 

Public Member Functions

virtual void SetGraphicsPipelineState (IGraphicsPipelineState *pipelineState)=0
 Binds the graphics pipeline state. More...
 
virtual void BlitFramebuffer (IFramebuffer *destinationFramebuffer, IFramebuffer *sourceFramebuffer)=0
 
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
 
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 SetTexture (const int32_t bindingSlot, ITexture *texture)=0
 
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 ()
 

Member Typedef Documentation

◆ UploadBufferFunction

Member Function Documentation

◆ BeginFramebufferPass()

virtual void Renderer::Backend::IDeviceCommandContext::BeginFramebufferPass ( IFramebuffer framebuffer)
pure virtual

Starts a framebuffer pass, performs attachment load operations.

It should be called as rarely as possible.

See also
IFramebuffer

Implemented in Renderer::Backend::GL::CDeviceCommandContext, Renderer::Backend::Vulkan::CDeviceCommandContext, and Renderer::Backend::Dummy::CDeviceCommandContext.

◆ BeginPass()

virtual void Renderer::Backend::IDeviceCommandContext::BeginPass ( )
pure virtual

◆ BeginScopedLabel()

virtual void Renderer::Backend::IDeviceCommandContext::BeginScopedLabel ( const char *  name)
pure virtual

◆ BlitFramebuffer()

virtual void Renderer::Backend::IDeviceCommandContext::BlitFramebuffer ( IFramebuffer destinationFramebuffer,
IFramebuffer sourceFramebuffer 
)
pure virtual

◆ ClearFramebuffer()

virtual void Renderer::Backend::IDeviceCommandContext::ClearFramebuffer ( const bool  color,
const bool  depth,
const bool  stencil 
)
pure virtual

Clears all mentioned attachments.

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

Implemented in Renderer::Backend::GL::CDeviceCommandContext, Renderer::Backend::Vulkan::CDeviceCommandContext, and Renderer::Backend::Dummy::CDeviceCommandContext.

◆ Draw()

virtual void Renderer::Backend::IDeviceCommandContext::Draw ( const uint32_t  firstVertex,
const uint32_t  vertexCount 
)
pure virtual

◆ DrawIndexed()

virtual void Renderer::Backend::IDeviceCommandContext::DrawIndexed ( const uint32_t  firstIndex,
const uint32_t  indexCount,
const int32_t  vertexOffset 
)
pure virtual

◆ DrawIndexedInRange()

virtual void Renderer::Backend::IDeviceCommandContext::DrawIndexedInRange ( const uint32_t  firstIndex,
const uint32_t  indexCount,
const uint32_t  start,
const uint32_t  end 
)
pure virtual

◆ DrawIndexedInstanced()

virtual void Renderer::Backend::IDeviceCommandContext::DrawIndexedInstanced ( const uint32_t  firstIndex,
const uint32_t  indexCount,
const uint32_t  firstInstance,
const uint32_t  instanceCount,
const int32_t  vertexOffset 
)
pure virtual

◆ DrawInstanced()

virtual void Renderer::Backend::IDeviceCommandContext::DrawInstanced ( const uint32_t  firstVertex,
const uint32_t  vertexCount,
const uint32_t  firstInstance,
const uint32_t  instanceCount 
)
pure virtual

◆ EndFramebufferPass()

virtual void Renderer::Backend::IDeviceCommandContext::EndFramebufferPass ( )
pure virtual

Finishes a framebuffer pass, performs attachment store operations.

Implemented in Renderer::Backend::GL::CDeviceCommandContext, Renderer::Backend::Vulkan::CDeviceCommandContext, and Renderer::Backend::Dummy::CDeviceCommandContext.

◆ EndPass()

virtual void Renderer::Backend::IDeviceCommandContext::EndPass ( )
pure virtual

◆ EndScopedLabel()

virtual void Renderer::Backend::IDeviceCommandContext::EndScopedLabel ( )
pure virtual

◆ Flush()

virtual void Renderer::Backend::IDeviceCommandContext::Flush ( )
pure virtual

◆ ReadbackFramebufferSync()

virtual void Renderer::Backend::IDeviceCommandContext::ReadbackFramebufferSync ( const uint32_t  x,
const uint32_t  y,
const uint32_t  width,
const uint32_t  height,
void *  data 
)
pure virtual

◆ SetGraphicsPipelineState()

virtual void Renderer::Backend::IDeviceCommandContext::SetGraphicsPipelineState ( IGraphicsPipelineState pipelineState)
pure virtual

Binds the graphics pipeline state.

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

Implemented in Renderer::Backend::GL::CDeviceCommandContext, Renderer::Backend::Vulkan::CDeviceCommandContext, and Renderer::Backend::Dummy::CDeviceCommandContext.

◆ SetIndexBuffer()

virtual void Renderer::Backend::IDeviceCommandContext::SetIndexBuffer ( IBuffer buffer)
pure virtual

◆ SetIndexBufferData()

virtual void Renderer::Backend::IDeviceCommandContext::SetIndexBufferData ( const void *  data,
const uint32_t  dataSize 
)
pure virtual

◆ SetScissors()

virtual void Renderer::Backend::IDeviceCommandContext::SetScissors ( const uint32_t  scissorCount,
const Rect scissors 
)
pure virtual

◆ SetTexture()

virtual void Renderer::Backend::IDeviceCommandContext::SetTexture ( const int32_t  bindingSlot,
ITexture texture 
)
pure virtual

◆ SetUniform() [1/5]

virtual void Renderer::Backend::IDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
const float  value 
)
pure virtual

◆ SetUniform() [2/5]

virtual void Renderer::Backend::IDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
const float  valueX,
const float  valueY 
)
pure virtual

◆ SetUniform() [3/5]

virtual void Renderer::Backend::IDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
const float  valueX,
const float  valueY,
const float  valueZ 
)
pure virtual

◆ SetUniform() [4/5]

virtual void Renderer::Backend::IDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
const float  valueX,
const float  valueY,
const float  valueZ,
const float  valueW 
)
pure virtual

◆ SetUniform() [5/5]

virtual void Renderer::Backend::IDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
PS::span< const float >  values 
)
pure virtual

◆ SetVertexBuffer()

virtual void Renderer::Backend::IDeviceCommandContext::SetVertexBuffer ( const uint32_t  bindingSlot,
IBuffer buffer,
const uint32_t  offset 
)
pure virtual

◆ SetVertexBufferData()

virtual void Renderer::Backend::IDeviceCommandContext::SetVertexBufferData ( const uint32_t  bindingSlot,
const void *  data,
const uint32_t  dataSize 
)
pure virtual

◆ SetVertexInputLayout()

virtual void Renderer::Backend::IDeviceCommandContext::SetVertexInputLayout ( IVertexInputLayout vertexInputLayout)
pure virtual

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.

Implemented in Renderer::Backend::GL::CDeviceCommandContext, Renderer::Backend::Vulkan::CDeviceCommandContext, and Renderer::Backend::Dummy::CDeviceCommandContext.

◆ SetViewports()

virtual void Renderer::Backend::IDeviceCommandContext::SetViewports ( const uint32_t  viewportCount,
const Rect viewports 
)
pure virtual

◆ UploadBuffer() [1/2]

virtual void Renderer::Backend::IDeviceCommandContext::UploadBuffer ( IBuffer buffer,
const void *  data,
const uint32_t  dataSize 
)
pure virtual

◆ UploadBuffer() [2/2]

virtual void Renderer::Backend::IDeviceCommandContext::UploadBuffer ( IBuffer buffer,
const UploadBufferFunction uploadFunction 
)
pure virtual

◆ UploadBufferRegion() [1/2]

virtual void Renderer::Backend::IDeviceCommandContext::UploadBufferRegion ( IBuffer buffer,
const void *  data,
const uint32_t  dataOffset,
const uint32_t  dataSize 
)
pure virtual

◆ UploadBufferRegion() [2/2]

virtual void Renderer::Backend::IDeviceCommandContext::UploadBufferRegion ( IBuffer buffer,
const uint32_t  dataOffset,
const uint32_t  dataSize,
const UploadBufferFunction uploadFunction 
)
pure virtual

◆ UploadTexture()

virtual void Renderer::Backend::IDeviceCommandContext::UploadTexture ( ITexture texture,
const Format  dataFormat,
const void *  data,
const size_t  dataSize,
const uint32_t  level = 0,
const uint32_t  layer = 0 
)
pure virtual

◆ UploadTextureRegion()

virtual void Renderer::Backend::IDeviceCommandContext::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 
)
pure virtual

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