Pyrogenesis  trunk
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
Renderer::Backend::Vulkan::CDeviceCommandContext Class Referencefinal

#include <DeviceCommandContext.h>

Inheritance diagram for Renderer::Backend::Vulkan::CDeviceCommandContext:
Inheritance graph
[legend]
Collaboration diagram for Renderer::Backend::Vulkan::CDeviceCommandContext:
Collaboration graph
[legend]

Public Member Functions

 ~CDeviceCommandContext () override
 
IDeviceGetDevice () override
 
void SetGraphicsPipelineState (IGraphicsPipelineState *pipelineState) override
 Binds the graphics pipeline state. More...
 
void BlitFramebuffer (IFramebuffer *destinationFramebuffer, IFramebuffer *sourceFramebuffer) override
 
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
 
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 SetTexture (const int32_t bindingSlot, ITexture *texture) override
 
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
 
- Public Member Functions inherited from Renderer::Backend::IDeviceObject< IDeviceCommandContext >
virtual ~IDeviceObject ()
 
TAs ()
 

Private Member Functions

 CDeviceCommandContext ()
 
void PreDraw ()
 
void ApplyPipelineStateIfDirty ()
 
void BindVertexBuffer (const uint32_t bindingSlot, CBuffer *buffer, uint32_t offset)
 
void BindIndexBuffer (CBuffer *buffer, uint32_t offset)
 

Static Private Member Functions

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

Private Attributes

CDevicem_Device = nullptr
 
bool m_DebugScopedLabels = false
 
std::unique_ptr< CRingCommandContextm_PrependCommandContext
 
std::unique_ptr< CRingCommandContextm_CommandContext
 
CGraphicsPipelineStatem_GraphicsPipelineState = nullptr
 
CVertexInputLayoutm_VertexInputLayout = nullptr
 
CFramebufferm_Framebuffer = nullptr
 
CShaderProgramm_ShaderProgram = nullptr
 
bool m_IsPipelineStateDirty = true
 
VkPipeline m_LastBoundPipeline = VK_NULL_HANDLE
 
bool m_InsideFramebufferPass = false
 
bool m_InsidePass = false
 
CBufferm_BoundIndexBuffer = nullptr
 
uint32_t m_BoundIndexBufferOffset = 0
 
std::unique_ptr< CBufferm_UniformBuffer
 
std::unique_ptr< CBufferm_UniformStagingBuffer
 
VkDescriptorPool m_UniformDescriptorPool = VK_NULL_HANDLE
 
VkDescriptorSet m_UniformDescriptorSet = VK_NULL_HANDLE
 
std::unique_ptr< CBufferm_InPlaceVertexBuffer
 
std::unique_ptr< CBufferm_InPlaceIndexBuffer
 
std::unique_ptr< CBufferm_InPlaceVertexStagingBuffer
 
std::unique_ptr< CBufferm_InPlaceIndexStagingBuffer
 
void * m_InPlaceVertexStagingBufferMappedData = nullptr
 
void * m_InPlaceIndexStagingBufferMappedData = nullptr
 
void * m_UniformStagingBufferMappedData = nullptr
 
uint32_t m_InPlaceBlockIndex = 0
 
uint32_t m_InPlaceBlockVertexOffset = 0
 
uint32_t m_InPlaceBlockIndexOffset = 0
 
uint32_t m_UniformOffset = 0
 
uint32_t m_UniformIndexOffset = 0
 

Friends

class CDevice
 

Additional Inherited Members

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

Constructor & Destructor Documentation

◆ ~CDeviceCommandContext()

Renderer::Backend::Vulkan::CDeviceCommandContext::~CDeviceCommandContext ( )
override

◆ CDeviceCommandContext()

Renderer::Backend::Vulkan::CDeviceCommandContext::CDeviceCommandContext ( )
privatedefault

Member Function Documentation

◆ ApplyPipelineStateIfDirty()

void Renderer::Backend::Vulkan::CDeviceCommandContext::ApplyPipelineStateIfDirty ( )
private

◆ BeginFramebufferPass()

void Renderer::Backend::Vulkan::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::Vulkan::CDeviceCommandContext::BeginPass ( )
overridevirtual

◆ BeginScopedLabel()

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

◆ BindIndexBuffer()

void Renderer::Backend::Vulkan::CDeviceCommandContext::BindIndexBuffer ( CBuffer buffer,
uint32_t  offset 
)
private

◆ BindVertexBuffer()

void Renderer::Backend::Vulkan::CDeviceCommandContext::BindVertexBuffer ( const uint32_t  bindingSlot,
CBuffer buffer,
uint32_t  offset 
)
private

◆ BlitFramebuffer()

void Renderer::Backend::Vulkan::CDeviceCommandContext::BlitFramebuffer ( IFramebuffer destinationFramebuffer,
IFramebuffer sourceFramebuffer 
)
overridevirtual

◆ ClearFramebuffer()

void Renderer::Backend::Vulkan::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< IDeviceCommandContext > Renderer::Backend::Vulkan::CDeviceCommandContext::Create ( CDevice device)
staticprivate

◆ Draw()

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

◆ DrawIndexed()

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

◆ DrawIndexedInRange()

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

◆ DrawIndexedInstanced()

void Renderer::Backend::Vulkan::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::Vulkan::CDeviceCommandContext::DrawInstanced ( const uint32_t  firstVertex,
const uint32_t  vertexCount,
const uint32_t  firstInstance,
const uint32_t  instanceCount 
)
overridevirtual

◆ EndFramebufferPass()

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

Finishes a framebuffer pass, performs attachment store operations.

Implements Renderer::Backend::IDeviceCommandContext.

◆ EndPass()

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

◆ EndScopedLabel()

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

◆ Flush()

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

◆ GetDevice()

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

◆ PreDraw()

void Renderer::Backend::Vulkan::CDeviceCommandContext::PreDraw ( )
private

◆ ReadbackFramebufferSync()

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

◆ SetGraphicsPipelineState()

void Renderer::Backend::Vulkan::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::Vulkan::CDeviceCommandContext::SetIndexBuffer ( IBuffer buffer)
overridevirtual

◆ SetIndexBufferData()

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

◆ SetScissors()

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

◆ SetTexture()

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

◆ SetUniform() [1/5]

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

◆ SetUniform() [2/5]

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

◆ SetUniform() [3/5]

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

◆ SetUniform() [4/5]

void Renderer::Backend::Vulkan::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::Vulkan::CDeviceCommandContext::SetUniform ( const int32_t  bindingSlot,
PS::span< const float >  values 
)
overridevirtual

◆ SetVertexBuffer()

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

◆ SetVertexBufferData()

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

◆ SetVertexInputLayout()

void Renderer::Backend::Vulkan::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::Vulkan::CDeviceCommandContext::SetViewports ( const uint32_t  viewportCount,
const Rect viewports 
)
overridevirtual

◆ UploadBuffer() [1/2]

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

◆ UploadBuffer() [2/2]

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

◆ UploadBufferRegion() [1/2]

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

◆ UploadBufferRegion() [2/2]

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

◆ UploadTexture()

void Renderer::Backend::Vulkan::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::Vulkan::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_BoundIndexBuffer

CBuffer* Renderer::Backend::Vulkan::CDeviceCommandContext::m_BoundIndexBuffer = nullptr
private

◆ m_BoundIndexBufferOffset

uint32_t Renderer::Backend::Vulkan::CDeviceCommandContext::m_BoundIndexBufferOffset = 0
private

◆ m_CommandContext

std::unique_ptr<CRingCommandContext> Renderer::Backend::Vulkan::CDeviceCommandContext::m_CommandContext
private

◆ m_DebugScopedLabels

bool Renderer::Backend::Vulkan::CDeviceCommandContext::m_DebugScopedLabels = false
private

◆ m_Device

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

◆ m_Framebuffer

CFramebuffer* Renderer::Backend::Vulkan::CDeviceCommandContext::m_Framebuffer = nullptr
private

◆ m_GraphicsPipelineState

CGraphicsPipelineState* Renderer::Backend::Vulkan::CDeviceCommandContext::m_GraphicsPipelineState = nullptr
private

◆ m_InPlaceBlockIndex

uint32_t Renderer::Backend::Vulkan::CDeviceCommandContext::m_InPlaceBlockIndex = 0
private

◆ m_InPlaceBlockIndexOffset

uint32_t Renderer::Backend::Vulkan::CDeviceCommandContext::m_InPlaceBlockIndexOffset = 0
private

◆ m_InPlaceBlockVertexOffset

uint32_t Renderer::Backend::Vulkan::CDeviceCommandContext::m_InPlaceBlockVertexOffset = 0
private

◆ m_InPlaceIndexBuffer

std::unique_ptr<CBuffer> Renderer::Backend::Vulkan::CDeviceCommandContext::m_InPlaceIndexBuffer
private

◆ m_InPlaceIndexStagingBuffer

std::unique_ptr<CBuffer> Renderer::Backend::Vulkan::CDeviceCommandContext::m_InPlaceIndexStagingBuffer
private

◆ m_InPlaceIndexStagingBufferMappedData

void* Renderer::Backend::Vulkan::CDeviceCommandContext::m_InPlaceIndexStagingBufferMappedData = nullptr
private

◆ m_InPlaceVertexBuffer

std::unique_ptr<CBuffer> Renderer::Backend::Vulkan::CDeviceCommandContext::m_InPlaceVertexBuffer
private

◆ m_InPlaceVertexStagingBuffer

std::unique_ptr<CBuffer> Renderer::Backend::Vulkan::CDeviceCommandContext::m_InPlaceVertexStagingBuffer
private

◆ m_InPlaceVertexStagingBufferMappedData

void* Renderer::Backend::Vulkan::CDeviceCommandContext::m_InPlaceVertexStagingBufferMappedData = nullptr
private

◆ m_InsideFramebufferPass

bool Renderer::Backend::Vulkan::CDeviceCommandContext::m_InsideFramebufferPass = false
private

◆ m_InsidePass

bool Renderer::Backend::Vulkan::CDeviceCommandContext::m_InsidePass = false
private

◆ m_IsPipelineStateDirty

bool Renderer::Backend::Vulkan::CDeviceCommandContext::m_IsPipelineStateDirty = true
private

◆ m_LastBoundPipeline

VkPipeline Renderer::Backend::Vulkan::CDeviceCommandContext::m_LastBoundPipeline = VK_NULL_HANDLE
private

◆ m_PrependCommandContext

std::unique_ptr<CRingCommandContext> Renderer::Backend::Vulkan::CDeviceCommandContext::m_PrependCommandContext
private

◆ m_ShaderProgram

CShaderProgram* Renderer::Backend::Vulkan::CDeviceCommandContext::m_ShaderProgram = nullptr
private

◆ m_UniformBuffer

std::unique_ptr<CBuffer> Renderer::Backend::Vulkan::CDeviceCommandContext::m_UniformBuffer
private

◆ m_UniformDescriptorPool

VkDescriptorPool Renderer::Backend::Vulkan::CDeviceCommandContext::m_UniformDescriptorPool = VK_NULL_HANDLE
private

◆ m_UniformDescriptorSet

VkDescriptorSet Renderer::Backend::Vulkan::CDeviceCommandContext::m_UniformDescriptorSet = VK_NULL_HANDLE
private

◆ m_UniformIndexOffset

uint32_t Renderer::Backend::Vulkan::CDeviceCommandContext::m_UniformIndexOffset = 0
private

◆ m_UniformOffset

uint32_t Renderer::Backend::Vulkan::CDeviceCommandContext::m_UniformOffset = 0
private

◆ m_UniformStagingBuffer

std::unique_ptr<CBuffer> Renderer::Backend::Vulkan::CDeviceCommandContext::m_UniformStagingBuffer
private

◆ m_UniformStagingBufferMappedData

void* Renderer::Backend::Vulkan::CDeviceCommandContext::m_UniformStagingBufferMappedData = nullptr
private

◆ m_VertexInputLayout

CVertexInputLayout* Renderer::Backend::Vulkan::CDeviceCommandContext::m_VertexInputLayout = nullptr
private

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