| Flutter Impeller |

Public Member Functions | Friends | List of all members
impeller::StandardCapabilities Class Referencefinal
Inheritance diagram for impeller::StandardCapabilities:

## Public Member Functions
| ~StandardCapabilities () override=default
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 | SupportsTriangleFan () const override
| Whether the primitive type TriangleFan is supported by the backend. 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...
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...
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...
bool | SupportsPrimitiveRestart () const override
| Whether primitive restart is supported. More...
bool | Supports32BitPrimitiveIndices () const override
| Whether 32-bit values are supported in index buffers used to draw primitives. More...
bool | SupportsExtendedRangeFormats () const override
| Whether the XR formats are supported on this device. More...
size_t | GetMinimumUniformAlignment () const override
| The minimum alignment of uniform value offsets in bytes. More...
bool | NeedsPartitionedHostBuffer () const override
| Whether the host buffer should use separate device buffers for indexes from other data. More...
Public Member Functions inherited from impeller::Capabilities
virtual | ~Capabilities ()
virtual size_t | GetMinimumStorageBufferAlignment () const
| The minimum alignment of storage buffer value offsets in bytes. More...

## Friends
class | CapabilitiesBuilder

## Additional Inherited Members
Protected Member Functions inherited from impeller::Capabilities
| Capabilities ()
| Capabilities (const Capabilities &)=delete
Capabilities & | operator= (const Capabilities &)=delete

## Detailed Description

Definition at line 18 of file capabilities.cc.

## Constructor & Destructor Documentation

## ◆ ~StandardCapabilities()

impeller::StandardCapabilities::~StandardCapabilities | ( |  | ) |
| overridedefault

## Member Function Documentation

## ◆ GetDefaultColorFormat()

PixelFormat impeller::StandardCapabilities::GetDefaultColorFormat | ( |  | ) | const
| inlineoverridevirtual

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

Implements impeller::Capabilities.

Definition at line 66 of file capabilities.cc.

66 {
67 return default_color_format_;
68 }

## ◆ GetDefaultDepthStencilFormat()

PixelFormat impeller::StandardCapabilities::GetDefaultDepthStencilFormat | ( |  | ) | const
| inlineoverridevirtual

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 76 of file capabilities.cc.

76 {
77 return default_depth_stencil_format_;
78 }

## ◆ GetDefaultGlyphAtlasFormat()

PixelFormat impeller::StandardCapabilities::GetDefaultGlyphAtlasFormat | ( |  | ) | const
| inlineoverridevirtual

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 86 of file capabilities.cc.

86 {
87 return default_glyph_atlas_format_;
88 }

## ◆ GetDefaultStencilFormat()

PixelFormat impeller::StandardCapabilities::GetDefaultStencilFormat | ( |  | ) | const
| inlineoverridevirtual

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 71 of file capabilities.cc.

71 {
72 return default_stencil_format_;
73 }

## ◆ GetMaximumRenderPassAttachmentSize()

ISize impeller::StandardCapabilities::GetMaximumRenderPassAttachmentSize | ( |  | ) | const
| inlineoverridevirtual

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 91 of file capabilities.cc.

91 {
92 return default_maximum_render_pass_attachment_size_;
93 }

## ◆ GetMinimumUniformAlignment()

size_t impeller::StandardCapabilities::GetMinimumUniformAlignment | ( |  | ) | const
| inlineoverridevirtual

The minimum alignment of uniform value offsets in bytes.

Implements impeller::Capabilities.

Definition at line 107 of file capabilities.cc.

107 {
108 return minimum_uniform_alignment_;
109 }

## ◆ NeedsPartitionedHostBuffer()

bool impeller::StandardCapabilities::NeedsPartitionedHostBuffer | ( |  | ) | const
| inlineoverridevirtual

Whether the host buffer should use separate device buffers for indexes from other data.

Implements impeller::Capabilities.

Definition at line 112 of file capabilities.cc.

112 {
113 return needs_partitioned_host_buffer_;
114 }

## ◆ Supports32BitPrimitiveIndices()

bool impeller::StandardCapabilities::Supports32BitPrimitiveIndices | ( |  | ) | const
| inlineoverridevirtual

Whether 32-bit values are supported in index buffers used to draw primitives.

Implements impeller::Capabilities.

Definition at line 99 of file capabilities.cc.

99 { return true; }

## ◆ SupportsCompute()

bool impeller::StandardCapabilities::SupportsCompute | ( |  | ) | const
| inlineoverridevirtual

Whether the context backend supports `ComputePass`.

Implements impeller::Capabilities.

Definition at line 45 of file capabilities.cc.

45 { return supports_compute_; }

## ◆ SupportsComputeSubgroups()

bool impeller::StandardCapabilities::SupportsComputeSubgroups | ( |  | ) | const
| inlineoverridevirtual

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

Implements impeller::Capabilities.

Definition at line 48 of file capabilities.cc.

48 {
49 return supports_compute_subgroups_;
50 }

## ◆ SupportsDecalSamplerAddressMode()

bool impeller::StandardCapabilities::SupportsDecalSamplerAddressMode | ( |  | ) | const
| inlineoverridevirtual

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

Implements impeller::Capabilities.

Definition at line 58 of file capabilities.cc.

58 {
59 return supports_decal_sampler_address_mode_;
60 }

## ◆ SupportsDeviceTransientTextures()

bool impeller::StandardCapabilities::SupportsDeviceTransientTextures | ( |  | ) | const
| inlineoverridevirtual

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 81 of file capabilities.cc.

81 {
82 return supports_device_transient_textures_;
83 }

## ◆ SupportsExtendedRangeFormats()

bool impeller::StandardCapabilities::SupportsExtendedRangeFormats | ( |  | ) | const
| inlineoverridevirtual

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 102 of file capabilities.cc.

102 {
103 return supports_extended_range_formats_;
104 }

## ◆ SupportsFramebufferFetch()

bool impeller::StandardCapabilities::SupportsFramebufferFetch | ( |  | ) | const
| inlineoverridevirtual

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 40 of file capabilities.cc.

40 {
41 return supports_framebuffer_fetch_;
42 }

## ◆ SupportsImplicitResolvingMSAA()

bool impeller::StandardCapabilities::SupportsImplicitResolvingMSAA | ( |  | ) | const
| inlineoverridevirtual

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 29 of file capabilities.cc.

29 { return false; }

## ◆ SupportsOffscreenMSAA()

bool impeller::StandardCapabilities::SupportsOffscreenMSAA | ( |  | ) | const
| inlineoverridevirtual

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

Implements impeller::Capabilities.

Definition at line 24 of file capabilities.cc.

24 {
25 return supports_offscreen_msaa_;
26 }

## ◆ SupportsPrimitiveRestart()

bool impeller::StandardCapabilities::SupportsPrimitiveRestart | ( |  | ) | const
| inlineoverridevirtual

Whether primitive restart is supported.

Implements impeller::Capabilities.

Definition at line 96 of file capabilities.cc.

96 { return true; }

## ◆ SupportsReadFromResolve()

bool impeller::StandardCapabilities::SupportsReadFromResolve | ( |  | ) | const
| inlineoverridevirtual

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 53 of file capabilities.cc.

53 {
54 return supports_read_from_resolve_;
55 }

## ◆ SupportsSSBO()

bool impeller::StandardCapabilities::SupportsSSBO | ( |  | ) | const
| inlineoverridevirtual

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

Implements impeller::Capabilities.

Definition at line 32 of file capabilities.cc.

32 { return supports_ssbo_; }

## ◆ SupportsTextureToTextureBlits()

bool impeller::StandardCapabilities::SupportsTextureToTextureBlits | ( |  | ) | const
| inlineoverridevirtual

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 35 of file capabilities.cc.

35 {
36 return supports_texture_to_texture_blits_;
37 }

## ◆ SupportsTriangleFan()

bool impeller::StandardCapabilities::SupportsTriangleFan | ( |  | ) | const
| inlineoverridevirtual

Whether the primitive type TriangleFan is supported by the backend.

Implements impeller::Capabilities.

Definition at line 63 of file capabilities.cc.

63 { return supports_triangle_fan_; }

## Friends And Related Function Documentation

## ◆ CapabilitiesBuilder

friend class CapabilitiesBuilder
| friend

Definition at line 156 of file capabilities.cc.

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

- impeller/renderer/capabilities.cc