2#ifndef LIBSBX_GRAPHICS_PIPELINE_PIPELINE_HPP_
3#define LIBSBX_GRAPHICS_PIPELINE_PIPELINE_HPP_
8#include <vulkan/vulkan.hpp>
10#include <libsbx/utility/noncopyable.hpp>
13#include <libsbx/graphics/commands/command_buffer.hpp>
15#include <libsbx/graphics/pipeline/shader.hpp>
17#include <libsbx/graphics/render_graph.hpp>
19namespace sbx::graphics {
33 operator VkPipeline()
const noexcept {
37 virtual auto handle()
const noexcept -> VkPipeline = 0;
39 virtual auto has_variable_descriptors()
const noexcept ->
bool = 0;
41 virtual auto descriptor_counts(std::uint32_t set)
const noexcept -> std::vector<std::uint32_t> = 0;
43 virtual auto descriptor_set_layout(std::uint32_t set)
const noexcept -> VkDescriptorSetLayout = 0;
45 virtual auto descriptor_pool()
const noexcept -> VkDescriptorPool = 0;
47 virtual auto layout()
const noexcept -> VkPipelineLayout = 0;
49 virtual auto bind_point()
const noexcept -> VkPipelineBindPoint = 0;
51 virtual auto descriptor_block(
const std::string& name, std::uint32_t set)
const ->
const shader::uniform_block& = 0;
53 virtual auto push_constant()
const noexcept ->
const std::optional<shader::uniform_block>& = 0;
55 virtual auto find_descriptor_binding(
const std::string& name, std::uint32_t set)
const -> std::optional<std::uint32_t> = 0;
57 virtual auto find_descriptor_type_at_binding(std::uint32_t set, std::uint32_t binding)
const -> std::optional<VkDescriptorType> = 0;
Definition: command_buffer.hpp:15
Definition: pipeline.hpp:21
Definition: noncopyable.hpp:7