Pyrogenesis trunk
|
#include <IDeviceCommandContext.h>
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 | 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 IDevice * | GetDevice ()=0 |
T * | As () |
using Renderer::Backend::IDeviceCommandContext::UploadBufferFunction = std::function<void(u8*)> |
|
pure virtual |
Starts a compute pass, can't be called inside a framebuffer pass.
It should be called as rarely as possible.
Implemented in Renderer::Backend::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
Starts a framebuffer pass, performs attachment load operations.
It should be called as rarely as possible.
Implemented in Renderer::Backend::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
|
pure virtual |
|
pure virtual |
Copies source region into destination region automatically applying compatible format conversion and scaling using a provided filter.
A backbuffer can't be a source.
Implemented in Renderer::Backend::Vulkan::CDeviceCommandContext, Renderer::Backend::Dummy::CDeviceCommandContext, and Renderer::Backend::GL::CDeviceCommandContext.
|
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::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
Dispatches groupCountX * groupCountY * groupCountZ compute groups.
Implemented in Renderer::Backend::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
Finishes a compute pass.
Implemented in Renderer::Backend::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
Finishes a framebuffer pass, performs attachment store operations.
Implemented in Renderer::Backend::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
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.
Implemented in Renderer::Backend::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
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.
Implemented in Renderer::Backend::Vulkan::CDeviceCommandContext, Renderer::Backend::Dummy::CDeviceCommandContext, and Renderer::Backend::GL::CDeviceCommandContext.
|
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::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
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::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
|
pure virtual |
|
pure virtual |
Sets a read & write resource to the binding slot.
Implemented in Renderer::Backend::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
Sets a read-only texture to the binding slot.
Implemented in Renderer::Backend::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
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::Dummy::CDeviceCommandContext, Renderer::Backend::GL::CDeviceCommandContext, and Renderer::Backend::Vulkan::CDeviceCommandContext.
|
pure virtual |
|
pure virtual |
|
pure virtual |