3#include "spark/render/CommandBuffer.h"
4#include "spark/render/CommandQueue.h"
5#include "spark/render/Resource.h"
6#include "spark/render/vk/Export.h"
7#include "spark/render/vk/VulkanIndexBuffer.h"
8#include "spark/render/vk/VulkanPipeline.h"
9#include "spark/render/vk/VulkanPipelineLayout.h"
10#include "spark/render/vk/VulkanVertexBuffer.h"
12SPARK_FWD_DECLARE_VK_HANDLE(VkCommandBuffer)
14namespace spark::render::vk
17 class VulkanRenderPass;
20 class VulkanDescriptorSet;
21 class VulkanPushConstantsLayout;
27 VulkanCommandBuffer, IVulkanBuffer, IVulkanVertexBuffer, IVulkanIndexBuffer, IVulkanImage, VulkanPipelineState>,
40 void begin()
const override;
49 void end()
const override;
52 [[nodiscard]]
bool isRecording()
const noexcept override;
55 [[nodiscard]]
bool isSecondary()
const noexcept override;
58 void transfer(
IVulkanBuffer& source,
IVulkanBuffer& target,
unsigned source_element,
unsigned target_element,
unsigned elements)
const override;
61 void transfer(
IVulkanImage& source,
IVulkanBuffer& target,
unsigned first_subresource,
unsigned target_element,
unsigned subresources)
const override;
64 void transfer(
IVulkanBuffer& source,
IVulkanImage& target,
unsigned source_element,
unsigned first_subresource,
unsigned elements)
const override;
67 void transfer(
IVulkanImage& source,
IVulkanImage& target,
unsigned source_subresource,
unsigned target_subresource,
unsigned subresources)
const override;
70 void transfer(std::shared_ptr<IVulkanBuffer> source,
IVulkanBuffer& target,
unsigned source_element,
unsigned target_element,
unsigned elements)
const override;
73 void transfer(std::shared_ptr<IVulkanBuffer> source,
IVulkanImage& target,
unsigned source_element,
unsigned first_subresource,
unsigned elements)
const override;
76 void transfer(std::shared_ptr<IVulkanImage> source,
IVulkanImage& target,
unsigned first_subresource,
unsigned target_element,
unsigned subresources)
const override;
79 void transfer(std::shared_ptr<IVulkanImage> source,
IVulkanBuffer& target,
unsigned first_subresource,
unsigned target_element,
unsigned subresources)
const override;
97 void draw(
unsigned vertices,
unsigned instances,
unsigned first_vertex,
unsigned first_instance)
const noexcept override;
100 void draw(
const IVulkanVertexBuffer& vertex_buffer,
unsigned instances,
unsigned first_vertex,
unsigned first_instance)
const noexcept override;
103 void drawIndexed(
unsigned indices,
unsigned instances,
unsigned first_index,
int vertex_offset,
unsigned first_instance)
const noexcept override;
106 void drawIndexed(
const IVulkanIndexBuffer& index_buffer,
unsigned instances,
unsigned first_index,
int vertex_offset,
unsigned first_instance)
const noexcept override;
112 unsigned first_index,
114 unsigned first_instance)
const noexcept override;
117 void dispatch()
const noexcept override;
120 void execute(std::shared_ptr<const VulkanCommandBuffer> command_buffer)
const override;
123 void execute(
const std::vector<std::shared_ptr<const VulkanCommandBuffer>>& command_buffers)
const override;
129 void setViewport(
const IViewport* viewport)
const noexcept override;
132 void setViewports(std::span<const IViewport*> viewports)
const noexcept override;
135 void setScissor(
const IScissor* scissor)
const noexcept override;
138 void setScissors(std::span<const IScissor*> scissors)
const noexcept override;
144 void setStencilRef(
unsigned stencil_ref)
const noexcept override;
147 void releaseSharedState()
const override;
151 std::unique_ptr<Impl> m_impl;
A vector with four components.
Definition Vector4.h:13
Definition CommandBuffer.h:462
Interface representing a scissor.
Definition Scissor.h:15
Interface representing a viewport.
Definition Viewport.h:15
Vulkan interface for a IBuffer.
Definition VulkanBuffer.h:22
Represents a Vulkan image.
Definition VulkanImage.h:33
Vulkan interface for an IIndexBuffer.
Definition VulkanIndexBuffer.h:14
Vulkan interface for a IVertexBuffer.
Definition VulkanVertexBuffer.h:14
Vulkan implementation of ICommandBuffer.
Definition VulkanCommandBuffer.h:29
Vulkan implementation of IDescriptorSet.
Definition VulkanDescriptorSet.h:24
Vulkan implementation of IPipeline.
Definition VulkanPipeline.h:20
Vulkan implementation of IPushConstantsLayout.
Definition VulkanPushConstantsLayout.h:17
Vulkan implementation of ICommandQueue.
Definition VulkanQueue.h:23
Vulkan implementation of IRenderPass.
Definition VulkanRenderPass.h:27
Definition VulkanCommandBuffer.cpp:22