/* * Copyright 2021 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef skgpu_RenderPassTask_DEFINED #define skgpu_RenderPassTask_DEFINED #include "experimental/graphite/src/CommandBuffer.h" #include "experimental/graphite/src/Task.h" #include namespace skgpu { class CommandBuffer; class DrawPass; class ResourceProvider; /** * RenderPassTask handles preparing and recording DrawLists into a single render pass within a * command buffer. If the backend supports subpasses, and the DrawLists/surfaces are compatible, a * RenderPassTask can execute multiple DrawLists across different surfaces as subpasses nested * within a single render pass. If there is no such support, a RenderPassTask is one-to-one with a * "render pass" to specific surface. */ class RenderPassTask final : public Task { public: static sk_sp Make(std::vector> passes, const RenderPassDesc&); ~RenderPassTask() override; void addCommands(ResourceProvider*, CommandBuffer*) override; private: RenderPassTask(std::vector> passes, const RenderPassDesc&); std::vector> fDrawPasses; RenderPassDesc fRenderPassDesc; }; } // namespace skgpu #endif // skgpu_RenderPassTask_DEFINED