21 return supports_offscreen_msaa_;
32 return supports_texture_to_texture_blits_;
37 return supports_framebuffer_fetch_;
45 return supports_compute_subgroups_;
50 return supports_read_from_resolve_;
55 return supports_decal_sampler_address_mode_;
63 return default_color_format_;
68 return default_stencil_format_;
73 return default_depth_stencil_format_;
78 return supports_device_transient_textures_;
83 return default_glyph_atlas_format_;
88 return default_maximum_render_pass_attachment_size_;
96 return supports_extended_range_formats_;
102 bool supports_texture_to_texture_blits,
103 bool supports_framebuffer_fetch,
104 bool supports_compute,
105 bool supports_compute_subgroups,
106 bool supports_read_from_resolve,
107 bool supports_decal_sampler_address_mode,
108 bool supports_device_transient_textures,
109 bool supports_triangle_fan,
110 bool supports_extended_range_formats,
115 ISize default_maximum_render_pass_attachment_size)
116 : supports_offscreen_msaa_(supports_offscreen_msaa),
117 supports_ssbo_(supports_ssbo),
118 supports_texture_to_texture_blits_(supports_texture_to_texture_blits),
119 supports_framebuffer_fetch_(supports_framebuffer_fetch),
120 supports_compute_(supports_compute),
121 supports_compute_subgroups_(supports_compute_subgroups),
122 supports_read_from_resolve_(supports_read_from_resolve),
123 supports_decal_sampler_address_mode_(
124 supports_decal_sampler_address_mode),
125 supports_device_transient_textures_(supports_device_transient_textures),
126 supports_triangle_fan_(supports_triangle_fan),
127 supports_extended_range_formats_(supports_extended_range_formats),
128 default_color_format_(default_color_format),
129 default_stencil_format_(default_stencil_format),
130 default_depth_stencil_format_(default_depth_stencil_format),
131 default_glyph_atlas_format_(default_glyph_atlas_format),
132 default_maximum_render_pass_attachment_size_(
133 default_maximum_render_pass_attachment_size) {}
137 bool supports_offscreen_msaa_ =
false;
138 bool supports_ssbo_ =
false;
139 bool supports_texture_to_texture_blits_ =
false;
140 bool supports_framebuffer_fetch_ =
false;
141 bool supports_compute_ =
false;
142 bool supports_compute_subgroups_ =
false;
143 bool supports_read_from_resolve_ =
false;
144 bool supports_decal_sampler_address_mode_ =
false;
145 bool supports_device_transient_textures_ =
false;
146 bool supports_triangle_fan_ =
false;
147 bool supports_extended_range_formats_ =
false;
152 ISize default_maximum_render_pass_attachment_size_ =
ISize(1, 1);
164 supports_offscreen_msaa_ =
value;
169 supports_ssbo_ =
value;
175 supports_texture_to_texture_blits_ =
value;
181 supports_framebuffer_fetch_ =
value;
186 supports_compute_ =
value;
192 supports_compute_subgroups_ =
value;
198 default_color_format_ =
value;
204 default_stencil_format_ =
value;
210 default_depth_stencil_format_ =
value;
215 bool read_from_resolve) {
216 supports_read_from_resolve_ = read_from_resolve;
222 supports_decal_sampler_address_mode_ =
value;
228 supports_device_transient_textures_ =
value;
234 default_glyph_atlas_format_ =
value;
239 supports_triangle_fan_ =
value;
245 default_maximum_render_pass_attachment_size_ = size;
251 supports_extended_range_formats_ =
value;
258 supports_offscreen_msaa_,
260 supports_texture_to_texture_blits_,
261 supports_framebuffer_fetch_,
263 supports_compute_subgroups_,
264 supports_read_from_resolve_,
265 supports_decal_sampler_address_mode_,
266 supports_device_transient_textures_,
267 supports_triangle_fan_,
268 supports_extended_range_formats_,
273 default_maximum_render_pass_attachment_size_.value_or(
ISize{1, 1})
CapabilitiesBuilder & SetDefaultColorFormat(PixelFormat value)
CapabilitiesBuilder & SetSupportsComputeSubgroups(bool value)
CapabilitiesBuilder & SetSupportsTextureToTextureBlits(bool value)
CapabilitiesBuilder & SetDefaultStencilFormat(PixelFormat value)
CapabilitiesBuilder & SetSupportsDeviceTransientTextures(bool value)
CapabilitiesBuilder & SetSupportsTriangleFan(bool value)
CapabilitiesBuilder & SetSupportsFramebufferFetch(bool value)
CapabilitiesBuilder & SetSupportsDecalSamplerAddressMode(bool value)
CapabilitiesBuilder & SetSupportsOffscreenMSAA(bool value)
CapabilitiesBuilder & SetSupportsSSBO(bool value)
CapabilitiesBuilder & SetMaximumRenderPassAttachmentSize(ISize size)
CapabilitiesBuilder & SetSupportsExtendedRangeFormats(bool value)
CapabilitiesBuilder & SetDefaultGlyphAtlasFormat(PixelFormat value)
CapabilitiesBuilder & SetSupportsCompute(bool value)
std::unique_ptr< Capabilities > Build()
CapabilitiesBuilder & SetDefaultDepthStencilFormat(PixelFormat value)
CapabilitiesBuilder & SetSupportsReadFromResolve(bool value)
~StandardCapabilities() override=default
bool SupportsReadFromResolve() const override
Whether the context backend supports binding the current RenderPass attachments. This is supported if...
PixelFormat GetDefaultDepthStencilFormat() const override
Returns a supported PixelFormat for textures that store both a stencil and depth component....
bool SupportsComputeSubgroups() const override
Whether the context backend supports configuring ComputePass command subgroups.
bool SupportsOffscreenMSAA() const override
Whether the context backend supports attaching offscreen MSAA color/stencil textures.
ISize GetMaximumRenderPassAttachmentSize() const override
Return the maximum size of a render pass attachment.
bool SupportsTextureToTextureBlits() const override
Whether the context backend supports blitting from one texture region to another texture region (via ...
bool SupportsFramebufferFetch() const override
Whether the context backend is able to support pipelines with shaders that read from the framebuffer ...
PixelFormat GetDefaultGlyphAtlasFormat() const override
Returns the default pixel format for the alpha bitmap glyph atlas.
PixelFormat GetDefaultStencilFormat() const override
Returns a supported PixelFormat for textures that store stencil information. May include a depth chan...
bool SupportsCompute() const override
Whether the context backend supports ComputePass.
bool SupportsSSBO() const override
Whether the context backend supports binding Shader Storage Buffer Objects (SSBOs) to pipelines.
bool SupportsDeviceTransientTextures() const override
Whether the context backend supports allocating StorageMode::kDeviceTransient (aka "memoryless") text...
bool SupportsImplicitResolvingMSAA() const override
Whether the context backend supports multisampled rendering to the on-screen surface without requirin...
bool SupportsPrimitiveRestart() const override
Whether primitive restart is supported.
PixelFormat GetDefaultColorFormat() const override
Returns a supported PixelFormat for textures that store 4-channel colors (red/green/blue/alpha).
bool SupportsExtendedRangeFormats() const override
Whether the XR formats are supported on this device.
bool SupportsTriangleFan() const override
Whether the primitive type TriangleFan is supported by the backend.
bool SupportsDecalSamplerAddressMode() const override
Whether the context backend supports SamplerAddressMode::Decal.
PixelFormat
The Pixel formats supported by Impeller. The naming convention denotes the usage of the component,...