| Flutter Impeller |

Public Member Functions | Public Attributes | List of all members
impeller::CapabilitiesGLES Class Referencefinal

The Vulkan layers and extensions wrangler. More...

`#include <capabilities_gles.h>`

Inheritance diagram for impeller::CapabilitiesGLES:

## Public Member Functions
| CapabilitiesGLES (const ProcTableGLES &gl)
| CapabilitiesGLES (const CapabilitiesGLES &)=delete
| CapabilitiesGLES (CapabilitiesGLES &&)=delete
CapabilitiesGLES & | operator= (const CapabilitiesGLES &)=delete
CapabilitiesGLES & | operator= (CapabilitiesGLES &&)=delete
size_t | GetMaxTextureUnits (ShaderStage stage) const
bool | IsANGLE () const
bool | IsES () const
| Whether this is an ES GL variant or (if false) desktop GL. More...
bool | SupportsOffscreenMSAA () const override
| Whether the context backend supports attaching offscreen MSAA color/stencil textures. More...
bool | SupportsImplicitResolvingMSAA () const override
| Whether the context backend supports multisampled rendering to the on-screen surface without requiring an explicit resolve of the MSAA color attachment. More...
bool | SupportsSSBO () const override
| Whether the context backend supports binding Shader Storage Buffer Objects (SSBOs) to pipelines. More...
bool | SupportsTextureToTextureBlits () const override
| Whether the context backend supports blitting from one texture region to another texture region (via the relevant `BlitPass::AddCopy` overloads). More...
bool | SupportsFramebufferFetch () const override
| Whether the context backend is able to support pipelines with shaders that read from the framebuffer (i.e. pixels that have been written by previous draw calls in the current render pass). More...
bool | SupportsCompute () const override
| Whether the context backend supports `ComputePass`. More...
bool | SupportsComputeSubgroups () const override
| Whether the context backend supports configuring `ComputePass` command subgroups. More...
bool | SupportsReadFromResolve () const override
| Whether the context backend supports binding the current `RenderPass` attachments. This is supported if the backend can guarantee that attachment textures will not be mutated until the render pass has fully completed. More...
bool | SupportsDecalSamplerAddressMode () const override
| Whether the context backend supports `SamplerAddressMode::Decal`. More...
bool | SupportsDeviceTransientTextures () const override
| Whether the context backend supports allocating `StorageMode::kDeviceTransient` (aka "memoryless") textures, which are temporary textures kept in tile memory for the duration of the `RenderPass` it's attached to. More...
bool | SupportsTriangleFan () const override
| Whether the primitive type TriangleFan is supported by the backend. More...
bool | SupportsPrimitiveRestart () const override
| Whether primitive restart is supported. More...
bool | SupportsExtendedRangeFormats () const override
| Whether the XR formats are supported on this device. More...
PixelFormat | GetDefaultColorFormat () const override
| Returns a supported `PixelFormat` for textures that store 4-channel colors (red/green/blue/alpha). More...
PixelFormat | GetDefaultStencilFormat () const override
| Returns a supported `PixelFormat` for textures that store stencil information. May include a depth channel if a stencil-only format is not available. More...
PixelFormat | GetDefaultDepthStencilFormat () const override
| Returns a supported `PixelFormat` for textures that store both a stencil and depth component. This will never return a depth-only or stencil-only texture. Returns `PixelFormat::kUnknown` if no suitable depth+stencil format was found. More...
PixelFormat | GetDefaultGlyphAtlasFormat () const override
| Returns the default pixel format for the alpha bitmap glyph atlas. More...
ISize | GetMaximumRenderPassAttachmentSize () const override
| Return the maximum size of a render pass attachment. More...
size_t | GetMinimumUniformAlignment () const override
| The minimum alignment of uniform value offsets in bytes. More...
Public Member Functions inherited from impeller::Capabilities
virtual | ~Capabilities ()

## Public Attributes
size_t | max_combined_texture_image_units = 8
size_t | max_cube_map_texture_size = 16
size_t | max_fragment_uniform_vectors = 16
size_t | max_renderbuffer_size = 1
size_t | max_texture_image_units = 8
ISize | max_texture_size = ISize{64, 64}
size_t | max_varying_vectors = 8
size_t | max_vertex_attribs = 8
size_t | max_vertex_texture_image_units = 0
size_t | max_vertex_uniform_vectors = 128
ISize | max_viewport_dims
size_t | num_compressed_texture_formats = 0
size_t | num_shader_binary_formats = 0

## Additional Inherited Members
Static Public Member Functions inherited from impeller::BackendCast< CapabilitiesGLES, Capabilities >
static CapabilitiesGLES & | Cast (Capabilities &base)
static const CapabilitiesGLES & | Cast (const Capabilities &base)
static CapabilitiesGLES * | Cast (Capabilities *base)
static const CapabilitiesGLES * | Cast (const Capabilities *base)
Protected Member Functions inherited from impeller::Capabilities
| Capabilities ()
| Capabilities (const Capabilities &)=delete
Capabilities & | operator= (const Capabilities &)=delete

## Detailed Description

The Vulkan layers and extensions wrangler.

Definition at line 23 of file capabilities_gles.h.

## Constructor & Destructor Documentation

## ◆ CapabilitiesGLES() [1/3]

impeller::CapabilitiesGLES::CapabilitiesGLES | ( | const ProcTableGLES & | gl | ) |
| explicit

Definition at line 29 of file capabilities_gles.cc.

29 {
30 {
31 GLint value = 0;
32 gl.GetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &value);
33 max_combined_texture_image_units = value;
34 }
35
36 {
37 GLint value = 0;
38 gl.GetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE, &value);
39 max_cube_map_texture_size = value;
40 }
41
42 auto const desc = gl.GetDescription();
43
44 if (desc->IsES()) {
45 GLint value = 0;
46 gl.GetIntegerv(GL_MAX_FRAGMENT_UNIFORM_VECTORS, &value);
47 max_fragment_uniform_vectors = value;
48 }
49
50 {
51 GLint value = 0;
52 gl.GetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &value);
53 max_renderbuffer_size = value;
54 }
55
56 {
57 GLint value = 0;
58 gl.GetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &value);
59 max_texture_image_units = value;
60 }
61
62 {
63 GLint value = 0;
64 gl.GetIntegerv(GL_MAX_TEXTURE_SIZE, &value);
65 max_texture_size = ISize{value, value};
66 }
67
68 if (desc->IsES()) {
69 GLint value = 0;
70 gl.GetIntegerv(GL_MAX_VARYING_VECTORS, &value);
71 max_varying_vectors = value;
72 }
73
74 {
75 GLint value = 0;
76 gl.GetIntegerv(GL_MAX_VERTEX_ATTRIBS, &value);
77 max_vertex_attribs = value;
78 }
79
80 {
81 GLint value = 0;
82 gl.GetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &value);
83 max_vertex_texture_image_units = value;
84 }
85
86 if (desc->IsES()) {
87 GLint value = 0;
88 gl.GetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS, &value);
89 max_vertex_uniform_vectors = value;
90 }
91
92 {
93 GLint values[2] = {};
94 gl.GetIntegerv(GL_MAX_VIEWPORT_DIMS, values);
95 max_viewport_dims = ISize{values[0], values[1]};
96 }
97
98 {
99 GLint value = 0;
100 gl.GetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &value);
101 num_compressed_texture_formats = value;
102 }
103
104 if (desc->IsES()) {
105 GLint value = 0;
106 gl.GetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &value);
107 num_shader_binary_formats = value;
108 }
109
110 if (desc->IsES()) {
111 default_glyph_atlas_format_ = PixelFormat::kA8UNormInt;
112 } else {
113 default_glyph_atlas_format_ = PixelFormat::kR8UNormInt;
114 }
115
116 if (desc->GetGlVersion().major_version >= 3) {
117 supports_texture_to_texture_blits_ = true;
118 }
119
120 supports_framebuffer_fetch_ = desc->HasExtension(kFramebufferFetchExt);
121
122 if (desc->HasExtension(kTextureBorderClampExt) ||
123 desc->HasExtension(kNvidiaTextureBorderClampExt)) {
124 supports_decal_sampler_address_mode_ = true;
125 }
126
127 if (desc->HasExtension(kMultisampledRenderToTextureExt)) {
128 supports_implicit_msaa_ = true;
129
130 if (desc->HasExtension(kMultisampledRenderToTexture2Ext)) {
131 // We hard-code 4x MSAA, so let's make sure it's supported.
132 GLint value = 0;
133 gl.GetIntegerv(GL_MAX_SAMPLES_EXT, &value);
134 supports_offscreen_msaa_ = value >= 4;
135 }
136 } else if (desc->GetGlVersion().major_version >= 3 && desc->IsES()) {
137 GLint value = 0;
138 gl.GetIntegerv(GL_MAX_SAMPLES, &value);
139 supports_offscreen_msaa_ = value >= 4;
140 }
141 is_es_ = desc->IsES();
142 is_angle_ = desc->IsANGLE();
143 }
impeller::CapabilitiesGLES::max_vertex_uniform_vectors
size_t max_vertex_uniform_vectors
Definition: capabilities_gles.h:65
impeller::CapabilitiesGLES::max_fragment_uniform_vectors
size_t max_fragment_uniform_vectors
Definition: capabilities_gles.h:44
impeller::CapabilitiesGLES::max_viewport_dims
ISize max_viewport_dims
Definition: capabilities_gles.h:68
impeller::CapabilitiesGLES::max_renderbuffer_size
size_t max_renderbuffer_size
Definition: capabilities_gles.h:47
impeller::CapabilitiesGLES::max_cube_map_texture_size
size_t max_cube_map_texture_size
Definition: capabilities_gles.h:41
impeller::CapabilitiesGLES::max_vertex_texture_image_units
size_t max_vertex_texture_image_units
Definition: capabilities_gles.h:62
impeller::CapabilitiesGLES::num_shader_binary_formats
size_t num_shader_binary_formats
Definition: capabilities_gles.h:74
impeller::CapabilitiesGLES::max_combined_texture_image_units
size_t max_combined_texture_image_units
Definition: capabilities_gles.h:38
impeller::CapabilitiesGLES::max_texture_image_units
size_t max_texture_image_units
Definition: capabilities_gles.h:50
impeller::CapabilitiesGLES::max_texture_size
ISize max_texture_size
Definition: capabilities_gles.h:53
impeller::CapabilitiesGLES::max_vertex_attribs
size_t max_vertex_attribs
Definition: capabilities_gles.h:59
impeller::CapabilitiesGLES::max_varying_vectors
size_t max_varying_vectors
Definition: capabilities_gles.h:56
impeller::CapabilitiesGLES::num_compressed_texture_formats
size_t num_compressed_texture_formats
Definition: capabilities_gles.h:71
value
int32_t value
Definition: dl_golden_unittests.cc:459
impeller::kTextureBorderClampExt
static constexpr const char * kTextureBorderClampExt
Definition: capabilities_gles.cc:16
impeller::kMultisampledRenderToTexture2Ext
static constexpr const char * kMultisampledRenderToTexture2Ext
Definition: capabilities_gles.cc:26
impeller::kNvidiaTextureBorderClampExt
static constexpr const char * kNvidiaTextureBorderClampExt
Definition: capabilities_gles.cc:18
impeller::PixelFormat::kR8UNormInt
@ kR8UNormInt
impeller::PixelFormat::kA8UNormInt
@ kA8UNormInt
impeller::kFramebufferFetchExt
static constexpr const char * kFramebufferFetchExt
Definition: capabilities_gles.cc:13
impeller::ISize
ISize64 ISize
Definition: size.h:162
impeller::kMultisampledRenderToTextureExt
static constexpr const char * kMultisampledRenderToTextureExt
Definition: capabilities_gles.cc:22

References impeller::ProcTableGLES::GetDescription(), impeller::kA8UNormInt, impeller::kFramebufferFetchExt, impeller::kMultisampledRenderToTexture2Ext, impeller::kMultisampledRenderToTextureExt, impeller::kNvidiaTextureBorderClampExt, impeller::kR8UNormInt, impeller::kTextureBorderClampExt, max_combined_texture_image_units, max_cube_map_texture_size, max_fragment_uniform_vectors, max_renderbuffer_size, max_texture_image_units, max_texture_size, max_varying_vectors, max_vertex_attribs, max_vertex_texture_image_units, max_vertex_uniform_vectors, max_viewport_dims, num_compressed_texture_formats, num_shader_binary_formats, and value.

## ◆ CapabilitiesGLES() [2/3]

impeller::CapabilitiesGLES::CapabilitiesGLES | ( | const CapabilitiesGLES & |  | ) |
| delete

## ◆ CapabilitiesGLES() [3/3]

impeller::CapabilitiesGLES::CapabilitiesGLES | ( | CapabilitiesGLES && |  | ) |
| delete

## Member Function Documentation

## ◆ GetDefaultColorFormat()

PixelFormat impeller::CapabilitiesGLES::GetDefaultColorFormat | ( |  | ) | const
| overridevirtual

Returns a supported `PixelFormat` for textures that store 4-channel colors (red/green/blue/alpha).

Implements impeller::Capabilities.

Definition at line 206 of file capabilities_gles.cc.

206 {
207 return PixelFormat::kR8G8B8A8UNormInt;
208 }
impeller::PixelFormat::kR8G8B8A8UNormInt
@ kR8G8B8A8UNormInt

References impeller::kR8G8B8A8UNormInt.

## ◆ GetDefaultDepthStencilFormat()

PixelFormat impeller::CapabilitiesGLES::GetDefaultDepthStencilFormat | ( |  | ) | const
| overridevirtual

Returns a supported `PixelFormat` for textures that store both a stencil and depth component. This will never return a depth-only or stencil-only texture. Returns `PixelFormat::kUnknown` if no suitable depth+stencil format was found.

Implements impeller::Capabilities.

Definition at line 214 of file capabilities_gles.cc.

214 {
215 return PixelFormat::kD24UnormS8Uint;
216 }
impeller::PixelFormat::kD24UnormS8Uint
@ kD24UnormS8Uint

References impeller::kD24UnormS8Uint.

## ◆ GetDefaultGlyphAtlasFormat()

PixelFormat impeller::CapabilitiesGLES::GetDefaultGlyphAtlasFormat | ( |  | ) | const
| overridevirtual

Returns the default pixel format for the alpha bitmap glyph atlas.

       Some backends may use Red channel while others use grey. This
       should not have any impact

Implements impeller::Capabilities.

Definition at line 230 of file capabilities_gles.cc.

230 {
231 return default_glyph_atlas_format_;
232 }

## ◆ GetDefaultStencilFormat()

PixelFormat impeller::CapabilitiesGLES::GetDefaultStencilFormat | ( |  | ) | const
| overridevirtual

Returns a supported `PixelFormat` for textures that store stencil information. May include a depth channel if a stencil-only format is not available.

Implements impeller::Capabilities.

Definition at line 210 of file capabilities_gles.cc.

210 {
211 return PixelFormat::kS8UInt;
212 }
impeller::PixelFormat::kS8UInt
@ kS8UInt

References impeller::kS8UInt.

## ◆ GetMaximumRenderPassAttachmentSize()

ISize impeller::CapabilitiesGLES::GetMaximumRenderPassAttachmentSize | ( |  | ) | const
| overridevirtual

Return the maximum size of a render pass attachment.

Note that this may be smaller than the maximum allocatable texture size.

Implements impeller::Capabilities.

Definition at line 234 of file capabilities_gles.cc.

234 {
235 return max_texture_size;
236 }

References max_texture_size.

## ◆ GetMaxTextureUnits()

size_t impeller::CapabilitiesGLES::GetMaxTextureUnits | ( | ShaderStage | stage | ) | const

Definition at line 149 of file capabilities_gles.cc.

149 {
150 switch (stage) {
151 case ShaderStage::kVertex:
152 return max_vertex_texture_image_units;
153 case ShaderStage::kFragment:
154 return max_texture_image_units;
155 case ShaderStage::kUnknown:
156 case ShaderStage::kCompute:
157 return 0u;
158 }
159 FML_UNREACHABLE();
160 }
impeller::ShaderStage::kUnknown
@ kUnknown
impeller::ShaderStage::kCompute
@ kCompute
impeller::ShaderStage::kFragment
@ kFragment
impeller::ShaderStage::kVertex
@ kVertex

References impeller::kCompute, impeller::kFragment, impeller::kUnknown, impeller::kVertex, max_texture_image_units, and max_vertex_texture_image_units.

## ◆ GetMinimumUniformAlignment()

size_t impeller::CapabilitiesGLES::GetMinimumUniformAlignment | ( |  | ) | const
| overridevirtual

The minimum alignment of uniform value offsets in bytes.

Implements impeller::Capabilities.

Definition at line 238 of file capabilities_gles.cc.

238 {
239 return 256;
240 }

## ◆ IsANGLE()

bool impeller::CapabilitiesGLES::IsANGLE | ( |  | ) | const

Definition at line 218 of file capabilities_gles.cc.

218 {
219 return is_angle_;
220 }

## ◆ IsES()

bool impeller::CapabilitiesGLES::IsES | ( |  | ) | const

Whether this is an ES GL variant or (if false) desktop GL.

Definition at line 145 of file capabilities_gles.cc.

145 {
146 return is_es_;
147 }

## ◆ operator=() [1/2]

CapabilitiesGLES& impeller::CapabilitiesGLES::operator= | ( | CapabilitiesGLES && |  | ) |
| delete

## ◆ operator=() [2/2]

CapabilitiesGLES& impeller::CapabilitiesGLES::operator= | ( | const CapabilitiesGLES & |  | ) |
| delete

## ◆ SupportsCompute()

bool impeller::CapabilitiesGLES::SupportsCompute | ( |  | ) | const
| overridevirtual

Whether the context backend supports `ComputePass`.

Implements impeller::Capabilities.

Definition at line 182 of file capabilities_gles.cc.

182 {
183 return false;
184 }

## ◆ SupportsComputeSubgroups()

bool impeller::CapabilitiesGLES::SupportsComputeSubgroups | ( |  | ) | const
| overridevirtual

Whether the context backend supports configuring `ComputePass` command subgroups.

Implements impeller::Capabilities.

Definition at line 186 of file capabilities_gles.cc.

186 {
187 return false;
188 }

## ◆ SupportsDecalSamplerAddressMode()

bool impeller::CapabilitiesGLES::SupportsDecalSamplerAddressMode | ( |  | ) | const
| overridevirtual

Whether the context backend supports `SamplerAddressMode::Decal`.

Implements impeller::Capabilities.

Definition at line 194 of file capabilities_gles.cc.

194 {
195 return supports_decal_sampler_address_mode_;
196 }

## ◆ SupportsDeviceTransientTextures()

bool impeller::CapabilitiesGLES::SupportsDeviceTransientTextures | ( |  | ) | const
| overridevirtual

Whether the context backend supports allocating `StorageMode::kDeviceTransient` (aka "memoryless") textures, which are temporary textures kept in tile memory for the duration of the `RenderPass` it's attached to.

This feature is especially useful for MSAA and stencils.

Implements impeller::Capabilities.

Definition at line 198 of file capabilities_gles.cc.

198 {
199 return false;
200 }

## ◆ SupportsExtendedRangeFormats()

bool impeller::CapabilitiesGLES::SupportsExtendedRangeFormats | ( |  | ) | const
| overridevirtual

Whether the XR formats are supported on this device.

This is only ever true for iOS and macOS devices. We may need to revisit this API when approaching wide gamut rendering for Vulkan and GLES.

Implements impeller::Capabilities.

Definition at line 226 of file capabilities_gles.cc.

226 {
227 return false;
228 }

## ◆ SupportsFramebufferFetch()

bool impeller::CapabilitiesGLES::SupportsFramebufferFetch | ( |  | ) | const
| overridevirtual

Whether the context backend is able to support pipelines with shaders that read from the framebuffer (i.e. pixels that have been written by previous draw calls in the current render pass).

Example of reading from the first color attachment in a GLSL shader: ``` uniform subpassInput subpass_input;

out vec4 frag_color;

void main() { vec4 color = subpassLoad(subpass_input); // Invert the colors drawn to the framebuffer. frag_color = vec4(vec3(1) - color.rgb, color.a); } ```

Implements impeller::Capabilities.

Definition at line 178 of file capabilities_gles.cc.

178 {
179 return supports_framebuffer_fetch_;
180 }

## ◆ SupportsImplicitResolvingMSAA()

bool impeller::CapabilitiesGLES::SupportsImplicitResolvingMSAA | ( |  | ) | const
| overridevirtual

Whether the context backend supports multisampled rendering to the on-screen surface without requiring an explicit resolve of the MSAA color attachment.

Implements impeller::Capabilities.

Definition at line 166 of file capabilities_gles.cc.

166 {
167 return supports_implicit_msaa_;
168 }

## ◆ SupportsOffscreenMSAA()

bool impeller::CapabilitiesGLES::SupportsOffscreenMSAA | ( |  | ) | const
| overridevirtual

Whether the context backend supports attaching offscreen MSAA color/stencil textures.

Implements impeller::Capabilities.

Definition at line 162 of file capabilities_gles.cc.

162 {
163 return supports_offscreen_msaa_;
164 }

## ◆ SupportsPrimitiveRestart()

bool impeller::CapabilitiesGLES::SupportsPrimitiveRestart | ( |  | ) | const
| overridevirtual

Whether primitive restart is supported.

Implements impeller::Capabilities.

Definition at line 222 of file capabilities_gles.cc.

222 {
223 return false;
224 }

## ◆ SupportsReadFromResolve()

bool impeller::CapabilitiesGLES::SupportsReadFromResolve | ( |  | ) | const
| overridevirtual

Whether the context backend supports binding the current `RenderPass` attachments. This is supported if the backend can guarantee that attachment textures will not be mutated until the render pass has fully completed.

This is possible because many mobile graphics cards track `RenderPass` attachment state in intermediary tile memory prior to Storing the pass in the heap allocated attachments on DRAM. Metal's hazard tracking and Vulkan's barriers are granular enough to allow for safely accessing attachment textures prior to storage in the same `RenderPass`.

Implements impeller::Capabilities.

Definition at line 190 of file capabilities_gles.cc.

190 {
191 return false;
192 }

## ◆ SupportsSSBO()

bool impeller::CapabilitiesGLES::SupportsSSBO | ( |  | ) | const
| overridevirtual

Whether the context backend supports binding Shader Storage Buffer Objects (SSBOs) to pipelines.

Implements impeller::Capabilities.

Definition at line 170 of file capabilities_gles.cc.

170 {
171 return false;
172 }

## ◆ SupportsTextureToTextureBlits()

bool impeller::CapabilitiesGLES::SupportsTextureToTextureBlits | ( |  | ) | const
| overridevirtual

Whether the context backend supports blitting from one texture region to another texture region (via the relevant `BlitPass::AddCopy` overloads).

Implements impeller::Capabilities.

Definition at line 174 of file capabilities_gles.cc.

174 {
175 return supports_texture_to_texture_blits_;
176 }

## ◆ SupportsTriangleFan()

bool impeller::CapabilitiesGLES::SupportsTriangleFan | ( |  | ) | const
| overridevirtual

Whether the primitive type TriangleFan is supported by the backend.

Implements impeller::Capabilities.

Definition at line 202 of file capabilities_gles.cc.

202 {
203 return true;
204 }

## Member Data Documentation

## ◆ max_combined_texture_image_units

size_t impeller::CapabilitiesGLES::max_combined_texture_image_units = 8

Definition at line 38 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

## ◆ max_cube_map_texture_size

size_t impeller::CapabilitiesGLES::max_cube_map_texture_size = 16

Definition at line 41 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

## ◆ max_fragment_uniform_vectors

size_t impeller::CapabilitiesGLES::max_fragment_uniform_vectors = 16

Definition at line 44 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

## ◆ max_renderbuffer_size

size_t impeller::CapabilitiesGLES::max_renderbuffer_size = 1

Definition at line 47 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

## ◆ max_texture_image_units

size_t impeller::CapabilitiesGLES::max_texture_image_units = 8

Definition at line 50 of file capabilities_gles.h.

Referenced by CapabilitiesGLES(), and GetMaxTextureUnits().

## ◆ max_texture_size

ISize impeller::CapabilitiesGLES::max_texture_size = ISize{64, 64}

Definition at line 53 of file capabilities_gles.h.

Referenced by CapabilitiesGLES(), and GetMaximumRenderPassAttachmentSize().

## ◆ max_varying_vectors

size_t impeller::CapabilitiesGLES::max_varying_vectors = 8

Definition at line 56 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

## ◆ max_vertex_attribs

size_t impeller::CapabilitiesGLES::max_vertex_attribs = 8

Definition at line 59 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

## ◆ max_vertex_texture_image_units

size_t impeller::CapabilitiesGLES::max_vertex_texture_image_units = 0

Definition at line 62 of file capabilities_gles.h.

Referenced by CapabilitiesGLES(), and GetMaxTextureUnits().

## ◆ max_vertex_uniform_vectors

size_t impeller::CapabilitiesGLES::max_vertex_uniform_vectors = 128

Definition at line 65 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

## ◆ max_viewport_dims

ISize impeller::CapabilitiesGLES::max_viewport_dims

Definition at line 68 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

## ◆ num_compressed_texture_formats

size_t impeller::CapabilitiesGLES::num_compressed_texture_formats = 0

Definition at line 71 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

## ◆ num_shader_binary_formats

size_t impeller::CapabilitiesGLES::num_shader_binary_formats = 0

Definition at line 74 of file capabilities_gles.h.

Referenced by CapabilitiesGLES().

The documentation for this class was generated from the following files:

- impeller/renderer/backend/gles/capabilities_gles.h
- impeller/renderer/backend/gles/capabilities_gles.cc