11
11
#include " third_party/skia/include/core/SkBitmap.h"
12
12
#include " third_party/skia/include/core/SkImage.h"
13
13
14
- #ifdef SHELL_ENABLE_GL
15
- #include " flutter/shell/platform/embedder/tests/embedder_test_compositor_gl.h"
16
- #include " flutter/shell/platform/embedder/tests/embedder_test_context_gl.h"
17
- #endif
18
-
19
- #ifdef SHELL_ENABLE_VULKAN
20
- #include " flutter/shell/platform/embedder/tests/embedder_test_context_vulkan.h"
21
- #include " flutter/vulkan/vulkan_device.h" // nogncheck
22
- #include " vulkan/vulkan_core.h" // nogncheck
23
- #endif
24
-
25
- #ifdef SHELL_ENABLE_METAL
26
- #include " flutter/shell/platform/embedder/tests/embedder_test_context_metal.h"
27
- #endif
28
-
29
- namespace flutter {
30
- namespace testing {
14
+ namespace flutter ::testing {
31
15
32
16
EmbedderConfigBuilder::EmbedderConfigBuilder (
33
17
EmbedderTestContext& context,
@@ -43,49 +27,9 @@ EmbedderConfigBuilder::EmbedderConfigBuilder(
43
27
44
28
custom_task_runners_.struct_size = sizeof (FlutterCustomTaskRunners);
45
29
46
- #ifdef SHELL_ENABLE_GL
47
- opengl_renderer_config_.struct_size = sizeof (FlutterOpenGLRendererConfig);
48
- opengl_renderer_config_.make_current = [](void * context) -> bool {
49
- return reinterpret_cast <EmbedderTestContextGL*>(context)->GLMakeCurrent ();
50
- };
51
- opengl_renderer_config_.clear_current = [](void * context) -> bool {
52
- return reinterpret_cast <EmbedderTestContextGL*>(context)->GLClearCurrent ();
53
- };
54
- opengl_renderer_config_.present_with_info =
55
- [](void * context, const FlutterPresentInfo* present_info) -> bool {
56
- return reinterpret_cast <EmbedderTestContextGL*>(context)->GLPresent (
57
- *present_info);
58
- };
59
- opengl_renderer_config_.fbo_with_frame_info_callback =
60
- [](void * context, const FlutterFrameInfo* frame_info) -> uint32_t {
61
- return reinterpret_cast <EmbedderTestContextGL*>(context)->GLGetFramebuffer (
62
- *frame_info);
63
- };
64
- opengl_renderer_config_.populate_existing_damage = nullptr ;
65
- opengl_renderer_config_.make_resource_current = [](void * context) -> bool {
66
- return reinterpret_cast <EmbedderTestContextGL*>(context)
67
- ->GLMakeResourceCurrent ();
68
- };
69
- opengl_renderer_config_.gl_proc_resolver = [](void * context,
70
- const char * name) -> void * {
71
- return reinterpret_cast <EmbedderTestContextGL*>(context)->GLGetProcAddress (
72
- name);
73
- };
74
- opengl_renderer_config_.fbo_reset_after_present = true ;
75
- opengl_renderer_config_.surface_transformation =
76
- [](void * context) -> FlutterTransformation {
77
- return reinterpret_cast <EmbedderTestContext*>(context)
78
- ->GetRootSurfaceTransformation ();
79
- };
80
- #endif
81
-
82
- #ifdef SHELL_ENABLE_METAL
30
+ InitializeGLRendererConfig ();
83
31
InitializeMetalRendererConfig ();
84
- #endif
85
-
86
- #ifdef SHELL_ENABLE_VULKAN
87
32
InitializeVulkanRendererConfig ();
88
- #endif
89
33
90
34
software_renderer_config_.struct_size = sizeof (FlutterSoftwareRendererConfig);
91
35
software_renderer_config_.surface_present_callback =
@@ -141,37 +85,6 @@ void EmbedderConfigBuilder::SetSoftwareRendererConfig(SkISize surface_size) {
141
85
context_.SetupSurface (surface_size);
142
86
}
143
87
144
- void EmbedderConfigBuilder::SetOpenGLFBOCallBack () {
145
- #ifdef SHELL_ENABLE_GL
146
- // SetOpenGLRendererConfig must be called before this.
147
- FML_CHECK (renderer_config_.type == FlutterRendererType::kOpenGL );
148
- renderer_config_.open_gl .fbo_callback = [](void * context) -> uint32_t {
149
- FlutterFrameInfo frame_info = {};
150
- // fbo_callback doesn't use the frame size information, only
151
- // fbo_callback_with_frame_info does.
152
- frame_info.struct_size = sizeof (FlutterFrameInfo);
153
- frame_info.size .width = 0 ;
154
- frame_info.size .height = 0 ;
155
- return reinterpret_cast <EmbedderTestContextGL*>(context)->GLGetFramebuffer (
156
- frame_info);
157
- };
158
- #endif
159
- }
160
-
161
- void EmbedderConfigBuilder::SetOpenGLPresentCallBack () {
162
- #ifdef SHELL_ENABLE_GL
163
- // SetOpenGLRendererConfig must be called before this.
164
- FML_CHECK (renderer_config_.type == FlutterRendererType::kOpenGL );
165
- renderer_config_.open_gl .present = [](void * context) -> bool {
166
- // passing a placeholder fbo_id.
167
- return reinterpret_cast <EmbedderTestContextGL*>(context)->GLPresent (
168
- FlutterPresentInfo{
169
- .fbo_id = 0 ,
170
- });
171
- };
172
- #endif
173
- }
174
-
175
88
void EmbedderConfigBuilder::SetRendererConfig (EmbedderTestContextType type,
176
89
SkISize surface_size) {
177
90
switch (type) {
@@ -190,38 +103,6 @@ void EmbedderConfigBuilder::SetRendererConfig(EmbedderTestContextType type,
190
103
}
191
104
}
192
105
193
- void EmbedderConfigBuilder::SetOpenGLRendererConfig (SkISize surface_size) {
194
- #ifdef SHELL_ENABLE_GL
195
- renderer_config_.type = FlutterRendererType::kOpenGL ;
196
- renderer_config_.open_gl = opengl_renderer_config_;
197
- context_.SetupSurface (surface_size);
198
- #endif
199
- }
200
-
201
- void EmbedderConfigBuilder::SetMetalRendererConfig (SkISize surface_size) {
202
- #ifdef SHELL_ENABLE_METAL
203
- renderer_config_.type = FlutterRendererType::kMetal ;
204
- renderer_config_.metal = metal_renderer_config_;
205
- context_.SetupSurface (surface_size);
206
- #endif
207
- }
208
-
209
- void EmbedderConfigBuilder::SetVulkanRendererConfig (
210
- SkISize surface_size,
211
- std::optional<FlutterVulkanInstanceProcAddressCallback>
212
- instance_proc_address_callback) {
213
- #ifdef SHELL_ENABLE_VULKAN
214
- renderer_config_.type = FlutterRendererType::kVulkan ;
215
- FlutterVulkanRendererConfig vulkan_renderer_config = vulkan_renderer_config_;
216
- if (instance_proc_address_callback.has_value ()) {
217
- vulkan_renderer_config.get_instance_proc_address_callback =
218
- instance_proc_address_callback.value ();
219
- }
220
- renderer_config_.vulkan = vulkan_renderer_config;
221
- context_.SetupSurface (surface_size);
222
- #endif
223
- }
224
-
225
106
void EmbedderConfigBuilder::SetAssetsPath () {
226
107
project_args_.assets_path = context_.GetAssetsPath ().c_str ();
227
108
}
@@ -406,18 +287,7 @@ FlutterCompositor& EmbedderConfigBuilder::GetCompositor() {
406
287
void EmbedderConfigBuilder::SetRenderTargetType (
407
288
EmbedderTestBackingStoreProducer::RenderTargetType type,
408
289
FlutterSoftwarePixelFormat software_pixfmt) {
409
- auto & compositor = context_.GetCompositor ();
410
-
411
- auto producer = std::make_unique<EmbedderTestBackingStoreProducer>(
412
- compositor.GetGrContext (), type, software_pixfmt);
413
-
414
- #ifdef SHELL_ENABLE_GL
415
- producer->SetEGLContext (context_.egl_context_ );
416
- #endif
417
-
418
- // TODO(wrightgeorge): figure out a better way of plumbing through the
419
- // GrDirectContext
420
- compositor.SetBackingStoreProducer (std::move (producer));
290
+ context_.SetRenderTargetType (type, software_pixfmt);
421
291
}
422
292
423
293
UniqueEngine EmbedderConfigBuilder::LaunchEngine () const {
@@ -479,93 +349,52 @@ UniqueEngine EmbedderConfigBuilder::SetupEngine(bool run) const {
479
349
return UniqueEngine{engine};
480
350
}
481
351
482
- #ifdef SHELL_ENABLE_METAL
352
+ #ifndef SHELL_ENABLE_GL
353
+ // OpenGL fallback implementations.
354
+ // See: flutter/shell/platform/embedder/tests/embedder_config_builder_gl.cc.
483
355
484
- void EmbedderConfigBuilder::InitializeMetalRendererConfig () {
485
- if (context_.GetContextType () != EmbedderTestContextType::kMetalContext ) {
486
- return ;
487
- }
356
+ void EmbedderConfigBuilder::InitializeGLRendererConfig () {
357
+ // no-op.
358
+ }
488
359
489
- metal_renderer_config_.struct_size = sizeof (metal_renderer_config_);
490
- EmbedderTestContextMetal& metal_context =
491
- reinterpret_cast <EmbedderTestContextMetal&>(context_);
492
-
493
- metal_renderer_config_.device =
494
- metal_context.GetTestMetalContext ()->GetMetalDevice ();
495
- metal_renderer_config_.present_command_queue =
496
- metal_context.GetTestMetalContext ()->GetMetalCommandQueue ();
497
- metal_renderer_config_.get_next_drawable_callback =
498
- [](void * user_data, const FlutterFrameInfo* frame_info) {
499
- return reinterpret_cast <EmbedderTestContextMetal*>(user_data)
500
- ->GetNextDrawable (frame_info);
501
- };
502
- metal_renderer_config_.present_drawable_callback =
503
- [](void * user_data, const FlutterMetalTexture* texture) -> bool {
504
- EmbedderTestContextMetal* metal_context =
505
- reinterpret_cast <EmbedderTestContextMetal*>(user_data);
506
- return metal_context->Present (texture->texture_id );
507
- };
508
- metal_renderer_config_.external_texture_frame_callback =
509
- [](void * user_data, int64_t texture_id, size_t width, size_t height,
510
- FlutterMetalExternalTexture* texture_out) -> bool {
511
- EmbedderTestContextMetal* metal_context =
512
- reinterpret_cast <EmbedderTestContextMetal*>(user_data);
513
- return metal_context->PopulateExternalTexture (texture_id, width, height,
514
- texture_out);
515
- };
360
+ void EmbedderConfigBuilder::SetOpenGLFBOCallBack () {
361
+ FML_LOG (FATAL) << " OpenGL is not enabled in this build." ;
516
362
}
517
363
518
- #endif // SHELL_ENABLE_METAL
364
+ void EmbedderConfigBuilder::SetOpenGLPresentCallBack () {
365
+ FML_LOG (FATAL) << " OpenGL is not enabled in this build." ;
366
+ }
519
367
520
- #ifdef SHELL_ENABLE_VULKAN
368
+ void EmbedderConfigBuilder::SetOpenGLRendererConfig (SkISize surface_size) {
369
+ FML_LOG (FATAL) << " OpenGL is not enabled in this build." ;
370
+ }
371
+ #endif
372
+ #ifndef SHELL_ENABLE_METAL
373
+ // Metal fallback implementations.
374
+ // See: flutter/shell/platform/embedder/tests/embedder_config_builder_metal.mm.
521
375
522
- void EmbedderConfigBuilder::InitializeVulkanRendererConfig () {
523
- if (context_.GetContextType () != EmbedderTestContextType::kVulkanContext ) {
524
- return ;
525
- }
376
+ void EmbedderConfigBuilder::InitializeMetalRendererConfig () {
377
+ // no-op.
378
+ }
526
379
527
- vulkan_renderer_config_.struct_size = sizeof (FlutterVulkanRendererConfig);
528
- vulkan_renderer_config_.version =
529
- static_cast <EmbedderTestContextVulkan&>(context_)
530
- .vulkan_context_ ->application_ ->GetAPIVersion ();
531
- vulkan_renderer_config_.instance =
532
- static_cast <EmbedderTestContextVulkan&>(context_)
533
- .vulkan_context_ ->application_ ->GetInstance ();
534
- vulkan_renderer_config_.physical_device =
535
- static_cast <EmbedderTestContextVulkan&>(context_)
536
- .vulkan_context_ ->device_ ->GetPhysicalDeviceHandle ();
537
- vulkan_renderer_config_.device =
538
- static_cast <EmbedderTestContextVulkan&>(context_)
539
- .vulkan_context_ ->device_ ->GetHandle ();
540
- vulkan_renderer_config_.queue_family_index =
541
- static_cast <EmbedderTestContextVulkan&>(context_)
542
- .vulkan_context_ ->device_ ->GetGraphicsQueueIndex ();
543
- vulkan_renderer_config_.queue =
544
- static_cast <EmbedderTestContextVulkan&>(context_)
545
- .vulkan_context_ ->device_ ->GetQueueHandle ();
546
- vulkan_renderer_config_.get_instance_proc_address_callback =
547
- EmbedderTestContextVulkan::InstanceProcAddr;
548
- vulkan_renderer_config_.get_next_image_callback =
549
- [](void * context,
550
- const FlutterFrameInfo* frame_info) -> FlutterVulkanImage {
551
- VkImage image =
552
- reinterpret_cast <EmbedderTestContextVulkan*>(context)->GetNextImage (
553
- {static_cast <int >(frame_info->size .width ),
554
- static_cast <int >(frame_info->size .height )});
555
- return {
556
- .struct_size = sizeof (FlutterVulkanImage),
557
- .image = reinterpret_cast <uint64_t >(image),
558
- .format = VK_FORMAT_R8G8B8A8_UNORM,
559
- };
560
- };
561
- vulkan_renderer_config_.present_image_callback =
562
- [](void * context, const FlutterVulkanImage* image) -> bool {
563
- return reinterpret_cast <EmbedderTestContextVulkan*>(context)->PresentImage (
564
- reinterpret_cast <VkImage>(image->image ));
565
- };
380
+ void EmbedderConfigBuilder::SetMetalRendererConfig (SkISize surface_size) {
381
+ FML_LOG (FATAL) << " Metal is not enabled in this build." ;
382
+ }
383
+ #endif
384
+ #ifndef SHELL_ENABLE_VULKAN
385
+ // Vulkan fallback implementations.
386
+ // See: flutter/shell/platform/embedder/tests/embedder_config_builder_vulkan.cc.
387
+
388
+ void EmbedderConfigBuilder::InitializeVulkanRendererConfig () {
389
+ // no-op.
566
390
}
567
391
392
+ void EmbedderConfigBuilder::SetVulkanRendererConfig (
393
+ SkISize surface_size,
394
+ std::optional<FlutterVulkanInstanceProcAddressCallback>
395
+ instance_proc_address_callback) {
396
+ FML_LOG (FATAL) << " Vulkan is not enabled in this build." ;
397
+ }
568
398
#endif
569
399
570
- } // namespace testing
571
- } // namespace flutter
400
+ } // namespace flutter::testing
0 commit comments