1 /* 2 * Copyright 2022 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_graphite_PietRenderTask_DEFINED 9 #define skgpu_graphite_PietRenderTask_DEFINED 10 11 #include <vector> 12 13 #include "src/gpu/graphite/Task.h" 14 #include "src/gpu/piet/Scene.h" 15 16 namespace skgpu::graphite { 17 18 class TextureProxy; 19 20 class PietRenderInstance final { 21 public: PietRenderInstance(sk_sp<const skgpu::piet::Scene> scene,sk_sp<TextureProxy> targetProxy)22 PietRenderInstance(sk_sp<const skgpu::piet::Scene> scene, sk_sp<TextureProxy> targetProxy) 23 : fScene(std::move(scene)) 24 , fTargetProxy(std::move(targetProxy)) {} 25 26 // Make this type move-only. 27 PietRenderInstance(const PietRenderInstance&) = delete; 28 PietRenderInstance(PietRenderInstance&&) = default; 29 30 bool prepareResources(ResourceProvider*); 31 32 bool addCommands(CommandBuffer*); 33 34 private: 35 sk_sp<const skgpu::piet::Scene> fScene; 36 sk_sp<TextureProxy> fTargetProxy; 37 }; 38 39 class PietRenderTask final : public Task { 40 public: PietRenderTask(std::vector<PietRenderInstance> instances)41 explicit PietRenderTask(std::vector<PietRenderInstance> instances) 42 : fInstances(std::move(instances)) {} 43 44 ~PietRenderTask() override = default; 45 46 bool prepareResources(ResourceProvider*, const RuntimeEffectDictionary*) override; 47 48 bool addCommands(Context*, CommandBuffer*, ReplayTargetData) override; 49 50 private: 51 std::vector<PietRenderInstance> fInstances; 52 }; 53 54 } // namespace skgpu::graphite 55 56 #endif // skgpu_graphite_PietRenderTask_DEFINED 57