Flutter Engine
 
Loading...
Searching...
No Matches
impeller::PlaygroundImplMTL Class Referencefinal

#include <playground_impl_mtl.h>

Inheritance diagram for impeller::PlaygroundImplMTL:
impeller::PlaygroundImpl

Classes

struct  Data
 

Public Member Functions

 PlaygroundImplMTL (PlaygroundSwitches switches)
 
 ~PlaygroundImplMTL ()
 
fml::Status SetCapabilities (const std::shared_ptr< Capabilities > &capabilities) override
 
- Public Member Functions inherited from impeller::PlaygroundImpl
virtual ~PlaygroundImpl ()
 
Vector2 GetContentScale () const
 
virtual Playground::GLProcAddressResolver CreateGLProcAddressResolver () const
 
virtual Playground::VKProcAddressResolver CreateVKProcAddressResolver () const
 

Additional Inherited Members

- Public Types inherited from impeller::PlaygroundImpl
using WindowHandle = void *
 
- Static Public Member Functions inherited from impeller::PlaygroundImpl
static std::unique_ptr< PlaygroundImplCreate (PlaygroundBackend backend, PlaygroundSwitches switches)
 
- Protected Member Functions inherited from impeller::PlaygroundImpl
 PlaygroundImpl (PlaygroundSwitches switches)
 
- Protected Attributes inherited from impeller::PlaygroundImpl
const PlaygroundSwitches switches_
 

Detailed Description

Definition at line 20 of file playground_impl_mtl.h.

Constructor & Destructor Documentation

◆ PlaygroundImplMTL()

impeller::PlaygroundImplMTL::PlaygroundImplMTL ( PlaygroundSwitches  switches)
explicit

Definition at line 65 of file playground_impl_mtl.mm.

66 : PlaygroundImpl(switches),
67 handle_(nullptr, &DestroyWindowHandle),
68 data_(std::make_unique<Data>()),
69 concurrent_loop_(fml::ConcurrentMessageLoop::Create()),
70 is_gpu_disabled_sync_switch_(new fml::SyncSwitch(false)) {
71 ::glfwDefaultWindowHints();
72 ::glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
73 ::glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
74 auto window = ::glfwCreateWindow(1, 1, "Test", nullptr, nullptr);
75 if (!window) {
76 return;
77 }
78
79 auto context = ContextMTL::Create(
80 switches.flags, ShaderLibraryMappingsForPlayground(),
81 is_gpu_disabled_sync_switch_, "Playground Library",
82 switches.enable_wide_gamut
83 ? std::optional<PixelFormat>(PixelFormat::kB10G10R10A10XR)
84 : std::nullopt);
85 if (!context) {
86 return;
87 }
88 NSWindow* cocoa_window = ::glfwGetCocoaWindow(window);
89 if (cocoa_window == nil) {
90 return;
91 }
92 data_->metal_layer = [CAMetalLayer layer];
93 data_->metal_layer.device = ContextMTL::Cast(*context).GetMTLDevice();
94 data_->metal_layer.pixelFormat =
95 ToMTLPixelFormat(context->GetCapabilities()->GetDefaultColorFormat());
96 data_->metal_layer.framebufferOnly = NO;
97 cocoa_window.contentView.layer = data_->metal_layer;
98 cocoa_window.contentView.wantsLayer = YES;
99
100 handle_.reset(window);
101 context_ = std::move(context);
102 swapchain_transients_ = std::make_shared<SwapchainTransientsMTL>(
103 context_->GetResourceAllocator());
104}
static std::shared_ptr< ConcurrentMessageLoop > Create(size_t worker_count=std::thread::hardware_concurrency())
static ContextMTL & Cast(Context &base)
static std::shared_ptr< ContextMTL > Create(const Flags &flags, const std::vector< std::string > &shader_library_paths, std::shared_ptr< const fml::SyncSwitch > is_gpu_disabled_sync_switch)
id< MTLDevice > GetMTLDevice() const
PlaygroundImpl(PlaygroundSwitches switches)
GLFWwindow * window
Definition main.cc:60
#define GLFW_FALSE
static std::vector< std::shared_ptr< fml::Mapping > > ShaderLibraryMappingsForPlayground()
constexpr MTLPixelFormat ToMTLPixelFormat(PixelFormat format)
Definition formats_mtl.h:76
Definition ref_ptr.h:261

References impeller::BackendCast< ContextMTL, Context >::Cast(), impeller::ContextMTL::Create(), impeller::PlaygroundSwitches::enable_wide_gamut, impeller::PlaygroundSwitches::flags, impeller::ContextMTL::GetMTLDevice(), GLFW_FALSE, impeller::kB10G10R10A10XR, impeller::ShaderLibraryMappingsForPlayground(), impeller::ToMTLPixelFormat(), and window.

◆ ~PlaygroundImplMTL()

impeller::PlaygroundImplMTL::~PlaygroundImplMTL ( )
default

Member Function Documentation

◆ SetCapabilities()

fml::Status impeller::PlaygroundImplMTL::SetCapabilities ( const std::shared_ptr< Capabilities > &  capabilities)
overridevirtual

Implements impeller::PlaygroundImpl.

Definition at line 135 of file playground_impl_mtl.mm.

136 {
137 context_->SetCapabilities(capabilities);
138 return fml::Status();
139}

The documentation for this class was generated from the following files: