Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <mln/gfx/command_encoder.hpp>
|
|
#include <mln/util/containers.hpp>
|
|
#include <mln/vulkan/renderer_backend.hpp>
|
|
|
|
namespace mln {
|
|
namespace gfx {
|
|
class Renderable;
|
|
} // namespace gfx
|
|
|
|
namespace vulkan {
|
|
|
|
class Context;
|
|
class RenderPass;
|
|
class UploadPass;
|
|
|
|
class CommandEncoder final : public gfx::CommandEncoder {
|
|
public:
|
|
explicit CommandEncoder(Context& context_, const vk::UniqueCommandBuffer& buffer_);
|
|
~CommandEncoder() override;
|
|
|
|
vulkan::Context& getContext() { return context; }
|
|
const vulkan::Context& getContext() const { return context; }
|
|
const vk::UniqueCommandBuffer& getCommandBuffer() const { return commandBuffer; }
|
|
|
|
std::unique_ptr<gfx::UploadPass> createUploadPass(const char* name, gfx::Renderable&) override;
|
|
std::unique_ptr<gfx::RenderPass> createRenderPass(const char* name, const gfx::RenderPassDescriptor&) override;
|
|
|
|
void present(gfx::Renderable&) override;
|
|
|
|
private:
|
|
void pushDebugGroup(const char* name) override;
|
|
void pushDebugGroup(const char* name, const std::array<float, 4>& color);
|
|
void popDebugGroup() override;
|
|
|
|
private:
|
|
friend class RenderPass;
|
|
friend class UploadPass;
|
|
|
|
vulkan::Context& context;
|
|
const vk::UniqueCommandBuffer& commandBuffer;
|
|
};
|
|
|
|
} // namespace vulkan
|
|
} // namespace mln
|