Flutter Impeller
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 
6 #include "flutter/testing/testing.h"
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 
23 namespace impeller {
24 
25 std::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);
32 #endif // IMPELLER_ENABLE_METAL
33 #if IMPELLER_ENABLE_OPENGLES
35  return std::make_unique<PlaygroundImplGLES>(switches);
36 #endif // IMPELLER_ENABLE_OPENGLES
37 #if IMPELLER_ENABLE_VULKAN
40  FML_CHECK(false) << "Attempted to create playground with backend that "
41  "isn't available or was disabled on this platform: "
42  << PlaygroundBackendToString(backend);
43  }
44  switches.enable_vulkan_validation = true;
45  return std::make_unique<PlaygroundImplVK>(switches);
46 #endif // IMPELLER_ENABLE_VULKAN
47  default:
48  FML_CHECK(false) << "Attempted to create playground with backend that "
49  "isn't available or was disabled on this platform: "
50  << PlaygroundBackendToString(backend);
51  }
52  FML_UNREACHABLE();
53 }
54 
56  : switches_(switches) {}
57 
59 
61  auto window = reinterpret_cast<GLFWwindow*>(GetWindowHandle());
62 
63  Vector2 scale(1, 1);
64  ::glfwGetWindowContentScale(window, &scale.x, &scale.y);
65 
66  return scale;
67 }
68 
69 } // namespace impeller
impeller::PlaygroundImplVK::IsVulkanDriverPresent
static bool IsVulkanDriverPresent()
Definition: playground_impl_vk.cc:216
impeller::PlaygroundBackend::kVulkan
@ kVulkan
playground_impl_gles.h
impeller::PlaygroundBackend::kMetal
@ kMetal
impeller::PlaygroundBackendToString
std::string PlaygroundBackendToString(PlaygroundBackend backend)
Definition: playground.cc:44
impeller::PlaygroundBackend
PlaygroundBackend
Definition: playground.h:29
impeller::PlaygroundImpl::~PlaygroundImpl
virtual ~PlaygroundImpl()
impeller::PlaygroundImpl::GetContentScale
Vector2 GetContentScale() const
Definition: playground_impl.cc:60
playground_impl_mtl.h
impeller::PlaygroundImpl::Create
static std::unique_ptr< PlaygroundImpl > Create(PlaygroundBackend backend, PlaygroundSwitches switches)
Definition: playground_impl.cc:25
impeller::PlaygroundImpl::GetWindowHandle
virtual WindowHandle GetWindowHandle() const =0
impeller::PlaygroundBackend::kOpenGLES
@ kOpenGLES
playground_impl_vk.h
impeller::PlaygroundSwitches
Definition: switches.h:16
impeller::TPoint< Scalar >
scale
const Scalar scale
Definition: stroke_path_geometry.cc:297
impeller::PlaygroundSwitches::enable_vulkan_validation
bool enable_vulkan_validation
Definition: switches.h:22
playground_impl.h
impeller::PlaygroundImpl::PlaygroundImpl
PlaygroundImpl(PlaygroundSwitches switches)
Definition: playground_impl.cc:55
impeller
Definition: aiks_blur_unittests.cc:20