17 PlatformView::Delegate& delegate,
18 const TaskRunners& task_runners,
19 const std::shared_ptr<ShellTestVsyncClock>& vsync_clock,
21 const std::shared_ptr<ShellTestExternalViewEmbedder>& shell_test_external_view_embedder,
22 const std::shared_ptr<const fml::SyncSwitch>& is_gpu_disabled_sync_switch) {
23 return std::make_unique<ShellTestPlatformViewMetal>(
24 delegate, task_runners, vsync_clock, create_vsync_waiter, shell_test_external_view_embedder,
25 is_gpu_disabled_sync_switch);
31 std::shared_ptr<ShellTestVsyncClock> vsync_clock,
33 std::shared_ptr<ShellTestExternalViewEmbedder> shell_test_external_view_embedder,
34 const std::shared_ptr<const fml::SyncSwitch>& is_gpu_disabled_sync_switch)
37 create_vsync_waiter_(
std::move(create_vsync_waiter)),
38 vsync_clock_(
std::move(vsync_clock)),
39 shell_test_external_view_embedder_(
std::move(shell_test_external_view_embedder)) {
40 id<MTLDevice>
device = nil;
44 gpuDisabledSyncSwitch:is_gpu_disabled_sync_switch];
53 [MTLTextureDescriptor texture2DDescriptorWithPixelFormat:MTLPixelFormatBGRA8Unorm
57 descriptor.usage = MTLTextureUsageRenderTarget | MTLTextureUsageShaderRead;
58 offscreen_texture_ = [
device newTextureWithDescriptor:descriptor];
63std::unique_ptr<VsyncWaiter> ShellTestPlatformViewMetal::CreateVSyncWaiter() {
64 return create_vsync_waiter_();
68void ShellTestPlatformViewMetal::SimulateVSync() {
69 vsync_clock_->SimulateVSync();
73std::shared_ptr<ExternalViewEmbedder> ShellTestPlatformViewMetal::CreateExternalViewEmbedder() {
74 return shell_test_external_view_embedder_;
79 return [](DefaultPointerDataDispatcher::Delegate& delegate) {
80 return std::make_unique<SmoothPointerDataDispatcher>(delegate);
85std::unique_ptr<Surface> ShellTestPlatformViewMetal::CreateRenderingSurface() {
87 auto context = impeller_context_.
context;
88 return std::make_unique<GPUSurfaceMetalImpeller>(
89 this, std::make_shared<impeller::AiksContext>(context,
nullptr));
91 return std::make_unique<GPUSurfaceMetalSkia>(
this, skia_context_.
mainContext);
95std::shared_ptr<impeller::Context> ShellTestPlatformViewMetal::GetImpellerContext()
const {
96 return impeller_context_.
context;
101 FML_CHECK(
false) <<
"A Metal Delegate configured with MTLRenderTargetType::kMTLTexture was asked "
102 "to acquire a layer.";
107bool ShellTestPlatformViewMetal::PresentDrawable(GrMTLHandle drawable)
const {
108 FML_CHECK(
false) <<
"A Metal Delegate configured with MTLRenderTargetType::kMTLTexture was asked "
109 "to present a layer drawable.";
114GPUMTLTextureInfo ShellTestPlatformViewMetal::GetMTLTexture(
const DlISize& frame_info)
const {
122bool ShellTestPlatformViewMetal::PresentTexture(GPUMTLTextureInfo
texture)
const {
#define FML_CHECK(condition)
std::shared_ptr< impeller::ContextMTL > context
sk_sp< GrDirectContext > mainContext
std::function< std::unique_ptr< VsyncWaiter >()> CreateVsyncWaiter
impeller::ISize32 DlISize
std::function< std::unique_ptr< PointerDataDispatcher >(PointerDataDispatcher::Delegate &)> PointerDataDispatcherMaker
Signature for constructing PointerDataDispatcher.
void * GPUCAMetalLayerHandle
const void * GPUMTLTextureHandle