Flutter Impeller
capabilities_gles.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_IMPELLER_RENDERER_BACKEND_GLES_CAPABILITIES_GLES_H_
6 #define FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_CAPABILITIES_GLES_H_
7 
8 #include <cstddef>
9 
11 #include "impeller/core/formats.h"
13 #include "impeller/geometry/size.h"
15 
16 namespace impeller {
17 
18 class ProcTableGLES;
19 
20 //------------------------------------------------------------------------------
21 /// @brief The Vulkan layers and extensions wrangler.
22 ///
23 class CapabilitiesGLES final
24  : public Capabilities,
25  public BackendCast<CapabilitiesGLES, Capabilities> {
26  public:
27  explicit CapabilitiesGLES(const ProcTableGLES& gl);
28 
29  CapabilitiesGLES(const CapabilitiesGLES&) = delete;
30 
32 
34 
36 
37  // Must be at least 8.
39 
40  // Must be at least 16.
42 
43  // Must be at least 16.
45 
46  // Must be at least 1.
48 
49  // Must be at least 8.
51 
52  // Must be at least 64.
54 
55  // Must be at least 8.
56  size_t max_varying_vectors = 8;
57 
58  // Must be at least 8.
59  size_t max_vertex_attribs = 8;
60 
61  // May be 0.
63 
64  // Must be at least 128.
66 
67  // Must be at least display size.
69 
70  // May be 0.
72 
73  // May be 0.
75 
76  size_t GetMaxTextureUnits(ShaderStage stage) const;
77 
78  bool IsANGLE() const;
79 
80  // |Capabilities|
81  bool SupportsOffscreenMSAA() const override;
82 
83  // |Capabilities|
84  bool SupportsImplicitResolvingMSAA() const override;
85 
86  // |Capabilities|
87  bool SupportsSSBO() const override;
88 
89  // |Capabilities|
90  bool SupportsBufferToTextureBlits() const override;
91 
92  // |Capabilities|
93  bool SupportsTextureToTextureBlits() const override;
94 
95  // |Capabilities|
96  bool SupportsFramebufferFetch() const override;
97 
98  // |Capabilities|
99  bool SupportsCompute() const override;
100 
101  // |Capabilities|
102  bool SupportsComputeSubgroups() const override;
103 
104  // |Capabilities|
105  bool SupportsReadFromResolve() const override;
106 
107  // |Capabilities|
108  bool SupportsDecalSamplerAddressMode() const override;
109 
110  // |Capabilities|
111  bool SupportsDeviceTransientTextures() const override;
112 
113  // |Capabilities|
114  PixelFormat GetDefaultColorFormat() const override;
115 
116  // |Capabilities|
117  PixelFormat GetDefaultStencilFormat() const override;
118 
119  // |Capabilities|
120  PixelFormat GetDefaultDepthStencilFormat() const override;
121 
122  // |Capabilities|
123  PixelFormat GetDefaultGlyphAtlasFormat() const override;
124 
125  private:
126  bool supports_framebuffer_fetch_ = false;
127  bool supports_decal_sampler_address_mode_ = false;
128  bool supports_offscreen_msaa_ = false;
129  bool supports_implicit_msaa_ = false;
130  bool is_angle_ = false;
131  PixelFormat default_glyph_atlas_format_ = PixelFormat::kUnknown;
132 };
133 
134 } // namespace impeller
135 
136 #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_CAPABILITIES_GLES_H_
impeller::CapabilitiesGLES::max_vertex_attribs
size_t max_vertex_attribs
Definition: capabilities_gles.h:59
impeller::CapabilitiesGLES::max_viewport_dims
ISize max_viewport_dims
Definition: capabilities_gles.h:68
impeller::CapabilitiesGLES::IsANGLE
bool IsANGLE() const
Definition: capabilities_gles.cc:200
impeller::CapabilitiesGLES::SupportsFramebufferFetch
bool SupportsFramebufferFetch() const override
Whether the context backend is able to support pipelines with shaders that read from the framebuffer ...
Definition: capabilities_gles.cc:164
impeller::CapabilitiesGLES::GetDefaultDepthStencilFormat
PixelFormat GetDefaultDepthStencilFormat() const override
Returns a supported PixelFormat for textures that store both a stencil and depth component....
Definition: capabilities_gles.cc:196
impeller::CapabilitiesGLES::max_fragment_uniform_vectors
size_t max_fragment_uniform_vectors
Definition: capabilities_gles.h:44
impeller::CapabilitiesGLES::GetMaxTextureUnits
size_t GetMaxTextureUnits(ShaderStage stage) const
Definition: capabilities_gles.cc:131
impeller::CapabilitiesGLES::CapabilitiesGLES
CapabilitiesGLES(const ProcTableGLES &gl)
Definition: capabilities_gles.cc:25
formats.h
impeller::ShaderStage
ShaderStage
Definition: shader_types.h:22
impeller::CapabilitiesGLES::max_cube_map_texture_size
size_t max_cube_map_texture_size
Definition: capabilities_gles.h:41
impeller::CapabilitiesGLES::max_vertex_uniform_vectors
size_t max_vertex_uniform_vectors
Definition: capabilities_gles.h:65
impeller::CapabilitiesGLES::SupportsImplicitResolvingMSAA
bool SupportsImplicitResolvingMSAA() const override
Whether the context backend supports multisampled rendering to the on-screen surface without requirin...
Definition: capabilities_gles.cc:148
impeller::PixelFormat
PixelFormat
The Pixel formats supported by Impeller. The naming convention denotes the usage of the component,...
Definition: formats.h:100
impeller::Capabilities
Definition: capabilities.h:15
impeller::TSize< int64_t >
impeller::CapabilitiesGLES::SupportsSSBO
bool SupportsSSBO() const override
Whether the context backend supports binding Shader Storage Buffer Objects (SSBOs) to pipelines.
Definition: capabilities_gles.cc:152
impeller::CapabilitiesGLES::max_combined_texture_image_units
size_t max_combined_texture_image_units
Definition: capabilities_gles.h:38
impeller::CapabilitiesGLES::SupportsDecalSamplerAddressMode
bool SupportsDecalSamplerAddressMode() const override
Whether the context backend supports SamplerAddressMode::Decal.
Definition: capabilities_gles.cc:180
impeller::CapabilitiesGLES::max_vertex_texture_image_units
size_t max_vertex_texture_image_units
Definition: capabilities_gles.h:62
impeller::CapabilitiesGLES::SupportsDeviceTransientTextures
bool SupportsDeviceTransientTextures() const override
Whether the context backend supports allocating StorageMode::kDeviceTransient (aka "memoryless") text...
Definition: capabilities_gles.cc:184
impeller::CapabilitiesGLES::GetDefaultStencilFormat
PixelFormat GetDefaultStencilFormat() const override
Returns a supported PixelFormat for textures that store stencil information. May include a depth chan...
Definition: capabilities_gles.cc:192
impeller::CapabilitiesGLES::max_texture_size
ISize max_texture_size
Definition: capabilities_gles.h:53
impeller::CapabilitiesGLES::max_texture_image_units
size_t max_texture_image_units
Definition: capabilities_gles.h:50
backend_cast.h
capabilities.h
impeller::ProcTableGLES
Definition: proc_table_gles.h:229
impeller::CapabilitiesGLES::SupportsTextureToTextureBlits
bool SupportsTextureToTextureBlits() const override
Whether the context backend supports blitting from one texture region to another texture region (via ...
Definition: capabilities_gles.cc:160
impeller::CapabilitiesGLES::SupportsComputeSubgroups
bool SupportsComputeSubgroups() const override
Whether the context backend supports configuring ComputePass command subgroups.
Definition: capabilities_gles.cc:172
impeller::CapabilitiesGLES::SupportsReadFromResolve
bool SupportsReadFromResolve() const override
Whether the context backend supports binding the current RenderPass attachments. This is supported if...
Definition: capabilities_gles.cc:176
impeller::CapabilitiesGLES::GetDefaultColorFormat
PixelFormat GetDefaultColorFormat() const override
Returns a supported PixelFormat for textures that store 4-channel colors (red/green/blue/alpha).
Definition: capabilities_gles.cc:188
impeller::PixelFormat::kUnknown
@ kUnknown
impeller::CapabilitiesGLES::SupportsBufferToTextureBlits
bool SupportsBufferToTextureBlits() const override
Whether the context backend supports blitting from a given DeviceBuffer view to a texture region (via...
Definition: capabilities_gles.cc:156
impeller::CapabilitiesGLES::max_renderbuffer_size
size_t max_renderbuffer_size
Definition: capabilities_gles.h:47
impeller::CapabilitiesGLES::num_shader_binary_formats
size_t num_shader_binary_formats
Definition: capabilities_gles.h:74
impeller::CapabilitiesGLES
The Vulkan layers and extensions wrangler.
Definition: capabilities_gles.h:23
impeller::BackendCast
Definition: backend_cast.h:11
impeller::CapabilitiesGLES::SupportsCompute
bool SupportsCompute() const override
Whether the context backend supports ComputePass.
Definition: capabilities_gles.cc:168
impeller::CapabilitiesGLES::operator=
CapabilitiesGLES & operator=(const CapabilitiesGLES &)=delete
impeller::CapabilitiesGLES::GetDefaultGlyphAtlasFormat
PixelFormat GetDefaultGlyphAtlasFormat() const override
Returns the default pixel format for the alpha bitmap glyph atlas.
Definition: capabilities_gles.cc:204
impeller::CapabilitiesGLES::num_compressed_texture_formats
size_t num_compressed_texture_formats
Definition: capabilities_gles.h:71
shader_types.h
impeller
Definition: aiks_blur_unittests.cc:20
size.h
impeller::CapabilitiesGLES::SupportsOffscreenMSAA
bool SupportsOffscreenMSAA() const override
Whether the context backend supports attaching offscreen MSAA color/stencil textures.
Definition: capabilities_gles.cc:144
impeller::CapabilitiesGLES::max_varying_vectors
size_t max_varying_vectors
Definition: capabilities_gles.h:56