#include #include #define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1 #include #include #include #include "initialization.h" #include "utils.h" #include "task_common.h" #include "A2Task2.h" struct A2Task2SolutioNaive : A2Task2Solution { public: A2Task2SolutioNaive(AppResources &app, uint workGroupSize); void prepare(const std::vector &input) override; void compute() override; std::vector result() const override; void cleanup() override; private: struct PushStruct { uint size; uint offset; }; AppResources &app; uint workGroupSize; uint workSize; Buffer buffers[2]; // Descriptor & Pipeline Layout std::vector bindings; vk::DescriptorSetLayout descriptorSetLayout; vk::PipelineLayout pipelineLayout; vk::ShaderModule cShader; vk::Pipeline pipeline; // Descriptor Pool vk::DescriptorPool descriptorPool; // Descriptors vk::DescriptorSet descriptorSets[2]; uint activeBuffer = 0; };