5#ifndef FLUTTER_IMPELLER_RENDERER_PIPELINE_LIBRARY_H_
6#define FLUTTER_IMPELLER_RENDERER_PIPELINE_LIBRARY_H_
9#include <unordered_map>
38 std::optional<PipelineDescriptor> descriptor,
42 std::optional<ComputePipelineDescriptor> descriptor,
69 bool threadsafe =
false) = 0;
73 bool async =
true) = 0;
78 std::shared_ptr<const ShaderFunction> function) = 0;
105#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG || \
106 FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_PROFILE
107 mutable RWMutex pipeline_use_counts_mutex_;
A task queue designed for managing compilation of pipeline state objects.
virtual PipelineFuture< ComputePipelineDescriptor > GetPipeline(ComputePipelineDescriptor descriptor, bool async=true)=0
virtual bool HasPipeline(const PipelineDescriptor &descriptor)=0
virtual void RemovePipelinesWithEntryPoint(std::shared_ptr< const ShaderFunction > function)=0
void LogPipelineUsage(const PipelineDescriptor &p)
std::unordered_map< PipelineDescriptor, int, ComparableHash< PipelineDescriptor >, ComparableEqual< PipelineDescriptor > > GetPipelineUseCounts() const
virtual bool IsValid() const =0
virtual PipelineCompileQueue * GetPipelineCompileQueue() const
If this library has a configurable compile queue, return a pointer to it.
virtual ~PipelineLibrary()
void LogPipelineCreation(const PipelineDescriptor &p)
PipelineFuture< PipelineDescriptor > GetPipeline(std::optional< PipelineDescriptor > descriptor, bool async=true)
virtual PipelineFuture< PipelineDescriptor > GetPipeline(PipelineDescriptor descriptor, bool async=true, bool threadsafe=false)=0
Creates a pipeline.
std::unordered_map< ComputePipelineDescriptor, PipelineFuture< ComputePipelineDescriptor >, ComparableHash< ComputePipelineDescriptor >, ComparableEqual< ComputePipelineDescriptor > > ComputePipelineMap
std::unordered_map< PipelineDescriptor, PipelineFuture< PipelineDescriptor >, ComparableHash< PipelineDescriptor >, ComparableEqual< PipelineDescriptor > > PipelineMap
#define IPLR_GUARDED_BY(x)