29 class VSG_DECLSPEC CommandBuffer :
public Inherit<Object, CommandBuffer>
32 const VkCommandBuffer* data()
const {
return &_commandBuffer; }
33 operator VkCommandBuffer()
const {
return _commandBuffer; }
34 VkCommandBuffer vk()
const {
return _commandBuffer; }
36 std::atomic_uint& numDependentSubmissions() {
return _numDependentSubmissions; }
38 const uint32_t deviceID;
40 Mask traversalMask = MASK_ALL;
41 Mask overrideMask = MASK_OFF;
43 State* state =
nullptr;
47 VkCommandBufferLevel level()
const {
return _level; }
50 void reset(VkCommandBufferResetFlags flags = 0);
52 Device* getDevice() {
return _device; }
53 const Device* getDevice()
const {
return _device; }
55 CommandPool* getCommandPool() {
return _commandPool; }
56 const CommandPool* getCommandPool()
const {
return _commandPool; }
58 void setCurrentPipelineLayout(
const PipelineLayout* pipelineLayout);
60 VkPipelineLayout getCurrentPipelineLayout()
const {
return _currentPipelineLayout; }
61 VkShaderStageFlags getCurrentPushConstantStageFlags()
const {
return _currentPushConstantStageFlags; }
63 ref_ptr<ScratchMemory> scratchMemory;
67 CommandBuffer(CommandPool* commandPool, VkCommandBuffer commandBuffer, VkCommandBufferLevel level);
69 virtual ~CommandBuffer();
71 VkCommandBuffer _commandBuffer;
72 VkCommandBufferLevel _level;
74 std::atomic_uint _numDependentSubmissions{0};
75 ref_ptr<Device> _device;
76 ref_ptr<CommandPool> _commandPool;
77 VkPipelineLayout _currentPipelineLayout;
78 VkShaderStageFlags _currentPushConstantStageFlags;