Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
impeller::Playground Class Referenceabstract

#include <playground.h>

Inheritance diagram for impeller::Playground:
impeller::ComputePlaygroundTest impeller::PlaygroundTest impeller::AiksPlayground impeller::DlPlayground impeller::EntityPlayground impeller::RuntimeStagePlayground impeller::interop::testing::PlaygroundTest impeller::testing::RendererDartTest impeller::testing::BlendFilterContentsTest impeller::testing::GaussianBlurFilterContentsTest impeller::testing::MatrixFilterContentsTest impeller::testing::MorphologyFilterContentsTest

Public Types

using SinglePassCallback = std::function< bool(RenderPass &pass)>
 
using RenderCallback = std::function< bool(RenderTarget &render_target)>
 
using GLProcAddressResolver = std::function< void *(const char *proc_name)>
 
using VKProcAddressResolver = std::function< void *(void *instance, const char *proc_name)>
 

Public Member Functions

 Playground (PlaygroundSwitches switches)
 
virtual ~Playground ()
 
void SetupContext (PlaygroundBackend backend, const PlaygroundSwitches &switches)
 
void SetupWindow ()
 
void TeardownWindow ()
 
bool IsPlaygroundEnabled () const
 
Point GetCursorPosition () const
 
ISize GetWindowSize () const
 
IRect GetWindowBounds () const
 
Point GetContentScale () const
 
Scalar GetSecondsElapsed () const
 Get the amount of time elapsed from the start of the playground's execution.
 
std::shared_ptr< ContextGetContext () const
 
std::shared_ptr< ContextMakeContext () const
 
bool OpenPlaygroundHere (const RenderCallback &render_callback)
 
bool OpenPlaygroundHere (SinglePassCallback pass_callback)
 
std::shared_ptr< TextureCreateTextureForFixture (const char *fixture_name, bool enable_mipmapping=false) const
 
std::shared_ptr< TextureCreateTextureCubeForFixture (std::array< const char *, 6 > fixture_names) const
 
virtual std::unique_ptr< fml::MappingOpenAssetAsMapping (std::string asset_name) const =0
 
virtual std::string GetWindowTitle () const =0
 
fml::Status SetCapabilities (const std::shared_ptr< Capabilities > &capabilities)
 
bool WillRenderSomething () const
 Returns true if OpenPlaygroundHere will actually render anything.
 
GLProcAddressResolver CreateGLProcAddressResolver () const
 
VKProcAddressResolver CreateVKProcAddressResolver () const
 
void SetGPUDisabled (bool disabled) const
 Mark the GPU as unavilable.
 
RuntimeStageBackend GetRuntimeStageBackend () const
 

Static Public Member Functions

static bool ShouldOpenNewPlaygrounds ()
 
static std::shared_ptr< CompressedImageLoadFixtureImageCompressed (std::shared_ptr< fml::Mapping > mapping)
 
static std::optional< DecompressedImageDecodeImageRGBA (const std::shared_ptr< CompressedImage > &compressed)
 
static std::shared_ptr< TextureCreateTextureForMapping (const std::shared_ptr< Context > &context, std::shared_ptr< fml::Mapping > mapping, bool enable_mipmapping=false)
 
static bool SupportsBackend (PlaygroundBackend backend)
 

Protected Member Functions

virtual bool ShouldKeepRendering () const
 
void SetWindowSize (ISize size)
 

Protected Attributes

const PlaygroundSwitches switches_
 

Detailed Description

Definition at line 35 of file playground.h.

Member Typedef Documentation

◆ GLProcAddressResolver

using impeller::Playground::GLProcAddressResolver = std::function<void*(const char* proc_name)>

Definition at line 107 of file playground.h.

◆ RenderCallback

using impeller::Playground::RenderCallback = std::function<bool(RenderTarget& render_target)>

Definition at line 70 of file playground.h.

◆ SinglePassCallback

using impeller::Playground::SinglePassCallback = std::function<bool(RenderPass& pass)>

Definition at line 37 of file playground.h.

◆ VKProcAddressResolver

using impeller::Playground::VKProcAddressResolver = std::function<void*(void* instance, const char* proc_name)>

Definition at line 110 of file playground.h.

Constructor & Destructor Documentation

◆ Playground()

impeller::Playground::Playground ( PlaygroundSwitches  switches)
explicit

Definition at line 87 of file playground.cc.

87 : switches_(switches) {
90}
const PlaygroundSwitches switches_
Definition playground.h:122
void SetupSwiftshaderOnce(bool use_swiftshader)
Find and setup the installable client driver for a locally built SwiftShader at known paths....
static void InitializeGLFWOnce()
Definition playground.cc:61

References impeller::InitializeGLFWOnce(), flutter::testing::SetupSwiftshaderOnce(), switches_, and impeller::PlaygroundSwitches::use_swiftshader.

◆ ~Playground()

impeller::Playground::~Playground ( )
virtualdefault

Member Function Documentation

◆ CreateGLProcAddressResolver()

Playground::GLProcAddressResolver impeller::Playground::CreateGLProcAddressResolver ( ) const

Definition at line 528 of file playground.cc.

529 {
530 return impl_->CreateGLProcAddressResolver();
531}

Referenced by impeller::interop::testing::PlaygroundTest::CreateContext().

◆ CreateTextureCubeForFixture()

std::shared_ptr< Texture > impeller::Playground::CreateTextureCubeForFixture ( std::array< const char *, 6 >  fixture_names) const

Definition at line 466 of file playground.cc.

467 {
468 std::array<DecompressedImage, 6> images;
469 for (size_t i = 0; i < fixture_names.size(); i++) {
470 auto image = DecodeImageRGBA(
472 if (!image.has_value()) {
473 return nullptr;
474 }
475 images[i] = image.value();
476 }
477
478 TextureDescriptor texture_descriptor;
479 texture_descriptor.storage_mode = StorageMode::kDevicePrivate;
480 texture_descriptor.type = TextureType::kTextureCube;
481 texture_descriptor.format = PixelFormat::kR8G8B8A8UNormInt;
482 texture_descriptor.size = images[0].GetSize();
483 texture_descriptor.mip_count = 1u;
484
485 auto texture =
486 context_->GetResourceAllocator()->CreateTexture(texture_descriptor);
487 if (!texture) {
488 VALIDATION_LOG << "Could not allocate texture cube.";
489 return nullptr;
490 }
491 texture->SetLabel("Texture cube");
492
493 auto cmd_buffer = context_->CreateCommandBuffer();
494 auto blit_pass = cmd_buffer->CreateBlitPass();
495 for (size_t i = 0; i < fixture_names.size(); i++) {
496 auto device_buffer = context_->GetResourceAllocator()->CreateBufferWithCopy(
497 *images[i].GetAllocation());
498 blit_pass->AddCopy(DeviceBuffer::AsBufferView(device_buffer), texture, {},
499 "", /*mip_level=*/0, /*slice=*/i);
500 }
501
502 if (!blit_pass->EncodeCommands() ||
503 !context_->GetCommandQueue()->Submit({std::move(cmd_buffer)}).ok()) {
504 VALIDATION_LOG << "Could not upload texture to device memory.";
505 return nullptr;
506 }
507
508 return texture;
509}
static BufferView AsBufferView(std::shared_ptr< DeviceBuffer > buffer)
Create a buffer view of this entire buffer.
static std::shared_ptr< CompressedImage > LoadFixtureImageCompressed(std::shared_ptr< fml::Mapping > mapping)
virtual std::unique_ptr< fml::Mapping > OpenAssetAsMapping(std::string asset_name) const =0
static std::optional< DecompressedImage > DecodeImageRGBA(const std::shared_ptr< CompressedImage > &compressed)
FlutterVulkanImage * image
FlTexture * texture
std::array< MockImage, 3 > images
uint32_t format
The VkFormat of the image (for example: VK_FORMAT_R8G8B8A8_UNORM).
Definition embedder.h:940
#define VALIDATION_LOG
Definition validation.h:91

References impeller::DeviceBuffer::AsBufferView(), DecodeImageRGBA(), impeller::TextureDescriptor::format, i, image, images, impeller::kDevicePrivate, impeller::kR8G8B8A8UNormInt, impeller::kTextureCube, LoadFixtureImageCompressed(), impeller::TextureDescriptor::mip_count, OpenAssetAsMapping(), impeller::TextureDescriptor::size, impeller::TextureDescriptor::storage_mode, texture, impeller::TextureDescriptor::type, and VALIDATION_LOG.

◆ CreateTextureForFixture()

std::shared_ptr< Texture > impeller::Playground::CreateTextureForFixture ( const char *  fixture_name,
bool  enable_mipmapping = false 
) const

Definition at line 454 of file playground.cc.

456 {
458 context_, OpenAssetAsMapping(fixture_name), enable_mipmapping);
459 if (texture == nullptr) {
460 return nullptr;
461 }
462 texture->SetLabel(fixture_name);
463 return texture;
464}
static std::shared_ptr< Texture > CreateTextureForMapping(const std::shared_ptr< Context > &context, std::shared_ptr< fml::Mapping > mapping, bool enable_mipmapping=false)

References CreateTextureForMapping(), OpenAssetAsMapping(), and texture.

◆ CreateTextureForMapping()

std::shared_ptr< Texture > impeller::Playground::CreateTextureForMapping ( const std::shared_ptr< Context > &  context,
std::shared_ptr< fml::Mapping mapping,
bool  enable_mipmapping = false 
)
static

Definition at line 441 of file playground.cc.

444 {
446 Playground::LoadFixtureImageCompressed(std::move(mapping)));
447 if (!image.has_value()) {
448 return nullptr;
449 }
450 return CreateTextureForDecompressedImage(context, image.value(),
451 enable_mipmapping);
452}
static std::shared_ptr< Texture > CreateTextureForDecompressedImage(const std::shared_ptr< Context > &context, DecompressedImage &decompressed_image, bool enable_mipmapping)

References impeller::CreateTextureForDecompressedImage(), DecodeImageRGBA(), image, and LoadFixtureImageCompressed().

Referenced by impeller::DlPlayground::CreateDlImageForFixture(), impeller::GoldenPlaygroundTest::CreateTextureForFixture(), and CreateTextureForFixture().

◆ CreateVKProcAddressResolver()

Playground::VKProcAddressResolver impeller::Playground::CreateVKProcAddressResolver ( ) const

Definition at line 533 of file playground.cc.

534 {
535 return impl_->CreateVKProcAddressResolver();
536}

Referenced by impeller::interop::testing::PlaygroundTest::CreateContext().

◆ DecodeImageRGBA()

std::optional< DecompressedImage > impeller::Playground::DecodeImageRGBA ( const std::shared_ptr< CompressedImage > &  compressed)
static

Definition at line 380 of file playground.cc.

381 {
382 if (compressed == nullptr) {
383 return std::nullopt;
384 }
385 // The decoded image is immediately converted into RGBA as that format is
386 // known to be supported everywhere. For image sources that don't need 32
387 // bit pixel strides, this is overkill. Since this is a test fixture we
388 // aren't necessarily trying to eke out memory savings here and instead
389 // favor simplicity.
390 auto image = compressed->Decode().ConvertToRGBA();
391 if (!image.IsValid()) {
392 VALIDATION_LOG << "Could not decode image.";
393 return std::nullopt;
394 }
395
396 return image;
397}

References image, and VALIDATION_LOG.

Referenced by CreateTextureCubeForFixture(), CreateTextureForMapping(), and impeller::interop::testing::PlaygroundTest::OpenAssetAsHPPTexture().

◆ GetContentScale()

Point impeller::Playground::GetContentScale ( ) const

◆ GetContext()

◆ GetCursorPosition()

Point impeller::Playground::GetCursorPosition ( ) const

Definition at line 185 of file playground.cc.

185 {
186 return cursor_position_;
187}

◆ GetRuntimeStageBackend()

RuntimeStageBackend impeller::Playground::GetRuntimeStageBackend ( ) const

Definition at line 542 of file playground.cc.

542 {
543 return impl_->GetRuntimeStageBackend();
544}

◆ GetSecondsElapsed()

Scalar impeller::Playground::GetSecondsElapsed ( ) const

Get the amount of time elapsed from the start of the playground's execution.

Definition at line 201 of file playground.cc.

201 {
202 return (fml::TimePoint::Now().ToEpochDelta() - start_time_).ToSecondsF();
203}
static TimePoint Now()
Definition time_point.cc:49

References fml::TimePoint::Now().

◆ GetWindowBounds()

IRect impeller::Playground::GetWindowBounds ( ) const

Definition at line 193 of file playground.cc.

193 {
194 return IRect::MakeSize(window_size_);
195}
static constexpr TRect MakeSize(const TSize< U > &size)
Definition rect.h:150

References impeller::TRect< T >::MakeSize().

◆ GetWindowSize()

ISize impeller::Playground::GetWindowSize ( ) const

◆ GetWindowTitle()

virtual std::string impeller::Playground::GetWindowTitle ( ) const
pure virtual

◆ IsPlaygroundEnabled()

bool impeller::Playground::IsPlaygroundEnabled ( ) const

◆ LoadFixtureImageCompressed()

std::shared_ptr< CompressedImage > impeller::Playground::LoadFixtureImageCompressed ( std::shared_ptr< fml::Mapping mapping)
static

Definition at line 369 of file playground.cc.

370 {
371 auto compressed_image = CompressedImageSkia::Create(std::move(mapping));
372 if (!compressed_image) {
373 VALIDATION_LOG << "Could not create compressed image.";
374 return nullptr;
375 }
376
377 return compressed_image;
378}
static std::shared_ptr< CompressedImage > Create(std::shared_ptr< const fml::Mapping > allocation)

References impeller::CompressedImageSkia::Create(), and VALIDATION_LOG.

Referenced by CreateTextureCubeForFixture(), CreateTextureForMapping(), and impeller::interop::testing::PlaygroundTest::OpenAssetAsHPPTexture().

◆ MakeContext()

std::shared_ptr< Context > impeller::Playground::MakeContext ( ) const

Definition at line 98 of file playground.cc.

98 {
99 // Playgrounds are already making a context for each test, so we can just
100 // return the `context_`.
101 return context_;
102}

◆ OpenAssetAsMapping()

virtual std::unique_ptr< fml::Mapping > impeller::Playground::OpenAssetAsMapping ( std::string  asset_name) const
pure virtual

◆ OpenPlaygroundHere() [1/2]

bool impeller::Playground::OpenPlaygroundHere ( const RenderCallback render_callback)

Definition at line 209 of file playground.cc.

210 {
212 return true;
213 }
214
215 if (!render_callback) {
216 return true;
217 }
218
219 IMGUI_CHECKVERSION();
220 ImGui::CreateContext();
221 fml::ScopedCleanupClosure destroy_imgui_context(
222 []() { ImGui::DestroyContext(); });
223 ImGui::StyleColorsDark();
224
225 auto& io = ImGui::GetIO();
226 io.IniFilename = nullptr;
227 io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
228 io.ConfigWindowsResizeFromEdges = true;
229
230 auto window = reinterpret_cast<GLFWwindow*>(impl_->GetWindowHandle());
231 if (!window) {
232 return false;
233 }
234 ::glfwSetWindowTitle(window, GetWindowTitle().c_str());
235 ::glfwSetWindowUserPointer(window, this);
236 ::glfwSetWindowSizeCallback(
237 window, [](GLFWwindow* window, int width, int height) -> void {
238 auto playground =
239 reinterpret_cast<Playground*>(::glfwGetWindowUserPointer(window));
240 if (!playground) {
241 return;
242 }
243 playground->SetWindowSize(ISize{width, height}.Max({}));
244 });
245 ::glfwSetKeyCallback(window, &PlaygroundKeyCallback);
246 ::glfwSetCursorPosCallback(window, [](GLFWwindow* window, double x,
247 double y) {
248 reinterpret_cast<Playground*>(::glfwGetWindowUserPointer(window))
249 ->SetCursorPosition({static_cast<Scalar>(x), static_cast<Scalar>(y)});
250 });
251
252 ImGui_ImplGlfw_InitForOther(window, true);
253 fml::ScopedCleanupClosure shutdown_imgui([]() { ImGui_ImplGlfw_Shutdown(); });
254
255 ImGui_ImplImpeller_Init(context_);
256 fml::ScopedCleanupClosure shutdown_imgui_impeller(
257 []() { ImGui_ImplImpeller_Shutdown(); });
258
259 ImGui::SetNextWindowPos({10, 10});
260
261 ::glfwSetWindowSize(window, GetWindowSize().width, GetWindowSize().height);
262 ::glfwSetWindowPos(window, 200, 100);
263 ::glfwShowWindow(window);
264
265 while (true) {
266#if FML_OS_MACOSX
268#endif
269 ::glfwPollEvents();
270
271 if (::glfwWindowShouldClose(window)) {
272 return true;
273 }
274
275 ImGui_ImplGlfw_NewFrame();
276
277 auto surface = impl_->AcquireSurfaceFrame(context_);
278 RenderTarget render_target = surface->GetRenderTarget();
279
280 ImGui::NewFrame();
281 ImGui::DockSpaceOverViewport(0, ImGui::GetMainViewport(),
282 ImGuiDockNodeFlags_PassthruCentralNode);
283 bool result = render_callback(render_target);
284 ImGui::Render();
285
286 // Render ImGui overlay.
287 {
288 auto buffer = context_->CreateCommandBuffer();
289 if (!buffer) {
290 VALIDATION_LOG << "Could not create command buffer.";
291 return false;
292 }
293 buffer->SetLabel("ImGui Command Buffer");
294
295 auto color0 = render_target.GetColorAttachment(0);
296 color0.load_action = LoadAction::kLoad;
297 if (color0.resolve_texture) {
298 color0.texture = color0.resolve_texture;
299 color0.resolve_texture = nullptr;
300 color0.store_action = StoreAction::kStore;
301 }
302 render_target.SetColorAttachment(color0, 0);
303 render_target.SetStencilAttachment(std::nullopt);
304 render_target.SetDepthAttachment(std::nullopt);
305
306 auto pass = buffer->CreateRenderPass(render_target);
307 if (!pass) {
308 VALIDATION_LOG << "Could not create render pass.";
309 return false;
310 }
311 pass->SetLabel("ImGui Render Pass");
312 if (!host_buffer_) {
313 host_buffer_ = HostBuffer::Create(
314 context_->GetResourceAllocator(), context_->GetIdleWaiter(),
315 context_->GetCapabilities()->GetMinimumUniformAlignment());
316 }
317
318 ImGui_ImplImpeller_RenderDrawData(ImGui::GetDrawData(), *pass,
319 *host_buffer_);
320
321 pass->EncodeCommands();
322
323 if (!context_->GetCommandQueue()->Submit({buffer}).ok()) {
324 return false;
325 }
326 }
327
328 if (!result || !surface->Present()) {
329 return false;
330 }
331
332 if (!ShouldKeepRendering()) {
333 break;
334 }
335 }
336
337 ::glfwHideWindow(window);
338
339 return true;
340}
Wraps a closure that is invoked in the destructor unless released by the caller.
Definition closure.h:32
static std::shared_ptr< HostBuffer > Create(const std::shared_ptr< Allocator > &allocator, const std::shared_ptr< const IdleWaiter > &idle_waiter, size_t minimum_uniform_alignment)
Playground(PlaygroundSwitches switches)
Definition playground.cc:87
virtual bool ShouldKeepRendering() const
ISize GetWindowSize() const
virtual std::string GetWindowTitle() const =0
int32_t x
GLFWwindow * window
Definition main.cc:60
VkSurfaceKHR surface
Definition main.cc:65
void ImGui_ImplImpeller_RenderDrawData(ImDrawData *draw_data, impeller::RenderPass &render_pass, impeller::HostBuffer &host_buffer)
bool ImGui_ImplImpeller_Init(const std::shared_ptr< impeller::Context > &context)
void ImGui_ImplImpeller_Shutdown()
double y
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir Path to the cache directory This is different from the persistent_cache_path in embedder which is used for Skia shader cache icu native lib Path to the library file that exports the ICU data vm service The hostname IP address on which the Dart VM Service should be served If not defaults to or::depending on whether ipv6 is specified disable vm Disable the Dart VM Service The Dart VM Service is never available in release mode Bind to the IPv6 localhost address for the Dart VM Service Ignored if vm service host is set profile Make the profiler discard new samples once the profiler sample buffer is full When this flag is not the profiler sample buffer is used as a ring buffer
Definition switch_defs.h:98
float Scalar
Definition scalar.h:19
static void PlaygroundKeyCallback(GLFWwindow *window, int key, int scancode, int action, int mods)
ISize64 ISize
Definition size.h:162
int32_t height
int32_t width
constexpr TSize Max(const TSize &o) const
Definition size.h:97

References impeller::HostBuffer::Create(), impeller::PlaygroundSwitches::enable_playground, impeller::RenderTarget::GetColorAttachment(), GetWindowSize(), GetWindowTitle(), height, ImGui_ImplImpeller_Init(), ImGui_ImplImpeller_RenderDrawData(), ImGui_ImplImpeller_Shutdown(), impeller::kLoad, impeller::kStore, impeller::Attachment::load_action, impeller::TSize< T >::Max(), impeller::PlaygroundKeyCallback(), impeller::RenderTarget::SetColorAttachment(), impeller::RenderTarget::SetDepthAttachment(), impeller::RenderTarget::SetStencilAttachment(), SetWindowSize(), ShouldKeepRendering(), surface, switches_, VALIDATION_LOG, width, window, x, and y.

Referenced by impeller::AiksPlayground::OpenPlaygroundHere(), impeller::DlPlayground::OpenPlaygroundHere(), impeller::EntityPlayground::OpenPlaygroundHere(), impeller::EntityPlayground::OpenPlaygroundHere(), impeller::interop::testing::PlaygroundTest::OpenPlaygroundHere(), OpenPlaygroundHere(), impeller::testing::RendererDartTest::RenderDartToPlayground(), impeller::testing::TEST_P(), impeller::testing::TEST_P(), and impeller::testing::TEST_P().

◆ OpenPlaygroundHere() [2/2]

bool impeller::Playground::OpenPlaygroundHere ( SinglePassCallback  pass_callback)

Definition at line 342 of file playground.cc.

342 {
343 return OpenPlaygroundHere(
344 [context = GetContext(), &pass_callback](RenderTarget& render_target) {
345 auto buffer = context->CreateCommandBuffer();
346 if (!buffer) {
347 return false;
348 }
349 buffer->SetLabel("Playground Command Buffer");
350
351 auto pass = buffer->CreateRenderPass(render_target);
352 if (!pass) {
353 return false;
354 }
355 pass->SetLabel("Playground Render Pass");
356
357 if (!pass_callback(*pass)) {
358 return false;
359 }
360
361 pass->EncodeCommands();
362 if (!context->GetCommandQueue()->Submit({buffer}).ok()) {
363 return false;
364 }
365 return true;
366 });
367}
bool OpenPlaygroundHere(const RenderCallback &render_callback)
std::shared_ptr< Context > GetContext() const
Definition playground.cc:94

References GetContext(), and OpenPlaygroundHere().

◆ SetCapabilities()

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

Definition at line 519 of file playground.cc.

520 {
521 return impl_->SetCapabilities(capabilities);
522}

◆ SetGPUDisabled()

void impeller::Playground::SetGPUDisabled ( bool  disabled) const

Mark the GPU as unavilable.

Only supported on the Metal backend.

Definition at line 538 of file playground.cc.

538 {
539 impl_->SetGPUDisabled(value);
540}

References value.

◆ SetupContext()

void impeller::Playground::SetupContext ( PlaygroundBackend  backend,
const PlaygroundSwitches switches 
)

Definition at line 129 of file playground.cc.

130 {
131 FML_CHECK(SupportsBackend(backend));
132
133 impl_ = PlaygroundImpl::Create(backend, switches);
134 if (!impl_) {
135 FML_LOG(WARNING) << "PlaygroundImpl::Create failed.";
136 return;
137 }
138
139 context_ = impl_->GetContext();
140}
static bool SupportsBackend(PlaygroundBackend backend)
static std::unique_ptr< PlaygroundImpl > Create(PlaygroundBackend backend, PlaygroundSwitches switches)
#define FML_LOG(severity)
Definition logging.h:101
#define FML_CHECK(condition)
Definition logging.h:104

References impeller::PlaygroundImpl::Create(), FML_CHECK, FML_LOG, and SupportsBackend().

Referenced by impeller::ComputePlaygroundTest::SetUp(), and impeller::PlaygroundTest::SetUp().

◆ SetupWindow()

void impeller::Playground::SetupWindow ( )

Definition at line 142 of file playground.cc.

142 {
143 if (!context_) {
144 FML_LOG(WARNING) << "Asked to set up a window with no context (call "
145 "SetupContext first).";
146 return;
147 }
148 start_time_ = fml::TimePoint::Now().ToEpochDelta();
149}
constexpr TimeDelta ToEpochDelta() const
Definition time_point.h:52

References FML_LOG, fml::TimePoint::Now(), and fml::TimePoint::ToEpochDelta().

Referenced by impeller::ComputePlaygroundTest::SetUp(), and impeller::PlaygroundTest::SetUp().

◆ SetWindowSize()

void impeller::Playground::SetWindowSize ( ISize  size)
protected

Definition at line 511 of file playground.cc.

511 {
512 window_size_ = size;
513}
it will be possible to load the file into Perfetto s trace viewer use test Running tests that layout and measure text will not yield consistent results across various platforms Enabling this option will make font resolution default to the Ahem test font on all disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size

Referenced by OpenPlaygroundHere().

◆ ShouldKeepRendering()

bool impeller::Playground::ShouldKeepRendering ( ) const
protectedvirtual

Definition at line 515 of file playground.cc.

515 {
516 return true;
517}

Referenced by OpenPlaygroundHere().

◆ ShouldOpenNewPlaygrounds()

bool impeller::Playground::ShouldOpenNewPlaygrounds ( )
static

Definition at line 168 of file playground.cc.

168 {
170}
static std::atomic_bool gShouldOpenNewPlaygrounds

References impeller::gShouldOpenNewPlaygrounds.

Referenced by impeller::ComputePlaygroundTest::SetUp(), and impeller::PlaygroundTest::SetUp().

◆ SupportsBackend()

bool impeller::Playground::SupportsBackend ( PlaygroundBackend  backend)
static

Definition at line 104 of file playground.cc.

104 {
105 switch (backend) {
108#if IMPELLER_ENABLE_METAL
109 return true;
110#else // IMPELLER_ENABLE_METAL
111 return false;
112#endif // IMPELLER_ENABLE_METAL
114#if IMPELLER_ENABLE_OPENGLES
115 return true;
116#else // IMPELLER_ENABLE_OPENGLES
117 return false;
118#endif // IMPELLER_ENABLE_OPENGLES
120#if IMPELLER_ENABLE_VULKAN
122#else // IMPELLER_ENABLE_VULKAN
123 return false;
124#endif // IMPELLER_ENABLE_VULKAN
125 }
127}
#define FML_UNREACHABLE()
Definition logging.h:128

References FML_UNREACHABLE, impeller::PlaygroundImplVK::IsVulkanDriverPresent(), impeller::kMetal, impeller::kMetalSDF, impeller::kOpenGLES, and impeller::kVulkan.

Referenced by impeller::ComputePlaygroundTest::SetUp(), impeller::PlaygroundTest::SetUp(), and SetupContext().

◆ TeardownWindow()

void impeller::Playground::TeardownWindow ( )

Definition at line 155 of file playground.cc.

155 {
156 if (host_buffer_) {
157 host_buffer_.reset();
158 }
159 if (context_) {
160 context_->Shutdown();
161 }
162 context_.reset();
163 impl_.reset();
164}

Referenced by impeller::ComputePlaygroundTest::TearDown(), and impeller::PlaygroundTest::TearDown().

◆ WillRenderSomething()

bool impeller::Playground::WillRenderSomething ( ) const

Returns true if OpenPlaygroundHere will actually render anything.

Definition at line 524 of file playground.cc.

524 {
526}

References impeller::PlaygroundSwitches::enable_playground, and switches_.

Member Data Documentation

◆ switches_


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