Flutter Engine
 
Loading...
Searching...
No Matches
dl_test_surface_metal.h
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#ifndef FLUTTER_DISPLAY_LIST_TESTING_DL_TEST_SURFACE_METAL_H_
6#define FLUTTER_DISPLAY_LIST_TESTING_DL_TEST_SURFACE_METAL_H_
7
12
13namespace flutter {
14namespace testing {
15
17
19 public:
21 virtual ~DlMetalSurfaceProvider() = default;
22
23 bool InitializeSurface(size_t width,
24 size_t height,
25 PixelFormat format) override;
26 std::shared_ptr<DlSurfaceInstance> GetPrimarySurface() const override;
27 std::shared_ptr<DlSurfaceInstance> MakeOffscreenSurface(
28 size_t width,
29 size_t height,
30 PixelFormat format) const override;
31 const std::string backend_name() const override { return "Metal"; }
32 BackendType backend_type() const override { return kMetalBackend; }
33 bool supports(PixelFormat format) const override {
35 }
36 bool supports_impeller() const override { return true; }
37 sk_sp<DlPixelData> ImpellerSnapshot(const sk_sp<DisplayList>& list,
38 int width,
39 int height) const override;
40 virtual sk_sp<DlImage> MakeImpellerImage(const sk_sp<DisplayList>& list,
41 int width,
42 int height) const override;
43
44 private:
45 // This must be placed before any other members that may use the
46 // autorelease pool.
47 fml::ScopedNSAutoreleasePool autorelease_pool_;
48
49 std::unique_ptr<TestMetalContext> metal_context_;
50 std::shared_ptr<DlSurfaceInstance> metal_surface_;
51 mutable std::unique_ptr<MetalScreenshotter> snapshotter_;
52 mutable std::unique_ptr<impeller::AiksContext> aiks_context_;
53
54 void InitScreenShotter() const;
55};
56
57} // namespace testing
58} // namespace flutter
59
60#endif // FLUTTER_DISPLAY_LIST_TESTING_DL_TEST_SURFACE_METAL_H_
std::shared_ptr< DlSurfaceInstance > GetPrimarySurface() const override
sk_sp< DlPixelData > ImpellerSnapshot(const sk_sp< DisplayList > &list, int width, int height) const override
bool InitializeSurface(size_t width, size_t height, PixelFormat format) override
std::shared_ptr< DlSurfaceInstance > MakeOffscreenSurface(size_t width, size_t height, PixelFormat format) const override
virtual sk_sp< DlImage > MakeImpellerImage(const sk_sp< DisplayList > &list, int width, int height) const override
const std::string backend_name() const override
bool supports(PixelFormat format) const override
uint32_t uint32_t * format
int32_t height
int32_t width