Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
playground_impl.cc
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
7
8#define GLFW_INCLUDE_NONE
9#include "third_party/glfw/include/GLFW/glfw3.h"
10
11#if IMPELLER_ENABLE_METAL
13#endif // IMPELLER_ENABLE_METAL
14
15#if IMPELLER_ENABLE_OPENGLES
17#endif // IMPELLER_ENABLE_OPENGLES
18
19#if IMPELLER_ENABLE_VULKAN
21#endif // IMPELLER_ENABLE_VULKAN
22
23namespace impeller {
24
25std::unique_ptr<PlaygroundImpl> PlaygroundImpl::Create(
26 PlaygroundBackend backend,
27 PlaygroundSwitches switches) {
28 switch (backend) {
29#if IMPELLER_ENABLE_METAL
31 return std::make_unique<PlaygroundImplMTL>(switches);
33 switches.flags.use_sdfs = true;
34 return std::make_unique<PlaygroundImplMTL>(switches);
35#endif // IMPELLER_ENABLE_METAL
36#if IMPELLER_ENABLE_OPENGLES
38 return std::make_unique<PlaygroundImplGLES>(switches);
39#endif // IMPELLER_ENABLE_OPENGLES
40#if IMPELLER_ENABLE_VULKAN
43 FML_CHECK(false) << "Attempted to create playground with backend that "
44 "isn't available or was disabled on this platform: "
45 << PlaygroundBackendToString(backend);
46 }
47 switches.enable_vulkan_validation = true;
48 return std::make_unique<PlaygroundImplVK>(switches);
49#endif // IMPELLER_ENABLE_VULKAN
50 default:
51 FML_CHECK(false) << "Attempted to create playground with backend that "
52 "isn't available or was disabled on this platform: "
53 << PlaygroundBackendToString(backend);
54 }
56}
57
59 : switches_(switches) {}
60
62
64 auto window = reinterpret_cast<GLFWwindow*>(GetWindowHandle());
65
66 Vector2 scale(1, 1);
67 ::glfwGetWindowContentScale(window, &scale.x, &scale.y);
68
69 return scale;
70}
71
76
81
82} // namespace impeller
std::function< void *(void *instance, const char *proc_name)> VKProcAddressResolver
Definition playground.h:111
std::function< void *(const char *proc_name)> GLProcAddressResolver
Definition playground.h:107
PlaygroundImpl(PlaygroundSwitches switches)
Vector2 GetContentScale() const
virtual WindowHandle GetWindowHandle() const =0
static std::unique_ptr< PlaygroundImpl > Create(PlaygroundBackend backend, PlaygroundSwitches switches)
virtual Playground::GLProcAddressResolver CreateGLProcAddressResolver() const
virtual Playground::VKProcAddressResolver CreateVKProcAddressResolver() const
GLFWwindow * window
Definition main.cc:60
#define FML_CHECK(condition)
Definition logging.h:104
#define FML_UNREACHABLE()
Definition logging.h:128
std::string PlaygroundBackendToString(PlaygroundBackend backend)
Definition playground.cc:47
PlaygroundBackend
Definition playground.h:26
bool use_sdfs
Use SDFs for rendering.
Definition flags.h:13