Flutter Engine
 
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

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
 
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.
 

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 48 of file playground.h.

Member Typedef Documentation

◆ GLProcAddressResolver

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

Definition at line 118 of file playground.h.

◆ RenderCallback

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

Definition at line 81 of file playground.h.

◆ SinglePassCallback

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

Definition at line 50 of file playground.h.

◆ VKProcAddressResolver

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

Definition at line 121 of file playground.h.

Constructor & Destructor Documentation

◆ Playground()

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

Definition at line 84 of file playground.cc.

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

References impeller::InitializeGLFWOnce(), impeller::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 520 of file playground.cc.

521 {
522 return impl_->CreateGLProcAddressResolver();
523}

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 458 of file playground.cc.

459 {
460 std::array<DecompressedImage, 6> images;
461 for (size_t i = 0; i < fixture_names.size(); i++) {
462 auto image = DecodeImageRGBA(
464 if (!image.has_value()) {
465 return nullptr;
466 }
467 images[i] = image.value();
468 }
469
470 TextureDescriptor texture_descriptor;
471 texture_descriptor.storage_mode = StorageMode::kDevicePrivate;
472 texture_descriptor.type = TextureType::kTextureCube;
473 texture_descriptor.format = PixelFormat::kR8G8B8A8UNormInt;
474 texture_descriptor.size = images[0].GetSize();
475 texture_descriptor.mip_count = 1u;
476
477 auto texture =
478 context_->GetResourceAllocator()->CreateTexture(texture_descriptor);
479 if (!texture) {
480 VALIDATION_LOG << "Could not allocate texture cube.";
481 return nullptr;
482 }
483 texture->SetLabel("Texture cube");
484
485 auto cmd_buffer = context_->CreateCommandBuffer();
486 auto blit_pass = cmd_buffer->CreateBlitPass();
487 for (size_t i = 0; i < fixture_names.size(); i++) {
488 auto device_buffer = context_->GetResourceAllocator()->CreateBufferWithCopy(
489 *images[i].GetAllocation());
490 blit_pass->AddCopy(DeviceBuffer::AsBufferView(device_buffer), texture, {},
491 "", /*mip_level=*/0, /*slice=*/i);
492 }
493
494 if (!blit_pass->EncodeCommands() ||
495 !context_->GetCommandQueue()->Submit({std::move(cmd_buffer)}).ok()) {
496 VALIDATION_LOG << "Could not upload texture to device memory.";
497 return nullptr;
498 }
499
500 return texture;
501}
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:933
#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 446 of file playground.cc.

448 {
450 context_, OpenAssetAsMapping(fixture_name), enable_mipmapping);
451 if (texture == nullptr) {
452 return nullptr;
453 }
454 texture->SetLabel(fixture_name);
455 return texture;
456}
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 433 of file playground.cc.

436 {
438 Playground::LoadFixtureImageCompressed(std::move(mapping)));
439 if (!image.has_value()) {
440 return nullptr;
441 }
442 return CreateTextureForDecompressedImage(context, image.value(),
443 enable_mipmapping);
444}
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 525 of file playground.cc.

526 {
527 return impl_->CreateVKProcAddressResolver();
528}

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

◆ DecodeImageRGBA()

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

Definition at line 372 of file playground.cc.

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

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 181 of file playground.cc.

181 {
182 return cursor_position_;
183}

◆ GetSecondsElapsed()

Scalar impeller::Playground::GetSecondsElapsed ( ) const

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

Definition at line 193 of file playground.cc.

193 {
194 return (fml::TimePoint::Now().ToEpochDelta() - start_time_).ToSecondsF();
195}
static TimePoint Now()
Definition time_point.cc:49

References fml::TimePoint::Now().

◆ 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 361 of file playground.cc.

362 {
363 auto compressed_image = CompressedImageSkia::Create(std::move(mapping));
364 if (!compressed_image) {
365 VALIDATION_LOG << "Could not create compressed image.";
366 return nullptr;
367 }
368
369 return compressed_image;
370}
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 95 of file playground.cc.

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

◆ 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 201 of file playground.cc.

202 {
204 return true;
205 }
206
207 if (!render_callback) {
208 return true;
209 }
210
211 IMGUI_CHECKVERSION();
212 ImGui::CreateContext();
213 fml::ScopedCleanupClosure destroy_imgui_context(
214 []() { ImGui::DestroyContext(); });
215 ImGui::StyleColorsDark();
216
217 auto& io = ImGui::GetIO();
218 io.IniFilename = nullptr;
219 io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
220 io.ConfigWindowsResizeFromEdges = true;
221
222 auto window = reinterpret_cast<GLFWwindow*>(impl_->GetWindowHandle());
223 if (!window) {
224 return false;
225 }
226 ::glfwSetWindowTitle(window, GetWindowTitle().c_str());
227 ::glfwSetWindowUserPointer(window, this);
228 ::glfwSetWindowSizeCallback(
229 window, [](GLFWwindow* window, int width, int height) -> void {
230 auto playground =
231 reinterpret_cast<Playground*>(::glfwGetWindowUserPointer(window));
232 if (!playground) {
233 return;
234 }
235 playground->SetWindowSize(ISize{width, height}.Max({}));
236 });
237 ::glfwSetKeyCallback(window, &PlaygroundKeyCallback);
238 ::glfwSetCursorPosCallback(window, [](GLFWwindow* window, double x,
239 double y) {
240 reinterpret_cast<Playground*>(::glfwGetWindowUserPointer(window))
241 ->SetCursorPosition({static_cast<Scalar>(x), static_cast<Scalar>(y)});
242 });
243
244 ImGui_ImplGlfw_InitForOther(window, true);
245 fml::ScopedCleanupClosure shutdown_imgui([]() { ImGui_ImplGlfw_Shutdown(); });
246
247 ImGui_ImplImpeller_Init(context_);
248 fml::ScopedCleanupClosure shutdown_imgui_impeller(
249 []() { ImGui_ImplImpeller_Shutdown(); });
250
251 ImGui::SetNextWindowPos({10, 10});
252
253 ::glfwSetWindowSize(window, GetWindowSize().width, GetWindowSize().height);
254 ::glfwSetWindowPos(window, 200, 100);
255 ::glfwShowWindow(window);
256
257 while (true) {
258#if FML_OS_MACOSX
260#endif
261 ::glfwPollEvents();
262
263 if (::glfwWindowShouldClose(window)) {
264 return true;
265 }
266
267 ImGui_ImplGlfw_NewFrame();
268
269 auto surface = impl_->AcquireSurfaceFrame(context_);
270 RenderTarget render_target = surface->GetRenderTarget();
271
272 ImGui::NewFrame();
273 ImGui::DockSpaceOverViewport(ImGui::GetMainViewport(),
274 ImGuiDockNodeFlags_PassthruCentralNode);
275 bool result = render_callback(render_target);
276 ImGui::Render();
277
278 // Render ImGui overlay.
279 {
280 auto buffer = context_->CreateCommandBuffer();
281 if (!buffer) {
282 VALIDATION_LOG << "Could not create command buffer.";
283 return false;
284 }
285 buffer->SetLabel("ImGui Command Buffer");
286
287 auto color0 = render_target.GetColorAttachment(0);
288 color0.load_action = LoadAction::kLoad;
289 if (color0.resolve_texture) {
290 color0.texture = color0.resolve_texture;
291 color0.resolve_texture = nullptr;
292 color0.store_action = StoreAction::kStore;
293 }
294 render_target.SetColorAttachment(color0, 0);
295 render_target.SetStencilAttachment(std::nullopt);
296 render_target.SetDepthAttachment(std::nullopt);
297
298 auto pass = buffer->CreateRenderPass(render_target);
299 if (!pass) {
300 VALIDATION_LOG << "Could not create render pass.";
301 return false;
302 }
303 pass->SetLabel("ImGui Render Pass");
304 if (!host_buffer_) {
305 host_buffer_ = HostBuffer::Create(
306 context_->GetResourceAllocator(), context_->GetIdleWaiter(),
307 context_->GetCapabilities()->GetMinimumUniformAlignment());
308 }
309
310 ImGui_ImplImpeller_RenderDrawData(ImGui::GetDrawData(), *pass,
311 *host_buffer_);
312
313 pass->EncodeCommands();
314
315 if (!context_->GetCommandQueue()->Submit({buffer}).ok()) {
316 return false;
317 }
318 }
319
320 if (!result || !surface->Present()) {
321 return false;
322 }
323
324 if (!ShouldKeepRendering()) {
325 break;
326 }
327 }
328
329 ::glfwHideWindow(window);
330
331 return true;
332}
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:84
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 334 of file playground.cc.

334 {
335 return OpenPlaygroundHere(
336 [context = GetContext(), &pass_callback](RenderTarget& render_target) {
337 auto buffer = context->CreateCommandBuffer();
338 if (!buffer) {
339 return false;
340 }
341 buffer->SetLabel("Playground Command Buffer");
342
343 auto pass = buffer->CreateRenderPass(render_target);
344 if (!pass) {
345 return false;
346 }
347 pass->SetLabel("Playground Render Pass");
348
349 if (!pass_callback(*pass)) {
350 return false;
351 }
352
353 pass->EncodeCommands();
354 if (!context->GetCommandQueue()->Submit({buffer}).ok()) {
355 return false;
356 }
357 return true;
358 });
359}
bool OpenPlaygroundHere(const RenderCallback &render_callback)
std::shared_ptr< Context > GetContext() const
Definition playground.cc:91

References GetContext(), and OpenPlaygroundHere().

◆ SetCapabilities()

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

Definition at line 511 of file playground.cc.

512 {
513 return impl_->SetCapabilities(capabilities);
514}

◆ SetGPUDisabled()

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

Mark the GPU as unavilable.

Only supported on the Metal backend.

Definition at line 530 of file playground.cc.

530 {
531 impl_->SetGPUDisabled(value);
532}

References value.

◆ SetupContext()

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

Definition at line 125 of file playground.cc.

126 {
127 FML_CHECK(SupportsBackend(backend));
128
129 impl_ = PlaygroundImpl::Create(backend, switches);
130 if (!impl_) {
131 FML_LOG(WARNING) << "PlaygroundImpl::Create failed.";
132 return;
133 }
134
135 context_ = impl_->GetContext();
136}
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 138 of file playground.cc.

138 {
139 if (!context_) {
140 FML_LOG(WARNING) << "Asked to set up a window with no context (call "
141 "SetupContext first).";
142 return;
143 }
144 start_time_ = fml::TimePoint::Now().ToEpochDelta();
145}
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 503 of file playground.cc.

503 {
504 window_size_ = size;
505}
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 507 of file playground.cc.

507 {
508 return true;
509}

Referenced by OpenPlaygroundHere().

◆ ShouldOpenNewPlaygrounds()

bool impeller::Playground::ShouldOpenNewPlaygrounds ( )
static

Definition at line 164 of file playground.cc.

164 {
166}
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 101 of file playground.cc.

101 {
102 switch (backend) {
104#if IMPELLER_ENABLE_METAL
105 return true;
106#else // IMPELLER_ENABLE_METAL
107 return false;
108#endif // IMPELLER_ENABLE_METAL
110#if IMPELLER_ENABLE_OPENGLES
111 return true;
112#else // IMPELLER_ENABLE_OPENGLES
113 return false;
114#endif // IMPELLER_ENABLE_OPENGLES
116#if IMPELLER_ENABLE_VULKAN
118#else // IMPELLER_ENABLE_VULKAN
119 return false;
120#endif // IMPELLER_ENABLE_VULKAN
121 }
123}
#define FML_UNREACHABLE()
Definition logging.h:128

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

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

◆ TeardownWindow()

void impeller::Playground::TeardownWindow ( )

Definition at line 151 of file playground.cc.

151 {
152 if (host_buffer_) {
153 host_buffer_.reset();
154 }
155 if (context_) {
156 context_->Shutdown();
157 }
158 context_.reset();
159 impl_.reset();
160}

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 516 of file playground.cc.

516 {
518}

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

Member Data Documentation

◆ switches_


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