18 #ifndef INCLUDED_RENDERER_BACKEND_GL_DEVICECOMMANDCONTEXT 19 #define INCLUDED_RENDERER_BACKEND_GL_DEVICECOMMANDCONTEXT 64 void ClearFramebuffer(
const bool color,
const bool depth,
const bool stencil)
override;
70 const void* data,
const size_t dataSize,
73 const void* data,
const size_t dataSize,
96 const uint32_t bindingSlot,
const void* data,
const uint32_t dataSize)
override;
106 const uint32_t firstIndex,
const uint32_t indexCount,
const int32_t vertexOffset)
override;
113 const int32_t vertexOffset)
override;
121 const int32_t bindingSlot,
122 const float value)
override;
124 const int32_t bindingSlot,
125 const float valueX,
const float valueY)
override;
127 const int32_t bindingSlot,
128 const float valueX,
const float valueY,
129 const float valueZ)
override;
131 const int32_t bindingSlot,
132 const float valueX,
const float valueY,
133 const float valueZ,
const float valueW)
override;
140 void Flush()
override;
149 static std::unique_ptr<CDeviceCommandContext>
Create(
CDevice* device);
210 size_t m_CacheIndex = 0;
235 #endif // INCLUDED_RENDERER_BACKEND_GL_DEVICECOMMANDCONTEXT void Draw(const uint32_t firstVertex, const uint32_t vertexCount) override
Definition: DeviceCommandContext.cpp:1066
BindUnit m_OldBindUnit
Definition: DeviceCommandContext.h:195
VertexAttributeRate
Definition: IShaderProgram.h:47
CShaderProgram * m_ShaderProgram
Definition: DeviceCommandContext.h:165
CDeviceCommandContext(CDevice *device)
Definition: DeviceCommandContext.cpp:223
void SetGraphicsPipelineStateImpl(const SGraphicsPipelineStateDesc &pipelineStateDesc, const bool force)
Definition: DeviceCommandContext.cpp:562
CBuffer * m_VertexBuffer
Definition: DeviceCommandContext.h:172
Definition: DeviceCommandContext.h:49
void EndPass() override
Definition: DeviceCommandContext.cpp:1060
CDevice * m_Device
Definition: DeviceCommandContext.h:161
void BeginScopedLabel(const char *name) override
Definition: DeviceCommandContext.cpp:454
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
Definition: DeviceCommandContext.cpp:271
void BeginPass() override
Definition: DeviceCommandContext.cpp:1054
std::pair< GLenum, GLuint > BoundBuffer
Definition: DeviceCommandContext.h:199
Definition: ITexture.h:33
Type
Definition: IBuffer.h:34
void DrawIndexedInRange(const uint32_t firstIndex, const uint32_t indexCount, const uint32_t start, const uint32_t end) override
Definition: DeviceCommandContext.cpp:1157
Definition: Framebuffer.h:40
void ResetStates()
Definition: DeviceCommandContext.cpp:549
void BeginFramebufferPass(IFramebuffer *framebuffer) override
Starts a framebuffer pass, performs attachment load operations.
Definition: DeviceCommandContext.cpp:872
uint32_t bindingSlot
Definition: DeviceCommandContext.h:219
void SetGraphicsPipelineState(const SGraphicsPipelineStateDesc &pipelineState)
Definition: DeviceCommandContext.cpp:257
void BlitFramebuffer(IFramebuffer *destinationFramebuffer, IFramebuffer *sourceFramebuffer) override
Definition: DeviceCommandContext.cpp:808
static std::unique_ptr< CDeviceCommandContext > Create(CDevice *device)
Definition: DeviceCommandContext.cpp:211
void SetViewports(const uint32_t viewportCount, const Rect *viewports) override
Definition: DeviceCommandContext.cpp:958
uint32_t m_ScissorCount
Definition: DeviceCommandContext.h:166
Definition: DeviceCommandContext.h:180
Definition: DeviceCommandContext.h:186
Format format
Definition: DeviceCommandContext.h:215
void SetVertexBuffer(const uint32_t bindingSlot, IBuffer *buffer, const uint32_t offset) override
Definition: DeviceCommandContext.cpp:988
Format
Definition: Format.h:27
void EndFramebufferPass() override
Finishes a framebuffer pass, performs attachment store operations.
Definition: DeviceCommandContext.cpp:902
std::array< Rect, 1 > m_Scissors
Definition: DeviceCommandContext.h:168
void SetIndexBufferData(const void *data, const uint32_t dataSize) override
Definition: DeviceCommandContext.cpp:1043
A compiled vertex+fragment shader program.
Definition: ShaderProgram.h:88
void DrawIndexedInstanced(const uint32_t firstIndex, const uint32_t indexCount, const uint32_t firstInstance, const uint32_t instanceCount, const int32_t vertexOffset) override
Definition: DeviceCommandContext.cpp:1124
void ReadbackFramebufferSync(const uint32_t x, const uint32_t y, const uint32_t width, const uint32_t height, void *data) override
Definition: DeviceCommandContext.cpp:926
void ClearFramebuffer(const bool color, const bool depth, const bool stencil) override
Clears all mentioned attachments.
Definition: DeviceCommandContext.cpp:835
Definition: DeviceCommandContext.h:201
void SetUniform(const int32_t bindingSlot, const float value) override
Definition: DeviceCommandContext.cpp:1223
Definition: DeviceCommandContext.h:213
void BindBuffer(const IBuffer::Type type, CBuffer *buffer)
Definition: DeviceCommandContext.cpp:497
void OnTextureDestroy(CTexture *texture)
Definition: DeviceCommandContext.cpp:521
Definition: PipelineState.h:164
Represents a texture object.
Definition: TextureManager.h:256
A holder for precompiled graphics pipeline description.
Definition: PipelineState.h:190
void SetIndexBuffer(IBuffer *buffer) override
Definition: DeviceCommandContext.cpp:1035
Backend
Definition: Backend.h:27
uint32_t offset
Definition: DeviceCommandContext.h:216
CBuffer * m_IndexBuffer
Definition: DeviceCommandContext.h:173
void SetVertexBufferData(const uint32_t bindingSlot, const void *data, const uint32_t dataSize) override
Definition: DeviceCommandContext.cpp:1010
void SetVertexInputLayout(IVertexInputLayout *vertexInputLayout) override
Binds the vertex input layout.
Definition: DeviceCommandContext.cpp:966
uint32_t stride
Definition: DeviceCommandContext.h:217
void UploadBufferRegion(IBuffer *buffer, const void *data, const uint32_t dataOffset, const uint32_t dataSize) override
Definition: DeviceCommandContext.cpp:420
void UploadBuffer(IBuffer *buffer, const void *data, const uint32_t dataSize) override
Definition: DeviceCommandContext.cpp:407
void DrawInstanced(const uint32_t firstVertex, const uint32_t vertexCount, const uint32_t firstInstance, const uint32_t instanceCount) override
Definition: DeviceCommandContext.cpp:1102
void SetTexture(const int32_t bindingSlot, ITexture *texture) override
Definition: DeviceCommandContext.cpp:1181
CFramebuffer * m_Framebuffer
Definition: DeviceCommandContext.h:164
SGraphicsPipelineStateDesc m_GraphicsPipelineStateDesc
Definition: DeviceCommandContext.h:163
const void * m_IndexBufferData
Definition: DeviceCommandContext.h:174
void Flush() override
Definition: DeviceCommandContext.cpp:529
Represents a low-level GL texture, encapsulates all properties initialization.
Definition: Texture.h:42
std::function< void(u8 *)> UploadBufferFunction
Definition: DeviceCommandContext.h:78
void SetScissors(const uint32_t scissorCount, const Rect *scissors) override
Definition: DeviceCommandContext.cpp:935
unsigned int uint32_t
Definition: wposix_types.h:53
bool active
Definition: DeviceCommandContext.h:221
Definition: VideoMode.h:28
IDevice * GetDevice() override
Definition: DeviceCommandContext.cpp:252
bool m_InsideFramebufferPass
Definition: DeviceCommandContext.h:176
std::array< BindUnit, 16 > m_BoundTextures
Definition: DeviceCommandContext.h:185
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
Definition: DeviceCommandContext.cpp:283
bool initialized
Definition: DeviceCommandContext.h:222
std::array< VertexAttributeFormat, static_cast< size_t >VertexAttributeStream::UV7)+1 > m_VertexAttributeFormat
Definition: DeviceCommandContext.h:226
uint32_t m_ActiveTextureUnit
Definition: DeviceCommandContext.h:179
void DrawIndexed(const uint32_t firstIndex, const uint32_t indexCount, const int32_t vertexOffset) override
Definition: DeviceCommandContext.cpp:1080
GLenum target
Definition: DeviceCommandContext.h:182
void EndScopedLabel() override
Definition: DeviceCommandContext.cpp:463
A wrapper for backend shader program to handle high-level operations like file reloading and handling...
Definition: ShaderProgram.h:33
Definition: IDeviceCommandContext.h:40
IFramebuffer stores attachments which should be used by backend as rendering destinations.
Definition: IFramebuffer.h:84
uint32_t m_ScopedLabelDepth
Definition: DeviceCommandContext.h:170
VertexAttributeRate rate
Definition: DeviceCommandContext.h:218
std::array< BoundBuffer, 2 > m_BoundBuffers
Definition: DeviceCommandContext.h:200
bool m_InsidePass
Definition: DeviceCommandContext.h:177
GLuint handle
Definition: DeviceCommandContext.h:183
void BindTexture(const uint32_t unit, const GLenum target, const GLuint handle)
Definition: DeviceCommandContext.cpp:473
Simplifed version of std::span (C++20) as we don't support the original one yet.
Definition: Span.h:36