Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
Loading...
Searching...
No Matches
dl_test_surface_provider_skia_metal.mm
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
5
#include "
flutter/display_list/testing/skia/dl_test_surface_provider_skia_metal.h
"
6
7
#include "
flutter/display_list/testing/skia/dl_test_surface_instance_skia.h
"
8
#include "
flutter/impeller/display_list/dl_dispatcher.h
"
9
#include "
flutter/impeller/display_list/dl_image_impeller.h
"
10
#include "
flutter/impeller/typographer/backends/skia/typographer_context_skia.h
"
11
12
#include "third_party/skia/include/core/SkSurface.h"
13
14
namespace
flutter
{
15
namespace
testing {
16
17
std::unique_ptr<DlSurfaceProvider> DlSurfaceProvider::CreateSkiaMetal() {
18
return
std::make_unique<DlSurfaceProviderSkiaMetal>();
19
}
20
21
class
DlMetalSurfaceInstance
:
public
DlSurfaceInstanceSkiaBase
{
22
public
:
23
explicit
DlMetalSurfaceInstance
(std::unique_ptr<TestMetalSurface> metal_surface)
24
:
DlSurfaceInstanceSkiaBase
(), metal_surface_(
std
::move(metal_surface)) {}
25
~DlMetalSurfaceInstance
() =
default
;
26
27
protected
:
28
sk_sp<SkSurface>
GetSurface
()
const override
{
return
metal_surface_->GetSurface(); }
29
30
private
:
31
std::unique_ptr<TestMetalSurface> metal_surface_;
32
};
33
34
bool
DlSurfaceProviderSkiaMetal::InitializeSurface
(
size_t
width
,
35
size_t
height
,
36
PixelFormat
format) {
37
if
(
format
!=
kN32Premul
) {
38
return
false
;
39
}
40
metal_context_ = std::make_unique<TestMetalContext>();
41
metal_surface_ =
MakeOffscreenSurface
(
width
,
height
,
format
);
42
return
true
;
43
}
44
45
std::shared_ptr<DlSurfaceInstance>
DlSurfaceProviderSkiaMetal::GetPrimarySurface
()
const
{
46
if
(!metal_surface_) {
47
return
nullptr
;
48
}
49
return
metal_surface_;
50
}
51
52
std::unique_ptr<DlSurfaceInstance>
DlSurfaceProviderSkiaMetal::MakeOffscreenSurface
(
53
size_t
width
,
54
size_t
height
,
55
PixelFormat
format)
const
{
56
auto
surface
=
TestMetalSurface::Create
(*metal_context_,
DlISize
(
width
,
height
));
57
surface
->GetSurface()->getCanvas()->clear(SK_ColorTRANSPARENT);
58
return
std::make_unique<DlMetalSurfaceInstance>(std::move(
surface
));
59
}
60
61
}
// namespace testing
62
}
// namespace flutter
flutter::testing::DlMetalSurfaceInstance
Definition
dl_test_surface_provider_skia_metal.mm:21
flutter::testing::DlMetalSurfaceInstance::GetSurface
sk_sp< SkSurface > GetSurface() const override
Definition
dl_test_surface_provider_skia_metal.mm:28
flutter::testing::DlMetalSurfaceInstance::DlMetalSurfaceInstance
DlMetalSurfaceInstance(std::unique_ptr< TestMetalSurface > metal_surface)
Definition
dl_test_surface_provider_skia_metal.mm:23
flutter::testing::DlMetalSurfaceInstance::~DlMetalSurfaceInstance
~DlMetalSurfaceInstance()=default
flutter::testing::DlSurfaceInstanceSkiaBase
Definition
dl_test_surface_instance_skia.h:13
flutter::testing::DlSurfaceProvider::PixelFormat
PixelFormat
Definition
dl_test_surface_provider.h:92
flutter::testing::DlSurfaceProvider::kN32Premul
@ kN32Premul
Definition
dl_test_surface_provider.h:93
flutter::testing::DlSurfaceProviderSkiaMetal::MakeOffscreenSurface
std::unique_ptr< DlSurfaceInstance > MakeOffscreenSurface(size_t width, size_t height, PixelFormat format) const override
Definition
dl_test_surface_provider_skia_metal.mm:52
flutter::testing::DlSurfaceProviderSkiaMetal::InitializeSurface
bool InitializeSurface(size_t width, size_t height, PixelFormat format) override
Definition
dl_test_surface_provider_skia_metal.mm:34
flutter::testing::DlSurfaceProviderSkiaMetal::GetPrimarySurface
std::shared_ptr< DlSurfaceInstance > GetPrimarySurface() const override
Definition
dl_test_surface_provider_skia_metal.mm:45
flutter::testing::TestMetalSurface::Create
static std::unique_ptr< TestMetalSurface > Create(const TestMetalContext &test_metal_context, DlISize surface_size=DlISize())
Definition
test_metal_surface.mm:18
dl_dispatcher.h
dl_image_impeller.h
dl_test_surface_instance_skia.h
dl_test_surface_provider_skia_metal.h
surface
VkSurfaceKHR surface
Definition
main.cc:65
format
uint32_t uint32_t * format
Definition
fl_texture_registrar_test.cc:42
flutter
Definition
asset_manager.cc:10
flutter::DlISize
impeller::ISize32 DlISize
Definition
dl_geometry_types.h:26
std
Definition
ref_ptr.h:261
height
int32_t height
Definition
serialization_callbacks.cc:1
width
int32_t width
Definition
serialization_callbacks.cc:0
typographer_context_skia.h
display_list
testing
skia
dl_test_surface_provider_skia_metal.mm
Generated on Mon May 25 2026 06:07:32 for Flutter Engine Uber Docs by
1.9.8