19 vk::Pipeline intrinsic;
22 gfx_pipeline(
gfx_surface *surface) : surface(surface) {}
24 virtual ~gfx_pipeline() =
default;
25 gfx_pipeline(
const gfx_pipeline &) =
delete;
26 gfx_pipeline &operator=(
const gfx_pipeline &) =
delete;
27 gfx_pipeline(gfx_pipeline &&) =
delete;
28 gfx_pipeline &operator=(gfx_pipeline &&) =
delete;
30 virtual void draw_in_command_buffer(vk::CommandBuffer commandBuffer, draw_context
const &context);
32 void build_for_new_device();
33 void teardown_for_device_lost();
34 void build_for_new_swapchain(vk::RenderPass renderPass, uint32_t renderSubpass, vk::Extent2D extent);
35 void teardown_for_swapchain_lost();
38 vk::DescriptorSet descriptorSet;
39 size_t descriptorSetVersion = 0;
41 vk::DescriptorSetLayout descriptorSetLayout;
42 vk::PipelineLayout pipelineLayout;
43 vk::DescriptorPool descriptorPool;
45 [[nodiscard]]
gfx_device *device()
const noexcept;
50 [[nodiscard]]
virtual size_t getDescriptorSetVersion()
const = 0;
55 [[nodiscard]]
virtual vk::VertexInputBindingDescription createVertexInputBindingDescription()
const
64 [[nodiscard]]
virtual vk::PipelineDepthStencilStateCreateInfo getPipelineDepthStencilStateCreateInfo()
const;
67 virtual void build_vertex_buffers(){};
68 virtual void teardown_vertex_buffers(){};
69 virtual void build_descriptor_sets();
70 virtual void teardown_descriptor_sets();
71 virtual void build_pipeline(vk::RenderPass renderPass, uint32_t renderSubpass, vk::Extent2D extent);
72 virtual void teardown_pipeline();