• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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