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
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(
21 ClearColor* colorClearValues,
22 uint32_t colorClearCount,
23 ClearDepthStencil depthStencilClearValue
24 ) override;
25 virtual void UnbindRenderPass() override;
26
27 virtual void BeginRendering(
28 const char* name,
30 RenderAttachment* colorAttachments,
31 uint32_t colorAttachmentCount,
32 RenderAttachment* depthAttachment,
33 RenderAttachment* stencilAttachment,
34 float* debugColor
35 ) override;
36 virtual void EndRendering() override;
37
38 virtual void BeginDebugLabelSection(const char* name, float color[4] = nullptr) override;
39 virtual void EndDebugLabelSection() override;
40 virtual void BindGraphicsDescriptorSet(
41 const GraphicsAPI::PipelineLayout* pipelineLayout,
42 const GraphicsAPI::DescriptorSet* const* descriptorSets,
43 uint32_t descriptorSetOffset,
44 uint32_t descriptorSetCount
45 ) override;
46 virtual void BindComputeDescriptorSet(
47 const GraphicsAPI::PipelineLayout* pipelineLayout,
48 const GraphicsAPI::DescriptorSet* const* descriptorSets,
49 uint32_t descriptorSetOffset,
50 uint32_t descriptorSetCount
51 ) override;
52 virtual void ClearAttachments(ClearAttachment* attachments, uint32_t attachmentCount, ClearRect* rects, uint32_t rectCount) override;
53 virtual void CopyBufferRegions(GraphicsAPI::Buffer* srcBuffer, GraphicsAPI::Buffer* dstBuffer, BufferCopyRegion* regions, uint32_t regionCount) override;
54 virtual void CopyBufferRegion(GraphicsAPI::Buffer* srcBuffer, GraphicsAPI::Buffer* dstBuffer, uint64_t size, uint32_t srcOffset, uint32_t dstOffset) override;
55 virtual void BindCommandBuffers(Grindstone::GraphicsAPI::CommandBuffer** commandBuffers, uint32_t commandBuffersCount) override;
56 virtual void SetViewport(float offsetX, float offsetY, float width, float height, float depthMin = 0.0f, float depthMax = 1.0f) override;
57 virtual void SetScissor(int32_t offsetX, int32_t offsetY, uint32_t width, uint32_t height) override;
58 virtual void SetDepthBias(float biasConstantFactor, float biasSlopeFactor) override;
59 virtual void BindGraphicsPipeline(const GraphicsAPI::GraphicsPipeline* pipeline) override;
60 virtual void BindComputePipeline(const GraphicsAPI::ComputePipeline* pipeline) override;
61 virtual void BindVertexArrayObject(const GraphicsAPI::VertexArrayObject* vertexArrayObject) override;
62 virtual void BindVertexBuffers(const GraphicsAPI::Buffer* const * vb, uint32_t count) override;
63 virtual void BindIndexBuffer(GraphicsAPI::Buffer* indexBuffer) override;
64 virtual void DrawVertices(uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount, int32_t vertexOffset) override;
65 virtual void DrawIndices(uint32_t firstIndex, uint32_t indexCount, uint32_t firstInstance, uint32_t instanceCount, int32_t vertexOffset) override;
66 virtual void DispatchCompute(uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) override;
67 virtual void BlitImage(
70 Grindstone::GraphicsAPI::ImageLayout oldLayout,
71 Grindstone::GraphicsAPI::ImageLayout newLayout,
72 Grindstone::GraphicsAPI::TextureFilter filter,
75 ) override;
76 virtual void PipelineBarrier(
77 const GraphicsAPI::BufferBarrier* bufferBarriers, uint32_t bufferBarrierCount,
78 const GraphicsAPI::ImageBarrier* imageBarriers, uint32_t imageBarrierCount
79 ) override;
80
81 virtual void EndCommandBuffer() override;
82 private:
83 virtual void BindDescriptorSet(
84 VkPipelineLayout pipelineLayout,
85 VkPipelineBindPoint bindPoint,
86 const GraphicsAPI::DescriptorSet* const* descriptorSets,
87 uint32_t descriptorSetOffset,
88 uint32_t descriptorSetCount
89 );
90
91 VkCommandBuffer commandBuffer;
92 VkCommandBufferBeginInfo beginInfo;
93 CommandBufferSecondaryInfo secondaryInfo;
94 };
95}
Definition Buffer.hpp:49
Definition CommandBuffer.hpp:109
Definition ComputePipeline.hpp:19
Definition DescriptorSet.hpp:15
Definition Framebuffer.hpp:16
Definition GraphicsPipeline.hpp:20
Definition Image.hpp:49
Definition PipelineLayout.hpp:18
Definition RenderPass.hpp:10
Definition VertexArrayObject.hpp:9
Definition ImguiRendererVulkan.hpp:11
Definition CommandBuffer.hpp:67
Definition CommandBuffer.hpp:77
Definition CommandBuffer.hpp:91
Definition CommandBuffer.hpp:99
Definition CommandBuffer.hpp:52
Definition CommandBuffer.hpp:83
Definition Rect.hpp:77
Definition Rect.hpp:33
Definition Formats.hpp:14