#pragma once #include #include #include namespace faset::render { // Ordered single-queue graph. Reads must be imported or produced by an earlier pass. // The Vulkan executor performs barriers at each resource state transition. class RenderGraph { public: using Callback = std::function; void import(std::string resource); void add(std::string name, std::vector reads, std::vector writes, Callback execute); void execute() const; std::vector pass_names() const; private: struct Pass { std::string name; std::vector reads, writes; Callback callback; }; std::vector imports_; std::vector passes_; }; } // namespace faset::render