diff --git a/src/Magnum/Vk/CommandBuffer.h b/src/Magnum/Vk/CommandBuffer.h index c87a45300..2c6a1a722 100644 --- a/src/Magnum/Vk/CommandBuffer.h +++ b/src/Magnum/Vk/CommandBuffer.h @@ -43,19 +43,37 @@ namespace Magnum { namespace Vk { class CommandPool; +/** + * Command buffer + * + * Wraps @st_vk{CommandBuffer}. + * + */ class MAGNUM_VK_EXPORT CommandBuffer { public: + /** + * Command buffer level + */ enum class Level: Int { Primary = VK_COMMAND_BUFFER_LEVEL_PRIMARY, Secondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY }; + /** + * Subpass contents + */ enum class SubpassContents: UnsignedInt { Inline = VK_SUBPASS_CONTENTS_INLINE, SecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, }; + /** + * Constructor + * + * @param buffer @st_vk{CommandBuffer} to wrap + * @param commandPool pool this command buffer was allocated from + */ CommandBuffer(VkCommandBuffer buffer, CommandPool& commandPool): _cmdBuffer{buffer}, _pool{commandPool} @@ -85,6 +103,11 @@ class MAGNUM_VK_EXPORT CommandBuffer { return _cmdBuffer; } + /** + * Begin recording to this command buffer. + * + * @return Reference to self (for method chaining) + */ CommandBuffer& begin() { VkCommandBufferBeginInfo cmdBufInfo = {}; cmdBufInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; @@ -93,6 +116,11 @@ class MAGNUM_VK_EXPORT CommandBuffer { return *this; } + /** + * End recording to this command buffer. + * + * @return Reference to self (for method chaining) + */ CommandBuffer& end() { VkResult err = vkEndCommandBuffer(_cmdBuffer); MAGNUM_VK_ASSERT_ERROR(err); @@ -100,6 +128,11 @@ class MAGNUM_VK_EXPORT CommandBuffer { return *this; } + /** + * Begin a render pass on this command buffer. + * + * @return Reference to self (for method chaining) + */ CommandBuffer& beginRenderPass(SubpassContents subpassContents, RenderPass& renderPass, Vk::Framebuffer& framebuffer, Range2Di renderArea, const std::vector& clearValues) { @@ -117,6 +150,11 @@ class MAGNUM_VK_EXPORT CommandBuffer { return *this; } + /** + * End a render pass on this command buffer. + * + * @return Reference to self (for method chaining) + */ CommandBuffer& endRenderPass() { vkCmdEndRenderPass(_cmdBuffer); return *this;