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#pragma once
6
7#include <memory>
8
9#include "flutter/fml/macros.h"
10#include "impeller/core/formats.h"
11
12namespace impeller {
13
14class Capabilities {
15 public:
16 virtual ~Capabilities();
17
18 virtual bool HasThreadingRestrictions() const = 0;
19
20 virtual bool SupportsOffscreenMSAA() const = 0;
21
22 virtual bool SupportsSSBO() const = 0;
23
24 virtual bool SupportsBufferToTextureBlits() const = 0;
25
26 virtual bool SupportsTextureToTextureBlits() const = 0;
27
28 virtual bool SupportsFramebufferFetch() const = 0;
29
30 virtual bool SupportsCompute() const = 0;
31
32 virtual bool SupportsComputeSubgroups() const = 0;
33
34 virtual bool SupportsReadFromOnscreenTexture() const = 0;
35
36 virtual bool SupportsReadFromResolve() const = 0;
37
38 virtual bool SupportsDecalTileMode() const = 0;
39
40 virtual bool SupportsMemorylessTextures() const = 0;
41
42 virtual PixelFormat GetDefaultColorFormat() const = 0;
43
44 virtual PixelFormat GetDefaultStencilFormat() const = 0;
45
46 protected:
47 Capabilities();
48
49 FML_DISALLOW_COPY_AND_ASSIGN(Capabilities);
50};
51
52class CapabilitiesBuilder {
53 public:
54 CapabilitiesBuilder();
55
56 ~CapabilitiesBuilder();
57
58 CapabilitiesBuilder& SetHasThreadingRestrictions(bool value);
59
60 CapabilitiesBuilder& SetSupportsOffscreenMSAA(bool value);
61
62 CapabilitiesBuilder& SetSupportsSSBO(bool value);
63
64 CapabilitiesBuilder& SetSupportsBufferToTextureBlits(bool value);
65
66 CapabilitiesBuilder& SetSupportsTextureToTextureBlits(bool value);
67
68 CapabilitiesBuilder& SetSupportsFramebufferFetch(bool value);
69
70 CapabilitiesBuilder& SetSupportsCompute(bool value);
71
72 CapabilitiesBuilder& SetSupportsComputeSubgroups(bool value);
73
74 CapabilitiesBuilder& SetSupportsReadFromOnscreenTexture(bool value);
75
76 CapabilitiesBuilder& SetSupportsReadFromResolve(bool value);
77
78 CapabilitiesBuilder& SetDefaultColorFormat(PixelFormat value);
79
80 CapabilitiesBuilder& SetDefaultStencilFormat(PixelFormat value);
81
82 CapabilitiesBuilder& SetSupportsDecalTileMode(bool value);
83
84 CapabilitiesBuilder& SetSupportsMemorylessTextures(bool value);
85
86 std::unique_ptr<Capabilities> Build();
87
88 private:
89 bool has_threading_restrictions_ = false;
90 bool supports_offscreen_msaa_ = false;
91 bool supports_ssbo_ = false;
92 bool supports_buffer_to_texture_blits_ = false;
93 bool supports_texture_to_texture_blits_ = false;
94 bool supports_framebuffer_fetch_ = false;
95 bool supports_compute_ = false;
96 bool supports_compute_subgroups_ = false;
97 bool supports_read_from_onscreen_texture_ = false;
98 bool supports_read_from_resolve_ = false;
99 bool supports_decal_tile_mode_ = false;
100 bool supports_memoryless_textures_ = false;
101 std::optional<PixelFormat> default_color_format_ = std::nullopt;
102 std::optional<PixelFormat> default_stencil_format_ = std::nullopt;
103
104 FML_DISALLOW_COPY_AND_ASSIGN(CapabilitiesBuilder);
105};
106
107} // namespace impeller
108

Provided by KDAB

Privacy Policy
Learn more about Flutter for embedded and desktop on industrialflutter.com

source code of flutter_engine/flutter/impeller/renderer/capabilities.h