33// found in the LICENSE file.
44
55#include " impeller/renderer/pipeline.h"
6+ #include < optional>
67
78#include " compute_pipeline_descriptor.h"
89#include " impeller/base/promise.h"
@@ -24,8 +25,8 @@ PipelineFuture<PipelineDescriptor> CreatePipelineFuture(
2425 const Context& context,
2526 std::optional<PipelineDescriptor> desc) {
2627 if (!context.IsValid ()) {
27- return RealizedFuture<std::shared_ptr<Pipeline<PipelineDescriptor>>>(
28- nullptr );
28+ return {desc, RealizedFuture<std::shared_ptr<Pipeline<PipelineDescriptor>>>(
29+ nullptr )} ;
2930 }
3031
3132 return context.GetPipelineLibrary ()->GetPipeline (std::move (desc));
@@ -35,8 +36,10 @@ PipelineFuture<ComputePipelineDescriptor> CreatePipelineFuture(
3536 const Context& context,
3637 std::optional<ComputePipelineDescriptor> desc) {
3738 if (!context.IsValid ()) {
38- return RealizedFuture<std::shared_ptr<Pipeline<ComputePipelineDescriptor>>>(
39- nullptr );
39+ return {
40+ desc,
41+ RealizedFuture<std::shared_ptr<Pipeline<ComputePipelineDescriptor>>>(
42+ nullptr )};
4043 }
4144
4245 return context.GetPipelineLibrary ()->GetPipeline (std::move (desc));
@@ -51,7 +54,8 @@ template <typename T>
5154PipelineFuture<T> Pipeline<T>::CreateVariant(
5255 std::function<void (T& desc)> descriptor_callback) const {
5356 if (!descriptor_callback) {
54- return RealizedFuture<std::shared_ptr<Pipeline<T>>>(nullptr );
57+ return {std::nullopt ,
58+ RealizedFuture<std::shared_ptr<Pipeline<T>>>(nullptr )};
5559 }
5660
5761 auto copied_desc = desc_;
@@ -62,7 +66,7 @@ PipelineFuture<T> Pipeline<T>::CreateVariant(
6266 if (!library) {
6367 VALIDATION_LOG << " The library from which this pipeline was created was "
6468 " already collected." ;
65- return RealizedFuture<std::shared_ptr<Pipeline<T>>>(nullptr );
69+ return {desc_, RealizedFuture<std::shared_ptr<Pipeline<T>>>(nullptr )} ;
6670 }
6771
6872 return library->GetPipeline (std::move (copied_desc));
0 commit comments