Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
playground_impl_mtl.h
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
5#ifndef FLUTTER_IMPELLER_PLAYGROUND_BACKEND_METAL_PLAYGROUND_IMPL_MTL_H_
6#define FLUTTER_IMPELLER_PLAYGROUND_BACKEND_METAL_PLAYGROUND_IMPL_MTL_H_
7
8#include <memory>
9
14
15namespace impeller {
16
17// Forward declared to avoid objc in a C++ header.
18class ContextMTL;
19
20class PlaygroundImplMTL final : public PlaygroundImpl {
21 public:
22 explicit PlaygroundImplMTL(PlaygroundSwitches switches);
23
25
27 const std::shared_ptr<Capabilities>& capabilities) override;
28
30
31 private:
32 struct Data;
33
34 static void DestroyWindowHandle(WindowHandle handle);
35 using UniqueHandle = std::unique_ptr<void, decltype(&DestroyWindowHandle)>;
36 UniqueHandle handle_;
37
38 // To ensure that ObjC stuff doesn't leak into C++ TUs.
39 std::unique_ptr<Data> data_;
40 std::shared_ptr<ContextMTL> context_;
41 std::shared_ptr<fml::ConcurrentMessageLoop> concurrent_loop_;
42 std::shared_ptr<SwapchainTransientsMTL> swapchain_transients_;
43 std::shared_ptr<fml::SyncSwitch> is_gpu_disabled_sync_switch_;
44
45 // |PlaygroundImpl|
46 std::shared_ptr<Context> GetContext() const override;
47
48 // |PlaygroundImpl|
49 WindowHandle GetWindowHandle() const override;
50
51 // |PlaygroundImpl|
52 std::unique_ptr<Surface> AcquireSurfaceFrame(
53 std::shared_ptr<Context> context) override;
54
55 // |PlaygroundImpl|
56 void SetGPUDisabled(bool disabled) const override;
57
58 PlaygroundImplMTL(const PlaygroundImplMTL&) = delete;
59
60 PlaygroundImplMTL& operator=(const PlaygroundImplMTL&) = delete;
61};
62
63} // namespace impeller
64
65#endif // FLUTTER_IMPELLER_PLAYGROUND_BACKEND_METAL_PLAYGROUND_IMPL_MTL_H_
RuntimeStageBackend GetRuntimeStageBackend() const override
fml::Status SetCapabilities(const std::shared_ptr< Capabilities > &capabilities) override
fuchsia::ui::composition::ParentViewportWatcherHandle handle_