Skip to content

File vk_command_buffer.hpp

File List > atlas > drivers > vulkan-cpp > vk_command_buffer.hpp

Go to the documentation of this file

#pragma once
#include <cstdint>
#include <vulkan/vulkan.h>
#include <drivers/vulkan-cpp/vk_types.hpp>

namespace atlas::vk {

    class vk_command_buffer {
    public:
        vk_command_buffer() = default;

        vk_command_buffer(const command_buffer_settings& p_settings);

        void begin(const VkCommandBufferUsageFlags& p_usage_flags);

        void end();

        [[nodiscard]] bool is_valid() const {
            return (m_command_buffer_handler != nullptr);
        }

        void destroy();

        operator VkCommandBuffer() const {
            if (m_begin_end_count != 2) {
            }
            return m_command_buffer_handler;
        }
        operator VkCommandBuffer() { return m_command_buffer_handler; }

    private:
        VkDevice m_driver = nullptr;
        VkCommandBuffer m_command_buffer_handler = nullptr;
        VkCommandPool m_command_pool = nullptr;
        uint32_t m_begin_end_count = 0;
    };
};