Flutter iOS Embedder
ios_context.mm
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
6 
7 #include <memory>
8 
9 #include "flutter/fml/logging.h"
10 #import "flutter/shell/platform/darwin/common/InternalFlutterSwiftCommon/InternalFlutterSwiftCommon.h"
14 
16 
17 namespace flutter {
18 
19 IOSContext::IOSContext() = default;
20 
21 IOSContext::~IOSContext() = default;
22 
23 std::unique_ptr<IOSContext> IOSContext::Create(
24  IOSRenderingAPI api,
25  IOSRenderingBackend backend,
26  const std::shared_ptr<const fml::SyncSwitch>& is_gpu_disabled_sync_switch,
27  const Settings& settings) {
28  switch (api) {
30  [FlutterLogger logImportant:@"Software rendering is incompatible with Impeller.\n"
31  "Software rendering may have been automatically selected when "
32  "running on a simulator in an environment that does not support "
33  "Metal. Enabling GPU passthrough in your environment may fix "
34  "this."];
35  return std::make_unique<IOSContextNoop>();
37  switch (backend) {
39  [FlutterLogger logFatal:@"Impeller opt-out unavailable."];
40  return nullptr;
42  return std::make_unique<IOSContextMetalImpeller>(settings, is_gpu_disabled_sync_switch);
43  }
44  default:
45  break;
46  }
47  FML_CHECK(false);
48  return nullptr;
49 }
50 
52  // Overridden by Impeller subclasses.
54 }
55 
56 std::shared_ptr<impeller::Context> IOSContext::GetImpellerContext() const {
57  return nullptr;
58 }
59 
60 std::shared_ptr<impeller::AiksContext> IOSContext::GetAiksContext() const {
61  return nullptr;
62 }
63 
64 } // namespace flutter
virtual std::shared_ptr< impeller::Context > GetImpellerContext() const
Definition: ios_context.mm:56
static std::unique_ptr< IOSContext > Create(IOSRenderingAPI api, IOSRenderingBackend backend, const std::shared_ptr< const fml::SyncSwitch > &is_gpu_disabled_sync_switch, const Settings &settings)
Create an iOS context object capable of creating the on-screen and off-screen GPU context for use by ...
Definition: ios_context.mm:23
virtual ~IOSContext()
Collects the context object. This must happen on the thread on which this object was created.
virtual IOSRenderingBackend GetBackend() const
Get the rendering backend used by this context.
Definition: ios_context.mm:51
virtual std::shared_ptr< impeller::AiksContext > GetAiksContext() const
Definition: ios_context.mm:60