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;
 }