Fling Engine  0.00.1
Fling Engine is a game engine written in Vulkan
CommandBuffer.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "FlingVulkan.h"
4 
5 namespace Fling
6 {
7  class LogicalDevice;
8  class FrameBuffer;
9 
10  // #TODO Pipeline state class definition (just grab it from the official vulkan samples)
11  // #TODO Resource binding state class definition
12 
18  {
19  public:
20  enum class ResetMode
21  {
22  ResetPool,
25  };
26 
27  enum class State
28  {
29  Invalid,
30  Initial,
31  Recording,
32  Executable,
33  };
34 
35  CommandBuffer(const LogicalDevice* t_Device, VkCommandPool t_CmdPool);
37 
38  inline VkCommandBuffer GetHandle() const { return m_Handle; }
39  inline const LogicalDevice* GetDevice() const { return m_Device; }
40  inline const VkCommandPool& GetPoolHandle() const { return m_Pool; }
41 
43  void Begin(VkCommandBufferUsageFlagBits t_Usage = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT);
44 
45  void BeginRenderPass(FrameBuffer& t_frameBuf, const std::vector<VkClearValue>& t_ClearVales);
46 
47  void NextSubpass();
48 
49  void BindPipeline(VkPipelineBindPoint t_BindPoint, VkPipeline t_Pipeline);
50 
51  void SetViewport(UINT32 first_viewport, const std::vector<VkViewport>& viewports);
52 
53  void SetScissor(UINT32 first_scissor, const std::vector<VkRect2D> &scissors);
54 
55  void EndRenderPass();
56 
58  void End();
59 
60  inline bool IsRecording() const { return m_State == State::Recording; }
61 
62  private:
64 
65  const VkCommandPool m_Pool;
66 
67  VkCommandBuffer m_Handle = VK_NULL_HANDLE;
68 
69  // Keep track of the state of this command buffer
71 
72  };
73 } // namespace Fling
void End()
Stop recording commands to the command buffer.
Definition: CommandBuffer.cpp:97
const LogicalDevice * m_Device
Definition: CommandBuffer.h:63
ResetMode
Definition: CommandBuffer.h:20
Encapsulates functionality of a Vulkan Command buffer.
Definition: CommandBuffer.h:17
A logical device represents the application view of the device.
Definition: LogicalDevice.h:13
bool IsRecording() const
Definition: CommandBuffer.h:60
~CommandBuffer()
Definition: CommandBuffer.cpp:28
CommandBuffer(const LogicalDevice *t_Device, VkCommandPool t_CmdPool)
Definition: CommandBuffer.cpp:9
void SetScissor(UINT32 first_scissor, const std::vector< VkRect2D > &scissors)
Definition: CommandBuffer.cpp:87
const VkCommandPool & GetPoolHandle() const
Definition: CommandBuffer.h:40
const LogicalDevice * GetDevice() const
Definition: CommandBuffer.h:39
const VkCommandPool m_Pool
Definition: CommandBuffer.h:65
VkCommandBuffer m_Handle
Definition: CommandBuffer.h:67
void BeginRenderPass(FrameBuffer &t_frameBuf, const std::vector< VkClearValue > &t_ClearVales)
Definition: CommandBuffer.cpp:51
Definition: FrameBuffer.h:67
void BindPipeline(VkPipelineBindPoint t_BindPoint, VkPipeline t_Pipeline)
Definition: CommandBuffer.cpp:77
State m_State
Definition: CommandBuffer.h:70
void NextSubpass()
Definition: CommandBuffer.cpp:70
void SetViewport(UINT32 first_viewport, const std::vector< VkViewport > &viewports)
Definition: CommandBuffer.cpp:82
uint32_t UINT32
Definition: FlingTypes.h:13
void EndRenderPass()
Definition: CommandBuffer.cpp:92
Definition: Engine.h:29
VkCommandBuffer GetHandle() const
Definition: CommandBuffer.h:38
State
Definition: CommandBuffer.h:27
void Begin(VkCommandBufferUsageFlagBits t_Usage=VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT)
Begin recording for this command buffer.
Definition: CommandBuffer.cpp:38