Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
VulkanCommandBuffer.hpp
1#pragma once
2
3#include <Common/Graphics/CommandBuffer.hpp>
4#include <vulkan/vulkan.h>
5
6namespace Grindstone::GraphicsAPI::Vulkan {
7 class CommandBuffer : public Grindstone::GraphicsAPI::CommandBuffer {
8 public:
9 static void SetupDebugLabelUtils(VkInstance instance);
10
11 CommandBuffer(const CreateInfo& createInfo);
12 virtual ~CommandBuffer() override;
13 public:
14 virtual VkCommandBuffer GetCommandBuffer();
15 private:
16 virtual void BeginCommandBuffer() override;
17 virtual void BindRenderPass(
20 uint32_t width,
21 uint32_t height,
22 ClearColorValue* colorClearValues,
23 uint32_t colorClearCount,
24 ClearDepthStencil depthStencilClearValue
25 ) override;
26 virtual void UnbindRenderPass() override;
27 virtual void BeginDebugLabelSection(const char* name, float color[4] = nullptr) override;
28 virtual void EndDebugLabelSection() override;
29 virtual void BindGraphicsDescriptorSet(
30 const GraphicsAPI::GraphicsPipeline* graphicsPipeline,
31 const GraphicsAPI::DescriptorSet* const* descriptorSets,
32 uint32_t descriptorSetOffset,
33 uint32_t descriptorSetCount
34 ) override;
35 virtual void BindComputeDescriptorSet(
36 const GraphicsAPI::ComputePipeline* graphicsPipeline,
37 const GraphicsAPI::DescriptorSet* const* descriptorSets,
38 uint32_t descriptorSetOffset,
39 uint32_t descriptorSetCount
40 ) override;
41 virtual void BindCommandBuffers(Grindstone::GraphicsAPI::CommandBuffer** commandBuffers, uint32_t commandBuffersCount) override;
42 virtual void SetViewport(float offsetX, float offsetY, float width, float height, float depthMin = 0.0f, float depthMax = 1.0f) override;
43 virtual void SetScissor(int32_t offsetX, int32_t offsetY, uint32_t width, uint32_t height) override;
44 virtual void SetDepthBias(float biasConstantFactor, float biasSlopeFactor) override;
45 virtual void BindGraphicsPipeline(const GraphicsAPI::GraphicsPipeline* pipeline) override;
46 virtual void BindComputePipeline(const GraphicsAPI::ComputePipeline* pipeline) override;
47 virtual void BindVertexArrayObject(const GraphicsAPI::VertexArrayObject* vertexArrayObject) override;
48 virtual void BindVertexBuffers(const GraphicsAPI::Buffer* const * vb, uint32_t count) override;
49 virtual void BindIndexBuffer(GraphicsAPI::Buffer* indexBuffer) override;
50 virtual void DrawVertices(uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount, int32_t vertexOffset) override;
51 virtual void DrawIndices(uint32_t firstIndex, uint32_t indexCount, uint32_t firstInstance, uint32_t instanceCount, int32_t vertexOffset) override;
52 virtual void DispatchCompute(uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) override;
53 virtual void BlitImage(Grindstone::GraphicsAPI::Image* src, Grindstone::GraphicsAPI::Image* dst) override;
54 virtual void WaitForComputeMemoryBarrier(Grindstone::GraphicsAPI::Image* renderTarget, bool shouldMakeWritable) override;
55 virtual void PipelineBarrier(const GraphicsAPI::ImageBarrier* barriers, uint32_t barrierCount) override;
56
57 virtual void EndCommandBuffer() override;
58 private:
59 virtual void BindDescriptorSet(
60 VkPipelineLayout pipelineLayout,
61 VkPipelineBindPoint bindPoint,
62 const GraphicsAPI::DescriptorSet* const* descriptorSets,
63 uint32_t descriptorSetOffset,
64 uint32_t descriptorSetCount
65 );
66
67 VkCommandBuffer commandBuffer;
68 VkCommandBufferBeginInfo beginInfo;
69 CommandBufferSecondaryInfo secondaryInfo;
70 };
71}
Definition Buffer.hpp:56
Definition CommandBuffer.hpp:59
Definition ComputePipeline.hpp:18
Definition DescriptorSet.hpp:15
Definition Framebuffer.hpp:16
Definition GraphicsPipeline.hpp:19
Definition Image.hpp:48
Definition RenderPass.hpp:27
Definition VertexArrayObject.hpp:9
Definition RenderPass.hpp:18
Definition CommandBuffer.hpp:41