From bbb45f80298dc4a41d31805416bad19363c8eff8 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Sun, 13 Feb 2022 07:30:30 +0100 Subject: Improve image barrier code --- include/compute-renderpass.hpp | 116 +++++++++++++++++++++-------------------- 1 file changed, 59 insertions(+), 57 deletions(-) (limited to 'include/compute-renderpass.hpp') diff --git a/include/compute-renderpass.hpp b/include/compute-renderpass.hpp index 5393032..39cbf79 100644 --- a/include/compute-renderpass.hpp +++ b/include/compute-renderpass.hpp @@ -1,57 +1,59 @@ -#pragma once - -#include "vk-api.hpp" -#include - -class Texture; -class Renderpass { - public: - - Renderpass(vkapi& api) - :api(api) - {}; - - virtual ~Renderpass() { - api.destroy_pipeline(pipeline); - } - - void set_pipeline(pipeline pipeline) { - this->pipeline = pipeline; - } - - // TODO: Do not use vulkan api type - virtual void execute(VkCommandBuffer command_buffer) = 0; - - protected: - vkapi &api; - - pipeline pipeline; -}; - -class ComputeRenderpass : public Renderpass { - public: - - ComputeRenderpass(vkapi& api) - : Renderpass(api) - {} - - void set_dispatch_size(size_t count_x, size_t count_y, size_t count_z); - - void set_ouput_texture(Texture* ouput_texture); - - void set_constant(off_t offset, uint64_t* constant); - void set_constant(off_t offset, Texture* texture); - - // TODO: Do not use vulkan api type - void execute(VkCommandBuffer command_buffer) override final; - - Texture* output_texture; - - private: - - std::array constants; - - size_t group_count_x; - size_t group_count_y; - size_t group_count_z; -}; +#pragma once + +#include "vk-api.hpp" +#include + +class Texture; +class Renderpass { + public: + + Renderpass(vkapi& api) + :api(api) + {}; + + virtual ~Renderpass() { + api.destroy_pipeline(pipeline); + } + + void set_pipeline(pipeline pipeline) { + this->pipeline = pipeline; + } + + // TODO: Do not use vulkan api type + virtual void execute(VkCommandBuffer command_buffer) = 0; + + protected: + vkapi &api; + + pipeline pipeline; +}; + +class ComputeRenderpass : public Renderpass { + public: + + ComputeRenderpass(vkapi& api) + : Renderpass(api) + {} + + void set_dispatch_size(size_t count_x, size_t count_y, size_t count_z); + + void set_ouput_texture(Texture* ouput_texture); + + void set_constant(off_t offset, uint64_t* constant); + void set_constant(off_t offset, Texture* texture); + + // TODO: Do not use vulkan api type + void execute(VkCommandBuffer command_buffer) override final; + + Texture* output_texture; + + private: + + std::vector input_textures; + + std::array constants; + + size_t group_count_x; + size_t group_count_y; + size_t group_count_z; +}; -- cgit v1.3