From 4953bee7f0e44c86fca1251576d80e7e7efa382a Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 12 Dec 2022 14:57:59 -0800 Subject: [PATCH] [Impeller] Speculatively attempt to fix Metal PSO construction errors on host targets. (flutter/engine#38229) Fixes https://github.com/flutter/flutter/issues/114872 (speculatively) Following up in https://github.com/flutter/flutter/issues/116919. --- .../backend/metal/pipeline_library_mtl.mm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/engine/src/flutter/impeller/renderer/backend/metal/pipeline_library_mtl.mm b/engine/src/flutter/impeller/renderer/backend/metal/pipeline_library_mtl.mm index 85272ef16f..eb220f4f0f 100644 --- a/engine/src/flutter/impeller/renderer/backend/metal/pipeline_library_mtl.mm +++ b/engine/src/flutter/impeller/renderer/backend/metal/pipeline_library_mtl.mm @@ -3,8 +3,10 @@ // found in the LICENSE file. #include "impeller/renderer/backend/metal/pipeline_library_mtl.h" + #include +#include "flutter/fml/build_config.h" #include "flutter/fml/container.h" #include "impeller/base/promise.h" #include "impeller/renderer/backend/metal/compute_pipeline_mtl.h" @@ -131,9 +133,19 @@ PipelineFuture PipelineLibraryMTL::GetPipeline( )); promise->set_value(new_pipeline); }; - [device_ newRenderPipelineStateWithDescriptor:GetMTLRenderPipelineDescriptor( - descriptor) + auto mtl_descriptor = GetMTLRenderPipelineDescriptor(descriptor); +#if FML_OS_IOS + [device_ newRenderPipelineStateWithDescriptor:mtl_descriptor completionHandler:completion_handler]; +#else // FML_OS_IOS + // TODO(116919): Investigate and revert speculative fix to make MTL pipeline + // state creation use a worker. + NSError* error = nil; + auto render_pipeline_state = + [device_ newRenderPipelineStateWithDescriptor:mtl_descriptor + error:&error]; + completion_handler(render_pipeline_state, error); +#endif // FML_OS_IOS return pipeline_future; }