HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Pipeline_vulkan.hpp
1// Copyright 2019 Pokitec
2// All rights reserved.
3
4#pragma once
5
6#include "TTauri/GUI/Pipeline_base.hpp"
7#include <vulkan/vulkan.hpp>
8#include <string>
9#include <vector>
10
11namespace tt {
12
14public:
15 vk::Pipeline intrinsic;
16
17 Pipeline_vulkan(Window const &window);
19
20 Pipeline_vulkan(const Pipeline_vulkan &) = delete;
21 Pipeline_vulkan &operator=(const Pipeline_vulkan &) = delete;
23 Pipeline_vulkan &operator=(Pipeline_vulkan &&) = delete;
24
25 virtual void drawInCommandBuffer(vk::CommandBuffer commandBuffer);
26
27 void buildForNewDevice(GUIDevice *device);
28 void teardownForDeviceLost();
29 void buildForNewSurface();
30 void teardownForSurfaceLost();
31 void buildForNewSwapchain(vk::RenderPass renderPass, uint32_t renderSubpass, vk::Extent2D extent);
32 void teardownForSwapchainLost();
33 void teardownForWindowLost();
34
35protected:
36 bool buffersInitialized = false;
37 vk::DescriptorSet descriptorSet;
38 ssize_t descriptorSetVersion = 0;
39 vk::Extent2D extent;
40 vk::DescriptorSetLayout descriptorSetLayout;
41 vk::PipelineLayout pipelineLayout;
42 vk::DescriptorPool descriptorPool;
43
44 virtual std::vector<vk::PipelineShaderStageCreateInfo> createShaderStages() const = 0;
45 virtual std::vector<vk::DescriptorSetLayoutBinding> createDescriptorSetLayoutBindings() const = 0;
46 virtual std::vector<vk::WriteDescriptorSet> createWriteDescriptorSet() const = 0;
47 virtual ssize_t getDescriptorSetVersion() const = 0;
48 virtual std::vector<vk::PushConstantRange> createPushConstantRanges() const { return {}; }
49 virtual vk::VertexInputBindingDescription createVertexInputBindingDescription() const { return{}; }
50 virtual std::vector<vk::VertexInputAttributeDescription> createVertexInputAttributeDescriptions() const { return {}; }
51
52 virtual vk::PipelineDepthStencilStateCreateInfo getPipelineDepthStencilStateCreateInfo() const;
53 virtual std::vector<vk::PipelineColorBlendAttachmentState> getPipelineColorBlendAttachmentStates() const;
54
55 virtual void buildVertexBuffers() {};
56 virtual void teardownVertexBuffers() {};
57 virtual void buildDescriptorSets();
58 virtual void teardownDescriptorSets();
59 virtual void buildPipeline(vk::RenderPass renderPass, uint32_t renderSubpass, vk::Extent2D extent);
60 virtual void teardownPipeline();
61};
62
63}
Definition GUIDevice_vulkan.hpp:22
Definition Pipeline_base.hpp:13
Definition Pipeline_vulkan.hpp:13
Definition Window_vulkan_win32.hpp:15