HoviTron Video Pipeline
BuffersControllerAbstract.h
Go to the documentation of this file.
1/* ----------------------
2* Copyright 2023 Université Libre de Bruxelles(ULB), Universidad Politécnica de Madrid(UPM), CREAL, Deutsches Zentrum für Luft - und Raumfahrt(DLR)
3
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at < http://www.apache.org/licenses/LICENSE-2.0>
7
8* Unless required by applicable law or agreed to in writing, software
9* distributed under the License is distributed on an "AS IS" BASIS,
10* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11* See the License for the specific language governing permissionsand
12* limitations under the License.
13---------------------- */
14
15#pragma once
16/*****************************************************************/
22#include "commonVulkan.h"
23#include "InputProvider.h"
24
25class VulkanContext;
26class VulkanPipelineAbstract;
28
29
37
38public:
39
41 virtual void init() = 0;
43 virtual void cleanUp()= 0;
45 virtual void bindBuffers(vk::CommandBuffer& commandBuffer, int index, InputProvider::StreamFrameInfo & frameInfos, int view) = 0;
47 virtual void updateAllUniformBuffer(uint32_t currentImage, int view) = 0;
49 virtual void updateUniformBuffer(uint32_t currentImage, int view) = 0;
51 virtual void update(std::span<InputProvider::StreamFrameInfo> infos, int inputView) = 0;
52
54 virtual vk::VertexInputBindingDescription getBindingDescription() = 0;
56 virtual std::vector<vk::VertexInputAttributeDescription> getAttributeDescription() = 0;
58 virtual uint32_t getIndiceCount() = 0;
59protected:
61 int inputView = 0;
63 virtual void createVertexBuffer() = 0;
65 virtual void createIndexBuffer() = 0;
67 virtual void createUniformBuffer(int size) = 0;
69 virtual void createDescriptorPool()= 0;
71 virtual void createDescriptorSets()= 0;
72
74 void copyBuffer(vk::Buffer srcBuffer, vk::Buffer dstBuffer, vk::DeviceSize size);
75
80
81
82};
abstract class for the management of the buffers, descriptors, ...
virtual void createDescriptorPool()=0
virtual uint32_t getIndiceCount()=0
virtual void init()=0
virtual void cleanUp()=0
virtual void bindBuffers(vk::CommandBuffer &commandBuffer, int index, InputProvider::StreamFrameInfo &frameInfos, int view)=0
void copyBuffer(vk::Buffer srcBuffer, vk::Buffer dstBuffer, vk::DeviceSize size)
virtual void createDescriptorSets()=0
virtual void createVertexBuffer()=0
virtual void createIndexBuffer()=0
virtual vk::VertexInputBindingDescription getBindingDescription()=0
virtual void createUniformBuffer(int size)=0
virtual void update(std::span< InputProvider::StreamFrameInfo > infos, int inputView)=0
virtual void updateAllUniformBuffer(uint32_t currentImage, int view)=0
virtual void updateUniformBuffer(uint32_t currentImage, int view)=0
virtual std::vector< vk::VertexInputAttributeDescription > getAttributeDescription()=0
VulkanRenderPass * renderpass
class that manages tasks related to Vulkan context (Vulkan Instance, Vulkan Physical device,...
Definition: VulkanContext.h:59
Class that manage the renderPass containing the synthesis and blending steps.
file that contains the common include for the Vulkan part