Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit b97d354

Browse files
authored
[Impeller] Speculatively attempt to fix Metal PSO construction errors on host targets. (#38229)
Fixes flutter/flutter#114872 (speculatively) Following up in flutter/flutter#116919.
1 parent 6c190ea commit b97d354

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

impeller/renderer/backend/metal/pipeline_library_mtl.mm

+14-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
// found in the LICENSE file.
44

55
#include "impeller/renderer/backend/metal/pipeline_library_mtl.h"
6+
67
#include <Metal/Metal.h>
78

9+
#include "flutter/fml/build_config.h"
810
#include "flutter/fml/container.h"
911
#include "impeller/base/promise.h"
1012
#include "impeller/renderer/backend/metal/compute_pipeline_mtl.h"
@@ -131,9 +133,19 @@
131133
));
132134
promise->set_value(new_pipeline);
133135
};
134-
[device_ newRenderPipelineStateWithDescriptor:GetMTLRenderPipelineDescriptor(
135-
descriptor)
136+
auto mtl_descriptor = GetMTLRenderPipelineDescriptor(descriptor);
137+
#if FML_OS_IOS
138+
[device_ newRenderPipelineStateWithDescriptor:mtl_descriptor
136139
completionHandler:completion_handler];
140+
#else // FML_OS_IOS
141+
// TODO(116919): Investigate and revert speculative fix to make MTL pipeline
142+
// state creation use a worker.
143+
NSError* error = nil;
144+
auto render_pipeline_state =
145+
[device_ newRenderPipelineStateWithDescriptor:mtl_descriptor
146+
error:&error];
147+
completion_handler(render_pipeline_state, error);
148+
#endif // FML_OS_IOS
137149
return pipeline_future;
138150
}
139151

0 commit comments

Comments
 (0)