1#ifndef LIBSBX_GRAPHICS_PIPELINE_PIPELINE_HPP_
2#define LIBSBX_GRAPHICS_PIPELINE_PIPELINE_HPP_
7#include <vulkan/vulkan.hpp>
9#include <libsbx/utility/noncopyable.hpp>
12#include <libsbx/graphics/commands/command_buffer.hpp>
14#include <libsbx/graphics/pipeline/shader.hpp>
16#include <libsbx/graphics/render_graph.hpp>
18namespace sbx::graphics {
32 operator VkPipeline()
const noexcept {
36 virtual auto handle()
const noexcept -> VkPipeline = 0;
38 virtual auto has_variable_descriptors()
const noexcept ->
bool = 0;
40 virtual auto descriptor_counts(std::uint32_t set)
const noexcept -> std::vector<std::uint32_t> = 0;
42 virtual auto descriptor_set_layout(std::uint32_t set)
const noexcept -> VkDescriptorSetLayout = 0;
44 virtual auto descriptor_pool()
const noexcept -> VkDescriptorPool = 0;
46 virtual auto layout()
const noexcept -> VkPipelineLayout = 0;
48 virtual auto bind_point()
const noexcept -> VkPipelineBindPoint = 0;
50 virtual auto descriptor_block(
const std::string& name, std::uint32_t set)
const ->
const shader::uniform_block& = 0;
52 virtual auto push_constant()
const noexcept ->
const std::optional<shader::uniform_block>& = 0;
54 virtual auto find_descriptor_binding(
const std::string& name, std::uint32_t set)
const -> std::optional<std::uint32_t> = 0;
56 virtual auto find_descriptor_type_at_binding(std::uint32_t set, std::uint32_t binding)
const -> std::optional<VkDescriptorType> = 0;
Definition: command_buffer.hpp:14
Definition: pipeline.hpp:20
Definition: noncopyable.hpp:6