From 8fc99079dcc0e48d89219b60b8c5b6b3839794d9 Mon Sep 17 00:00:00 2001 From: Gregory Wells Date: Tue, 12 Aug 2025 23:56:35 -0400 Subject: [PATCH] command buffer basic lifecycle --- .../opengl/loader/opengl_commands_loader.c | 20 ++++++++++++++++++- .../commands/buffers/opengl_command_buffer.c | 14 +++++++++++++ .../commands/buffers/opengl_command_buffer.h | 5 +++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/projects/apis/opengl/loader/opengl_commands_loader.c b/projects/apis/opengl/loader/opengl_commands_loader.c index a74cf03..2751685 100644 --- a/projects/apis/opengl/loader/opengl_commands_loader.c +++ b/projects/apis/opengl/loader/opengl_commands_loader.c @@ -3,6 +3,24 @@ gnCommandFunctions loadOpenGLCommandFunctions() { return (gnCommandFunctions) { - ._gnCommandPoolAllocateCommandBuffers = openglCommandPoolAllocateCommandBuffers + ._gnCommandPoolAllocateCommandBuffers = openglCommandPoolAllocateCommandBuffers, + + ._gnBeginCommandBuffer = openglBeginCommandBuffer, + ._gnResetCommandBuffer = openglResetCommandBuffer, + ._gnEndCommandBuffer = openglEndCommandBuffer, + ._gnDestroyCommandBuffer = openglDestroyCommandBuffer, + + ._gnCommandBeginRenderPass = NULL, + ._gnCommandEndRenderPass = NULL, + + ._gnCommandBindGraphicsPipeline = NULL, + ._gnCommandSetViewport = NULL, + ._gnCommandSetScissor = NULL, + ._gnCommandBindUniform = NULL, + ._gnCommandPushConstant = NULL, + + ._gnCommandBindBuffer = NULL, + ._gnCommandDraw = NULL, + ._gnCommandDrawIndexed = NULL, }; } diff --git a/projects/apis/opengl/src/commands/buffers/opengl_command_buffer.c b/projects/apis/opengl/src/commands/buffers/opengl_command_buffer.c index a23fe70..cdecaed 100644 --- a/projects/apis/opengl/src/commands/buffers/opengl_command_buffer.c +++ b/projects/apis/opengl/src/commands/buffers/opengl_command_buffer.c @@ -20,3 +20,17 @@ gnReturnCode openglCommandPoolAllocateCommandBuffers(gnCommandBufferHandle* comm return GN_SUCCESS; } + +void openglResetCommandBuffer(gnCommandBuffer commandBuffer) { + // commandBuffer->commandBuffer-> + // nothing, for now command buffers are implictly reset on begin +} +gnReturnCode openglBeginCommandBuffer(gnCommandBuffer commandBuffer) { + return GN_SUCCESS; +} +gnReturnCode openglEndCommandBuffer(gnCommandBuffer commandBuffer) { + return GN_SUCCESS; +} +void openglDestroyCommandBuffer(gnCommandBuffer commandBuffer) { + commandBuffer->commandPool->commandPool->canBeReallocated[commandBuffer->commandBuffer->index] = GN_TRUE; +} diff --git a/projects/apis/opengl/src/commands/buffers/opengl_command_buffer.h b/projects/apis/opengl/src/commands/buffers/opengl_command_buffer.h index 3eca201..8d1655c 100644 --- a/projects/apis/opengl/src/commands/buffers/opengl_command_buffer.h +++ b/projects/apis/opengl/src/commands/buffers/opengl_command_buffer.h @@ -5,3 +5,8 @@ typedef struct gnPlatformCommandBuffer_t { int index; } gnPlatformCommandBuffer; gnReturnCode openglCommandPoolAllocateCommandBuffers(gnCommandBufferHandle* commandBuffers, uint32_t count, gnCommandPoolHandle pool); + +void openglResetCommandBuffer(gnCommandBuffer commandBuffer); +gnReturnCode openglBeginCommandBuffer(gnCommandBuffer commandBuffer); +gnReturnCode openglEndCommandBuffer(gnCommandBuffer commandBuffer); +void openglDestroyCommandBuffer(gnCommandBuffer commandBuffer);