Revert "Revert "[Impeller] Speculatively attempt to fix Metal PSO construction errors on host targets." (#38292)" (#38301)
This reverts commit df430c4fd80c8a3e19fd33fae61623cd1577c762.
diff --git a/impeller/renderer/backend/metal/pipeline_library_mtl.mm b/impeller/renderer/backend/metal/pipeline_library_mtl.mm
index 85272ef..eb220f4 100644
--- a/impeller/renderer/backend/metal/pipeline_library_mtl.mm
+++ b/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 <Metal/Metal.h>
+#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 @@
));
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;
}