1 /* 2 * Copyright 2021 Google LLC 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef skgpu_RenderPassTask_DEFINED 9 #define skgpu_RenderPassTask_DEFINED 10 11 #include "experimental/graphite/src/CommandBuffer.h" 12 #include "experimental/graphite/src/Task.h" 13 14 #include <vector> 15 16 namespace skgpu { 17 18 class CommandBuffer; 19 class DrawPass; 20 class ResourceProvider; 21 22 /** 23 * RenderPassTask handles preparing and recording DrawLists into a single render pass within a 24 * command buffer. If the backend supports subpasses, and the DrawLists/surfaces are compatible, a 25 * RenderPassTask can execute multiple DrawLists across different surfaces as subpasses nested 26 * within a single render pass. If there is no such support, a RenderPassTask is one-to-one with a 27 * "render pass" to specific surface. 28 */ 29 class RenderPassTask final : public Task { 30 public: 31 static sk_sp<RenderPassTask> Make(std::vector<std::unique_ptr<DrawPass>> passes, 32 const RenderPassDesc&); 33 34 ~RenderPassTask() override; 35 36 void addCommands(ResourceProvider*, CommandBuffer*) override; 37 38 private: 39 RenderPassTask(std::vector<std::unique_ptr<DrawPass>> passes, const RenderPassDesc&); 40 41 std::vector<std::unique_ptr<DrawPass>> fDrawPasses; 42 RenderPassDesc fRenderPassDesc; 43 }; 44 45 } // namespace skgpu 46 47 #endif // skgpu_RenderPassTask_DEFINED 48