6#include <unordered_map>
18 std::optional<PipelineDescriptor> descriptor,
20 if (descriptor.has_value()) {
23 auto promise = std::make_shared<
24 std::promise<std::shared_ptr<Pipeline<PipelineDescriptor>>>>();
25 promise->set_value(
nullptr);
26 return {descriptor, promise->get_future()};
30 std::optional<ComputePipelineDescriptor> descriptor,
32 if (descriptor.has_value()) {
35 auto promise = std::make_shared<
36 std::promise<std::shared_ptr<Pipeline<ComputePipelineDescriptor>>>>();
37 promise->set_value(
nullptr);
38 return {descriptor, promise->get_future()};
42#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG || \
43 FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_PROFILE
45 if (!pipeline_use_counts_.contains(p)) {
46 pipeline_use_counts_[p] = 0;
52#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG || \
53 FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_PROFILE
55 ++pipeline_use_counts_[p];
69#if FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG || \
70 FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_PROFILE
72 counts = pipeline_use_counts_;
A task queue designed for managing compilation of pipeline state objects.
void LogPipelineUsage(const PipelineDescriptor &p)
std::unordered_map< PipelineDescriptor, int, ComparableHash< PipelineDescriptor >, ComparableEqual< PipelineDescriptor > > GetPipelineUseCounts() const
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)