Flutter Impeller
pipeline_library.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_IMPELLER_RENDERER_PIPELINE_LIBRARY_H_
6 #define FLUTTER_IMPELLER_RENDERER_PIPELINE_LIBRARY_H_
7 
8 #include <optional>
9 #include <unordered_map>
10 
14 
15 namespace impeller {
16 
17 class Context;
18 
19 using PipelineMap = std::unordered_map<PipelineDescriptor,
23 
25  std::unordered_map<ComputePipelineDescriptor,
29 
30 class PipelineLibrary : public std::enable_shared_from_this<PipelineLibrary> {
31  public:
32  virtual ~PipelineLibrary();
33 
35  std::optional<PipelineDescriptor> descriptor,
36  bool async = true);
37 
39  std::optional<ComputePipelineDescriptor> descriptor,
40  bool async = true);
41 
42  virtual bool IsValid() const = 0;
43 
45  PipelineDescriptor descriptor,
46  bool async = true) = 0;
47 
49  ComputePipelineDescriptor descriptor,
50  bool async = true) = 0;
51 
52  virtual bool HasPipeline(const PipelineDescriptor& descriptor) = 0;
53 
55  std::shared_ptr<const ShaderFunction> function) = 0;
56 
57  protected:
59 
60  private:
61  PipelineLibrary(const PipelineLibrary&) = delete;
62 
63  PipelineLibrary& operator=(const PipelineLibrary&) = delete;
64 };
65 
66 } // namespace impeller
67 
68 #endif // FLUTTER_IMPELLER_RENDERER_PIPELINE_LIBRARY_H_
virtual bool HasPipeline(const PipelineDescriptor &descriptor)=0
virtual void RemovePipelinesWithEntryPoint(std::shared_ptr< const ShaderFunction > function)=0
virtual PipelineFuture< ComputePipelineDescriptor > GetPipeline(ComputePipelineDescriptor descriptor, bool async=true)=0
virtual bool IsValid() const =0
virtual PipelineFuture< PipelineDescriptor > GetPipeline(PipelineDescriptor descriptor, bool async=true)=0
PipelineFuture< PipelineDescriptor > GetPipeline(std::optional< PipelineDescriptor > descriptor, bool async=true)
std::unordered_map< ComputePipelineDescriptor, PipelineFuture< ComputePipelineDescriptor >, ComparableHash< ComputePipelineDescriptor >, ComparableEqual< ComputePipelineDescriptor > > ComputePipelineMap
std::unordered_map< PipelineDescriptor, PipelineFuture< PipelineDescriptor >, ComparableHash< PipelineDescriptor >, ComparableEqual< PipelineDescriptor > > PipelineMap