Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

1use crate::{WgpuAtlas, WgpuContext};
2use bytemuck::{Pod, Zeroable};
3use gpui::{
4 AtlasTextureId, Background, Bounds, DevicePixels, GpuSpecs, MonochromeSprite, Path, Point,
5 PolychromeSprite, PrimitiveBatch, Quad, ScaledPixels, Scene, Shadow, Size, SubpixelSprite,
6 Underline, get_gamma_correction_ratios,
7};
…lines 8–92 unchanged (85 lines)
93
94pub struct WgpuRenderer {
95 device: Arc<wgpu::Device>,
96 queue: Arc<wgpu::Queue>,
97 surface: wgpu::Surface<'static>,
98 surface_config: wgpu::SurfaceConfiguration,
99 pipelines: WgpuPipelines,
100 bind_group_layouts: WgpuBindGroupLayouts,
101 atlas: Arc<WgpuAtlas>,
102 atlas_sampler: wgpu::Sampler,
103 globals_buffer: wgpu::Buffer,
104 path_globals_offset: u64,
105 gamma_offset: u64,
…lines 106–128 unchanged (23 lines)
129 /// of the returned renderer.
130 #[cfg(not(target_family = "wasm"))]
131 pub fn new<W: HasWindowHandle + HasDisplayHandle>(
132 gpu_context: &mut Option<WgpuContext>,
133 window: &W,
134 config: WgpuSurfaceConfig,
135 ) -> anyhow::Result<Self> {
136 let window_handle = window
137 .window_handle()
138 .map_err(|e| anyhow::anyhow!("Failed to get window handle: {e}"))?;
139 let display_handle = window
140 .display_handle()
141 .map_err(|e| anyhow::anyhow!("Failed to get display handle: {e}"))?;
…lines 142–163 unchanged (22 lines)
164
165 let context = match gpu_context {
166 Some(context) => {
167 context.check_compatible_with_surface(&surface)?;
168 context
169 }
170 None => gpu_context.insert(WgpuContext::new(instance, &surface)?),
171 };
172
173 Self::new_with_surface(context, surface, config)
174 }
175
176 #[cfg(target_family = "wasm")]
…lines 177–182 unchanged (6 lines)
183 .instance
184 .create_surface(wgpu::SurfaceTarget::Canvas(canvas.clone()))
185 .map_err(|e| anyhow::anyhow!("Failed to create surface: {e}"))?;
186 Self::new_with_surface(context, surface, config)
187 }
188
189 pub fn new_with_surface(
190 context: &WgpuContext,
191 surface: wgpu::Surface<'static>,
192 config: WgpuSurfaceConfig,
193 ) -> anyhow::Result<Self> {
194 let surface_caps = surface.get_capabilities(&context.adapter);
195 let preferred_formats = [
196 wgpu::TextureFormat::Bgra8Unorm,
197 wgpu::TextureFormat::Rgba8Unorm,
198 ];
199 let surface_format = preferred_formats
…lines 200–262 unchanged (63 lines)
263 height: clamped_height.max(1),
264 present_mode: wgpu::PresentMode::Fifo,
265 desired_maximum_frame_latency: 2,
266 alpha_mode,
267 view_formats: vec![],
268 };
269 surface.configure(&context.device, &surface_config);
270
271 let queue = Arc::clone(&context.queue);
272 let dual_source_blending = context.supports_dual_source_blending();
273
274 let rendering_params = RenderingParameters::new(&context.adapter, surface_format);
275 let bind_group_layouts = Self::create_bind_group_layouts(&device);
…lines 276–362 unchanged (87 lines)
363
364 Ok(Self {
365 device,
366 queue,
367 surface,
368 surface_config,
369 pipelines,
370 bind_group_layouts,
371 atlas,
372 atlas_sampler,
373 globals_buffer,
374 path_globals_offset,
375 gamma_offset,
…lines 376–853 unchanged (478 lines)
854 if let Some(ref texture) = self.path_msaa_texture {
855 texture.destroy();
856 }
857
858 self.surface_config.width = clamped_width.max(1);
859 self.surface_config.height = clamped_height.max(1);
860 self.surface.configure(&self.device, &self.surface_config);
861
862 // Invalidate intermediate textures - they will be lazily recreated
863 // in draw() after we confirm the surface is healthy. This avoids
864 // panics when the device/surface is in an invalid state during resize.
865 self.path_intermediate_texture = None;
866 self.path_intermediate_view = None;
…lines 867–904 unchanged (38 lines)
905 } else {
906 self.opaque_alpha_mode
907 };
908
909 if new_alpha_mode != self.surface_config.alpha_mode {
910 self.surface_config.alpha_mode = new_alpha_mode;
911 self.surface.configure(&self.device, &self.surface_config);
912 self.pipelines = Self::create_pipelines(
913 &self.device,
914 &self.bind_group_layouts,
915 self.surface_config.format,
916 self.surface_config.alpha_mode,
917 self.rendering_params.path_sample_count,
…lines 918–951 unchanged (34 lines)
952 pub fn draw(&mut self, scene: &Scene) {
953 self.atlas.before_frame();
954
955 let frame = match self.surface.get_current_texture() {
956 Ok(frame) => frame,
957 Err(wgpu::SurfaceError::Lost | wgpu::SurfaceError::Outdated) => {
958 self.surface.configure(&self.device, &self.surface_config);
959 return;
960 }
961 Err(e) => {
962 log::error!("Failed to acquire surface texture: {e}");
963 return;
964 }
…lines 965–1530 unchanged (566 lines)

After

1#[cfg(not(target_family = "wasm"))]
2use crate::CompositorGpuHint;
3use crate::{WgpuAtlas, WgpuContext};
4use bytemuck::{Pod, Zeroable};
5use gpui::{
6 AtlasTextureId, Background, Bounds, DevicePixels, GpuSpecs, MonochromeSprite, Path, Point,
7 PolychromeSprite, PrimitiveBatch, Quad, ScaledPixels, Scene, Shadow, Size, SubpixelSprite,
8 Underline, get_gamma_correction_ratios,
…lines 9–94 unchanged (86 lines)
95
96pub struct WgpuRenderer {
97 device: Arc<wgpu::Device>,
98 queue: Arc<wgpu::Queue>,
99 surface: wgpu::Surface<'static>,
100 surface_config: wgpu::SurfaceConfiguration,
101 surface_configured: bool,
102 pipelines: WgpuPipelines,
103 bind_group_layouts: WgpuBindGroupLayouts,
104 atlas: Arc<WgpuAtlas>,
105 atlas_sampler: wgpu::Sampler,
106 globals_buffer: wgpu::Buffer,
107 path_globals_offset: u64,
…lines 108–131 unchanged (24 lines)
132 /// of the returned renderer.
133 #[cfg(not(target_family = "wasm"))]
134 pub fn new<W: HasWindowHandle + HasDisplayHandle>(
135 gpu_context: &mut Option<WgpuContext>,
136 window: &W,
137 config: WgpuSurfaceConfig,
138 compositor_gpu: Option<CompositorGpuHint>,
139 ) -> anyhow::Result<Self> {
140 let window_handle = window
141 .window_handle()
142 .map_err(|e| anyhow::anyhow!("Failed to get window handle: {e}"))?;
143 let display_handle = window
144 .display_handle()
…lines 145–167 unchanged (23 lines)
168
169 let context = match gpu_context {
170 Some(context) => {
171 context.check_compatible_with_surface(&surface)?;
172 context
173 }
174 None => gpu_context.insert(WgpuContext::new(instance, &surface, compositor_gpu)?),
175 };
176
177 Self::new_with_surface(context, surface, config)
178 }
179
180 #[cfg(target_family = "wasm")]
…lines 181–185 unchanged (5 lines)
186 let surface = context
187 .instance
188 .create_surface(wgpu::SurfaceTarget::Canvas(canvas.clone()))
189 .map_err(|e| anyhow::anyhow!("Failed to create surface: {e}"))?;
190 Self::new_with_surface(context, surface, config)
191 }
192
193 fn new_with_surface(
194 context: &WgpuContext,
195 surface: wgpu::Surface<'static>,
196 config: WgpuSurfaceConfig,
197 ) -> anyhow::Result<Self> {
198 let surface_caps = surface.get_capabilities(&context.adapter);
199 let preferred_formats = [
200 wgpu::TextureFormat::Bgra8Unorm,
201 wgpu::TextureFormat::Rgba8Unorm,
202 ];
203 let surface_format = preferred_formats
…lines 204–266 unchanged (63 lines)
267 height: clamped_height.max(1),
268 present_mode: wgpu::PresentMode::Fifo,
269 desired_maximum_frame_latency: 2,
270 alpha_mode,
271 view_formats: vec![],
272 };
273 // Configure the surface immediately. The adapter selection process already validated
274 // that this adapter can successfully configure this surface.
275 surface.configure(&context.device, &surface_config);
276
277 let queue = Arc::clone(&context.queue);
278 let dual_source_blending = context.supports_dual_source_blending();
279
280 let rendering_params = RenderingParameters::new(&context.adapter, surface_format);
…lines 281–368 unchanged (88 lines)
369
370 Ok(Self {
371 device,
372 queue,
373 surface,
374 surface_config,
375 surface_configured: true,
376 pipelines,
377 bind_group_layouts,
378 atlas,
379 atlas_sampler,
380 globals_buffer,
381 path_globals_offset,
…lines 382–860 unchanged (479 lines)
861 if let Some(ref texture) = self.path_msaa_texture {
862 texture.destroy();
863 }
864
865 self.surface_config.width = clamped_width.max(1);
866 self.surface_config.height = clamped_height.max(1);
867 if self.surface_configured {
868 self.surface.configure(&self.device, &self.surface_config);
869 }
870
871 // Invalidate intermediate textures - they will be lazily recreated
872 // in draw() after we confirm the surface is healthy. This avoids
873 // panics when the device/surface is in an invalid state during resize.
874 self.path_intermediate_texture = None;
875 self.path_intermediate_view = None;
…lines 876–913 unchanged (38 lines)
914 } else {
915 self.opaque_alpha_mode
916 };
917
918 if new_alpha_mode != self.surface_config.alpha_mode {
919 self.surface_config.alpha_mode = new_alpha_mode;
920 if self.surface_configured {
921 self.surface.configure(&self.device, &self.surface_config);
922 }
923 self.pipelines = Self::create_pipelines(
924 &self.device,
925 &self.bind_group_layouts,
926 self.surface_config.format,
927 self.surface_config.alpha_mode,
928 self.rendering_params.path_sample_count,
…lines 929–962 unchanged (34 lines)
963 pub fn draw(&mut self, scene: &Scene) {
964 self.atlas.before_frame();
965
966 let frame = match self.surface.get_current_texture() {
967 Ok(frame) => frame,
968 Err(wgpu::SurfaceError::Lost | wgpu::SurfaceError::Outdated) => {
969 self.surface_configured = false;
970 return;
971 }
972 Err(e) => {
973 log::error!("Failed to acquire surface texture: {e}");
974 return;
975 }
…lines 976–1541 unchanged (566 lines)

Before

source_file
use_declaration
use "use"
scoped_use_list
crate "crate"
:: "::"
use_list
{ "{"
identifier "WgpuAtlas"
, ","
identifier "WgpuContext"
} "}"
; ";"
use_declaration
use "use"
scoped_use_list
identifier "bytemuck"
:: "::"
use_list
{ "{"
identifier "Pod"
, ","
identifier "Zeroable"
} "}"
; ";"
use_declaration (+45 nodes collapsed)
use_declaration
use "use"
scoped_identifier
identifier "log"
:: "::"
identifier "warn"
; ";"
attribute_item
# "#"
[ "["
attribute
identifier "cfg"
token_tree
( "("
identifier "not"
token_tree
( "("
identifier "target_family"
= "="
string_literal
" "\""
string_content "wasm"
" "\""
) ")"
) ")"
] "]"
use_declaration
use "use"
scoped_use_list
identifier "raw_window_handle"
:: "::"
use_list
{ "{"
identifier "HasDisplayHandle"
, ","
identifier "HasWindowHandle"
} "}"
; ";"
use_declaration
use "use"
scoped_identifier
scoped_identifier
identifier "std"
:: "::"
identifier "num"
:: "::"
identifier "NonZeroU64"
; ";"
use_declaration
use "use"
scoped_identifier
scoped_identifier
identifier "std"
:: "::"
identifier "sync"
:: "::"
identifier "Arc"
; ";"
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Copy"
, ","
identifier "Pod"
, ","
identifier "Zeroable"
) ")"
] "]"
struct_item (+26 nodes collapsed)
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Copy"
, ","
identifier "Pod"
, ","
identifier "Zeroable"
) ")"
] "]"
struct_item (+26 nodes collapsed)
impl_item (+99 nodes collapsed)
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Copy"
, ","
identifier "Pod"
, ","
identifier "Zeroable"
) ")"
] "]"
struct_item
struct "struct"
type_identifier "SurfaceParams"
field_declaration_list
{ "{"
field_declaration
field_identifier "bounds"
: ":"
type_identifier "PodBounds"
, ","
field_declaration
field_identifier "content_mask"
: ":"
type_identifier "PodBounds"
, ","
} "}"
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Copy"
, ","
identifier "Pod"
, ","
identifier "Zeroable"
) ")"
] "]"
struct_item (+36 nodes collapsed)
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Debug"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
struct_item
struct "struct"
type_identifier "PathSprite"
field_declaration_list
{ "{"
field_declaration
field_identifier "bounds"
: ":"
generic_type
type_identifier "Bounds"
type_arguments
< "<"
type_identifier "ScaledPixels"
> ">"
, ","
} "}"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Debug"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
struct_item (+41 nodes collapsed)
struct_item (+27 nodes collapsed)
struct_item (+93 nodes collapsed)
struct_item (+38 nodes collapsed)
struct_item
visibility_modifier
pub "pub"
struct "struct"
type_identifier "WgpuRenderer"
field_declaration_list
{ "{"
field_declaration
field_identifier "device"
: ":"
generic_type
type_identifier "Arc"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Device"
> ">"
, ","
field_declaration
field_identifier "queue"
: ":"
generic_type
type_identifier "Arc"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Queue"
> ">"
, ","
field_declaration
field_identifier "surface"
: ":"
generic_type
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Surface"
type_arguments
< "<"
lifetime
' "'"
identifier "static"
> ">"
, ","
field_declaration
field_identifier "surface_config"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "SurfaceConfiguration"
, ","
field_declaration
field_identifier "pipelines"
: ":"
type_identifier "WgpuPipelines"
, ","
field_declaration
field_identifier "bind_group_layouts"
: ":"
type_identifier "WgpuBindGroupLayouts"
, ","
field_declaration
field_identifier "atlas"
: ":"
generic_type
type_identifier "Arc"
type_arguments
< "<"
type_identifier "WgpuAtlas"
> ">"
, ","
field_declaration
field_identifier "atlas_sampler"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Sampler"
, ","
field_declaration
field_identifier "globals_buffer"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Buffer"
, ","
field_declaration
field_identifier "path_globals_offset"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "gamma_offset"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "globals_bind_group"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "BindGroup"
, ","
field_declaration
field_identifier "path_globals_bind_group"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "BindGroup"
, ","
field_declaration
field_identifier "instance_buffer"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Buffer"
, ","
field_declaration
field_identifier "instance_buffer_capacity"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "max_buffer_size"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "storage_buffer_alignment"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "path_intermediate_texture"
: ":"
generic_type
type_identifier "Option"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Texture"
> ">"
, ","
field_declaration
field_identifier "path_intermediate_view"
: ":"
generic_type
type_identifier "Option"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "TextureView"
> ">"
, ","
field_declaration
field_identifier "path_msaa_texture"
: ":"
generic_type
type_identifier "Option"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Texture"
> ">"
, ","
field_declaration
field_identifier "path_msaa_view"
: ":"
generic_type
type_identifier "Option"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "TextureView"
> ">"
, ","
field_declaration
field_identifier "rendering_params"
: ":"
type_identifier "RenderingParameters"
, ","
field_declaration
field_identifier "dual_source_blending"
: ":"
primitive_type "bool"
, ","
field_declaration
field_identifier "adapter_info"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "AdapterInfo"
, ","
field_declaration
field_identifier "transparent_alpha_mode"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "CompositeAlphaMode"
, ","
field_declaration
field_identifier "opaque_alpha_mode"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "CompositeAlphaMode"
, ","
field_declaration
field_identifier "max_texture_size"
: ":"
primitive_type "u32"
, ","
} "}"
impl_item
impl "impl"
type_identifier "WgpuRenderer"
declaration_list
{ "{"
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment " Creates a new WgpuRenderer from raw window handles.\n"
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment "\n"
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment " # Safety\n"
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment " The caller must ensure that the window handle remains valid"...
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment " of the returned renderer.\n"
attribute_item
# "#"
[ "["
attribute
identifier "cfg"
token_tree
( "("
identifier "not"
token_tree
( "("
identifier "target_family"
= "="
string_literal
" "\""
string_content "wasm"
" "\""
) ")"
) ")"
] "]"
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "new"
type_parameters
< "<"
type_parameter
type_identifier "W"
trait_bounds
: ":"
type_identifier "HasWindowHandle"
+ "+"
type_identifier "HasDisplayHandle"
> ">"
parameters
( "("
parameter
identifier "gpu_context"
: ":"
reference_type
& "&"
mutable_specifier "mut"
generic_type
type_identifier "Option"
type_arguments
< "<"
type_identifier "WgpuContext"
> ">"
, ","
parameter
identifier "window"
: ":"
reference_type
& "&"
type_identifier "W"
, ","
parameter
identifier "config"
: ":"
type_identifier "WgpuSurfaceConfig"
, ","
) ")"
-> "->"
generic_type
scoped_type_identifier
identifier "anyhow"
:: "::"
type_identifier "Result"
type_arguments
< "<"
type_identifier "Self"
> ">"
block
{ "{"
let_declaration (+40 nodes collapsed)
let_declaration (+40 nodes collapsed)
let_declaration (+40 nodes collapsed)
line_comment
// "//"
line_comment
// "//"
line_comment
// "//"
let_declaration (+47 nodes collapsed)
line_comment
// "//"
line_comment
// "//"
line_comment
// "//"
let_declaration (+46 nodes collapsed)
let_declaration
let "let"
identifier "context"
= "="
match_expression
match "match"
identifier "gpu_context"
match_block
{ "{"
match_arm (+27 nodes collapsed)
match_arm
match_pattern
identifier "None"
=> "=>"
call_expression
field_expression
identifier "gpu_context"
. "."
field_identifier "insert"
arguments
( "("
try_expression
call_expression
scoped_identifier
identifier "WgpuContext"
:: "::"
identifier "new"
arguments
( "("
identifier "instance"
, ","
reference_expression
& "&"
identifier "surface"
) ")"
? "?"
) ")"
, ","
} "}"
; ";"
call_expression
scoped_identifier
identifier "Self"
:: "::"
identifier "new_with_surface"
arguments
( "("
identifier "context"
, ","
identifier "surface"
, ","
identifier "config"
) ")"
} "}"
attribute_item
# "#"
[ "["
attribute
identifier "cfg"
token_tree
( "("
identifier "target_family"
= "="
string_literal
" "\""
string_content "wasm"
" "\""
) ")"
] "]"
function_item (+118 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "new_with_surface"
parameters (+30 nodes collapsed)
-> "->"
generic_type
scoped_type_identifier
identifier "anyhow"
:: "::"
type_identifier "Result"
type_arguments
< "<"
type_identifier "Self"
> ">"
block
{ "{"
let_declaration
let "let"
identifier "surface_caps"
= "="
call_expression
field_expression
identifier "surface"
. "."
field_identifier "get_capabilities"
arguments
( "("
reference_expression
& "&"
field_expression
identifier "context"
. "."
field_identifier "adapter"
) ")"
; ";"
let_declaration (+24 nodes collapsed)
let_declaration (+164 nodes collapsed)
let_declaration (+143 nodes collapsed)
let_declaration (+33 nodes collapsed)
let_declaration (+33 nodes collapsed)
let_declaration (+21 nodes collapsed)
let_declaration
let "let"
identifier "device"
= "="
call_expression
scoped_identifier
identifier "Arc"
:: "::"
identifier "clone"
arguments
( "("
reference_expression
& "&"
field_expression
identifier "context"
. "."
field_identifier "device"
) ")"
; ";"
let_declaration
let "let"
identifier "max_texture_size"
= "="
field_expression
call_expression
field_expression
identifier "device"
. "."
field_identifier "limits"
arguments
( "("
) ")"
. "."
field_identifier "max_texture_dimension_2d"
; ";"
let_declaration
let "let"
identifier "requested_width"
= "="
type_cast_expression
field_expression
field_expression
field_expression
identifier "config"
. "."
field_identifier "size"
. "."
field_identifier "width"
. "."
integer_literal "0"
as "as"
primitive_type "u32"
; ";"
let_declaration
let "let"
identifier "requested_height"
= "="
type_cast_expression
field_expression
field_expression
field_expression
identifier "config"
. "."
field_identifier "size"
. "."
field_identifier "height"
. "."
integer_literal "0"
as "as"
primitive_type "u32"
; ";"
let_declaration
let "let"
identifier "clamped_width"
= "="
call_expression
field_expression
identifier "requested_width"
. "."
field_identifier "min"
arguments
( "("
identifier "max_texture_size"
) ")"
; ";"
let_declaration
let "let"
identifier "clamped_height"
= "="
call_expression
field_expression
identifier "requested_height"
. "."
field_identifier "min"
arguments
( "("
identifier "max_texture_size"
) ")"
; ";"
expression_statement (+40 nodes collapsed)
let_declaration (+84 nodes collapsed)
expression_statement
call_expression
field_expression
identifier "surface"
. "."
field_identifier "configure"
arguments
( "("
reference_expression
& "&"
field_expression
identifier "context"
. "."
field_identifier "device"
, ","
reference_expression
& "&"
identifier "surface_config"
) ")"
; ";"
let_declaration
let "let"
identifier "queue"
= "="
call_expression
scoped_identifier
identifier "Arc"
:: "::"
identifier "clone"
arguments
( "("
reference_expression
& "&"
field_expression
identifier "context"
. "."
field_identifier "queue"
) ")"
; ";"
let_declaration
let "let"
identifier "dual_source_blending"
= "="
call_expression
field_expression
identifier "context"
. "."
field_identifier "supports_dual_source_blending"
arguments
( "("
) ")"
; ";"
let_declaration (+21 nodes collapsed)
let_declaration
let "let"
identifier "bind_group_layouts"
= "="
call_expression
scoped_identifier
identifier "Self"
:: "::"
identifier "create_bind_group_layouts"
arguments
( "("
reference_expression
& "&"
identifier "device"
) ")"
; ";"
let_declaration (+32 nodes collapsed)
let_declaration (+44 nodes collapsed)
let_declaration (+68 nodes collapsed)
let_declaration
let "let"
identifier "uniform_alignment"
= "="
type_cast_expression
field_expression
call_expression
field_expression
identifier "device"
. "."
field_identifier "limits"
arguments
( "("
) ")"
. "."
field_identifier "min_uniform_buffer_offset_alignment"
as "as"
primitive_type "u64"
; ";"
let_declaration (+25 nodes collapsed)
let_declaration (+25 nodes collapsed)
let_declaration
let "let"
identifier "path_globals_offset"
= "="
call_expression
field_expression
identifier "globals_size"
. "."
field_identifier "next_multiple_of"
arguments
( "("
identifier "uniform_alignment"
) ")"
; ";"
let_declaration
let "let"
identifier "gamma_offset"
= "="
call_expression
field_expression
parenthesized_expression
( "("
binary_expression
identifier "path_globals_offset"
+ "+"
identifier "globals_size"
) ")"
. "."
field_identifier "next_multiple_of"
arguments
( "("
identifier "uniform_alignment"
) ")"
; ";"
let_declaration (+70 nodes collapsed)
let_declaration
let "let"
identifier "max_buffer_size"
= "="
field_expression
call_expression
field_expression
identifier "device"
. "."
field_identifier "limits"
arguments
( "("
) ")"
. "."
field_identifier "max_buffer_size"
; ";"
let_declaration
let "let"
identifier "storage_buffer_alignment"
= "="
type_cast_expression
field_expression
call_expression
field_expression
identifier "device"
. "."
field_identifier "limits"
arguments
( "("
) ")"
. "."
field_identifier "min_storage_buffer_offset_alignment"
as "as"
primitive_type "u64"
; ";"
let_declaration
let "let"
identifier "initial_instance_buffer_capacity"
= "="
binary_expression
binary_expression
integer_literal "2"
* "*"
integer_literal "1024"
* "*"
integer_literal "1024"
; ";"
let_declaration (+67 nodes collapsed)
let_declaration (+203 nodes collapsed)
let_declaration (+203 nodes collapsed)
let_declaration
let "let"
identifier "adapter_info"
= "="
call_expression
field_expression
field_expression
identifier "context"
. "."
field_identifier "adapter"
. "."
field_identifier "get_info"
arguments
( "("
) ")"
; ";"
call_expression
identifier "Ok"
arguments
( "("
struct_expression
type_identifier "Self"
field_initializer_list
{ "{"
shorthand_field_initializer
identifier "device"
, ","
shorthand_field_initializer
identifier "queue"
, ","
shorthand_field_initializer
identifier "surface"
, ","
shorthand_field_initializer
identifier "surface_config"
, ","
shorthand_field_initializer
identifier "pipelines"
, ","
shorthand_field_initializer
identifier "bind_group_layouts"
, ","
shorthand_field_initializer
identifier "atlas"
, ","
shorthand_field_initializer
identifier "atlas_sampler"
, ","
shorthand_field_initializer
identifier "globals_buffer"
, ","
shorthand_field_initializer
identifier "path_globals_offset"
, ","
shorthand_field_initializer
identifier "gamma_offset"
, ","
shorthand_field_initializer
identifier "globals_bind_group"
, ","
shorthand_field_initializer
identifier "path_globals_bind_group"
, ","
shorthand_field_initializer
identifier "instance_buffer"
, ","
field_initializer
field_identifier "instance_buffer_capacity"
: ":"
identifier "initial_instance_buffer_capacity"
, ","
shorthand_field_initializer
identifier "max_buffer_size"
, ","
shorthand_field_initializer
identifier "storage_buffer_alignment"
, ","
line_comment
// "//"
line_comment
// "//"
field_initializer
field_identifier "path_intermediate_texture"
: ":"
identifier "None"
, ","
field_initializer
field_identifier "path_intermediate_view"
: ":"
identifier "None"
, ","
field_initializer
field_identifier "path_msaa_texture"
: ":"
identifier "None"
, ","
field_initializer
field_identifier "path_msaa_view"
: ":"
identifier "None"
, ","
shorthand_field_initializer
identifier "rendering_params"
, ","
shorthand_field_initializer
identifier "dual_source_blending"
, ","
shorthand_field_initializer
identifier "adapter_info"
, ","
shorthand_field_initializer
identifier "transparent_alpha_mode"
, ","
shorthand_field_initializer
identifier "opaque_alpha_mode"
, ","
shorthand_field_initializer
identifier "max_texture_size"
, ","
} "}"
) ")"
} "}"
function_item (+948 nodes collapsed)
function_item (+1715 nodes collapsed)
function_item (+214 nodes collapsed)
function_item (+233 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "update_drawable_size"
parameters
( "("
self_parameter
& "&"
mutable_specifier "mut"
self "self"
, ","
parameter
identifier "size"
: ":"
generic_type
type_identifier "Size"
type_arguments
< "<"
type_identifier "DevicePixels"
> ">"
) ")"
block
{ "{"
let_declaration
let "let"
identifier "width"
= "="
type_cast_expression
field_expression
field_expression
identifier "size"
. "."
field_identifier "width"
. "."
integer_literal "0"
as "as"
primitive_type "u32"
; ";"
let_declaration
let "let"
identifier "height"
= "="
type_cast_expression
field_expression
field_expression
identifier "size"
. "."
field_identifier "height"
. "."
integer_literal "0"
as "as"
primitive_type "u32"
; ";"
expression_statement
if_expression
if "if"
binary_expression (+22 nodes collapsed)
block
{ "{"
let_declaration
let "let"
identifier "clamped_width"
= "="
call_expression
field_expression
identifier "width"
. "."
field_identifier "min"
arguments
( "("
field_expression
self "self"
. "."
field_identifier "max_texture_size"
) ")"
; ";"
let_declaration
let "let"
identifier "clamped_height"
= "="
call_expression
field_expression
identifier "height"
. "."
field_identifier "min"
arguments
( "("
field_expression
self "self"
. "."
field_identifier "max_texture_size"
) ")"
; ";"
expression_statement (+42 nodes collapsed)
line_comment
// "//"
expression_statement (+58 nodes collapsed)
line_comment
// "//"
expression_statement (+30 nodes collapsed)
expression_statement (+30 nodes collapsed)
expression_statement
assignment_expression
field_expression
field_expression
self "self"
. "."
field_identifier "surface_config"
. "."
field_identifier "width"
= "="
call_expression
field_expression
identifier "clamped_width"
. "."
field_identifier "max"
arguments
( "("
integer_literal "1"
) ")"
; ";"
expression_statement
assignment_expression
field_expression
field_expression
self "self"
. "."
field_identifier "surface_config"
. "."
field_identifier "height"
= "="
call_expression
field_expression
identifier "clamped_height"
. "."
field_identifier "max"
arguments
( "("
integer_literal "1"
) ")"
; ";"
expression_statement
call_expression (+24 nodes collapsed)
; ";"
line_comment
// "//"
line_comment
// "//"
line_comment
// "//"
expression_statement
assignment_expression
field_expression
self "self"
. "."
field_identifier "path_intermediate_texture"
= "="
identifier "None"
; ";"
expression_statement
assignment_expression
field_expression
self "self"
. "."
field_identifier "path_intermediate_view"
= "="
identifier "None"
; ";"
expression_statement
assignment_expression
field_expression
self "self"
. "."
field_identifier "path_msaa_texture"
= "="
identifier "None"
; ";"
expression_statement
assignment_expression
field_expression
self "self"
. "."
field_identifier "path_msaa_view"
= "="
identifier "None"
; ";"
} "}"
} "}"
function_item (+251 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "update_transparency"
parameters
( "("
self_parameter
& "&"
mutable_specifier "mut"
self "self"
, ","
parameter
identifier "transparent"
: ":"
primitive_type "bool"
) ")"
block
{ "{"
let_declaration (+24 nodes collapsed)
expression_statement
if_expression
if "if"
binary_expression
identifier "new_alpha_mode"
!= "!="
field_expression
field_expression
self "self"
. "."
field_identifier "surface_config"
. "."
field_identifier "alpha_mode"
block
{ "{"
expression_statement
assignment_expression
field_expression
field_expression
self "self"
. "."
field_identifier "surface_config"
. "."
field_identifier "alpha_mode"
= "="
identifier "new_alpha_mode"
; ";"
expression_statement
call_expression (+24 nodes collapsed)
; ";"
expression_statement (+59 nodes collapsed)
} "}"
} "}"
attribute_item
# "#"
[ "["
attribute
identifier "allow"
token_tree
( "("
identifier "dead_code"
) ")"
] "]"
function_item (+64 nodes collapsed)
function_item (+29 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "supports_dual_source_blending"
parameters
( "("
self_parameter
& "&"
self "self"
) ")"
-> "->"
primitive_type "bool"
block
{ "{"
field_expression
self "self"
. "."
field_identifier "dual_source_blending"
} "}"
function_item (+95 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "max_texture_size"
parameters
( "("
self_parameter
& "&"
self "self"
) ")"
-> "->"
primitive_type "u32"
block
{ "{"
field_expression
self "self"
. "."
field_identifier "max_texture_size"
} "}"
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "draw"
parameters
( "("
self_parameter
& "&"
mutable_specifier "mut"
self "self"
, ","
parameter
identifier "scene"
: ":"
reference_type
& "&"
type_identifier "Scene"
) ")"
block
{ "{"
expression_statement
call_expression
field_expression
field_expression
self "self"
. "."
field_identifier "atlas"
. "."
field_identifier "before_frame"
arguments
( "("
) ")"
; ";"
let_declaration
let "let"
identifier "frame"
= "="
match_expression
match "match"
call_expression
field_expression
field_expression
self "self"
. "."
field_identifier "surface"
. "."
field_identifier "get_current_texture"
arguments
( "("
) ")"
match_block
{ "{"
match_arm
match_pattern
tuple_struct_pattern
identifier "Ok"
( "("
identifier "frame"
) ")"
=> "=>"
identifier "frame"
, ","
match_arm
match_pattern (+21 nodes collapsed)
=> "=>"
block
{ "{"
expression_statement
call_expression
field_expression
field_expression
self "self"
. "."
field_identifier "surface"
. "."
field_identifier "configure"
arguments
( "("
reference_expression
& "&"
field_expression
self "self"
. "."
field_identifier "device"
, ","
reference_expression
& "&"
field_expression
self "self"
. "."
field_identifier "surface_config"
) ")"
; ";"
expression_statement
return_expression
return "return"
; ";"
} "}"
match_arm (+30 nodes collapsed)
} "}"
; ";"
line_comment
// "//"
expression_statement
call_expression
field_expression
self "self"
. "."
field_identifier "ensure_intermediate_textures"
arguments
( "("
) ")"
; ";"
let_declaration (+29 nodes collapsed)
let_declaration (+53 nodes collapsed)
let_declaration (+76 nodes collapsed)
let_declaration
let "let"
identifier "path_globals"
= "="
struct_expression
type_identifier "GlobalParams"
field_initializer_list
{ "{"
field_initializer
field_identifier "premultiplied_alpha"
: ":"
integer_literal "0"
, ","
base_field_initializer
.. ".."
identifier "globals"
} "}"
; ";"
expression_statement (+33 nodes collapsed)
expression_statement (+37 nodes collapsed)
expression_statement (+37 nodes collapsed)
expression_statement (+897 nodes collapsed)
} "}"
function_item (+106 nodes collapsed)
function_item (+106 nodes collapsed)
function_item (+106 nodes collapsed)
function_item (+135 nodes collapsed)
function_item (+162 nodes collapsed)
function_item (+135 nodes collapsed)
function_item (+275 nodes collapsed)
function_item (+351 nodes collapsed)
function_item (+77 nodes collapsed)
function_item (+334 nodes collapsed)
function_item (+627 nodes collapsed)
function_item (+138 nodes collapsed)
function_item (+177 nodes collapsed)
function_item (+76 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "destroy"
parameters
( "("
self_parameter
& "&"
mutable_specifier "mut"
self "self"
) ")"
block
{ "{"
line_comment
// "//"
} "}"
} "}"
struct_item (+31 nodes collapsed)
impl_item (+340 nodes collapsed)

After

source_file
attribute_item
# "#"
[ "["
attribute
identifier "cfg"
token_tree
( "("
identifier "not"
token_tree
( "("
identifier "target_family"
= "="
string_literal
" "\""
string_content "wasm"
" "\""
) ")"
) ")"
] "]"
use_declaration
use "use"
scoped_identifier
crate "crate"
:: "::"
identifier "CompositorGpuHint"
; ";"
use_declaration
use "use"
scoped_use_list
crate "crate"
:: "::"
use_list
{ "{"
identifier "WgpuAtlas"
, ","
identifier "WgpuContext"
} "}"
; ";"
use_declaration
use "use"
scoped_use_list
identifier "bytemuck"
:: "::"
use_list
{ "{"
identifier "Pod"
, ","
identifier "Zeroable"
} "}"
; ";"
use_declaration (+45 nodes collapsed)
use_declaration
use "use"
scoped_identifier
identifier "log"
:: "::"
identifier "warn"
; ";"
attribute_item
# "#"
[ "["
attribute
identifier "cfg"
token_tree
( "("
identifier "not"
token_tree
( "("
identifier "target_family"
= "="
string_literal
" "\""
string_content "wasm"
" "\""
) ")"
) ")"
] "]"
use_declaration
use "use"
scoped_use_list
identifier "raw_window_handle"
:: "::"
use_list
{ "{"
identifier "HasDisplayHandle"
, ","
identifier "HasWindowHandle"
} "}"
; ";"
use_declaration
use "use"
scoped_identifier
scoped_identifier
identifier "std"
:: "::"
identifier "num"
:: "::"
identifier "NonZeroU64"
; ";"
use_declaration
use "use"
scoped_identifier
scoped_identifier
identifier "std"
:: "::"
identifier "sync"
:: "::"
identifier "Arc"
; ";"
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Copy"
, ","
identifier "Pod"
, ","
identifier "Zeroable"
) ")"
] "]"
struct_item (+26 nodes collapsed)
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Copy"
, ","
identifier "Pod"
, ","
identifier "Zeroable"
) ")"
] "]"
struct_item (+26 nodes collapsed)
impl_item (+99 nodes collapsed)
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Copy"
, ","
identifier "Pod"
, ","
identifier "Zeroable"
) ")"
] "]"
struct_item
struct "struct"
type_identifier "SurfaceParams"
field_declaration_list
{ "{"
field_declaration
field_identifier "bounds"
: ":"
type_identifier "PodBounds"
, ","
field_declaration
field_identifier "content_mask"
: ":"
type_identifier "PodBounds"
, ","
} "}"
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Copy"
, ","
identifier "Pod"
, ","
identifier "Zeroable"
) ")"
] "]"
struct_item (+36 nodes collapsed)
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Debug"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
struct_item
struct "struct"
type_identifier "PathSprite"
field_declaration_list
{ "{"
field_declaration
field_identifier "bounds"
: ":"
generic_type
type_identifier "Bounds"
type_arguments
< "<"
type_identifier "ScaledPixels"
> ">"
, ","
} "}"
attribute_item
# "#"
[ "["
attribute
identifier "derive"
token_tree
( "("
identifier "Clone"
, ","
identifier "Debug"
) ")"
] "]"
attribute_item
# "#"
[ "["
attribute
identifier "repr"
token_tree
( "("
identifier "C"
) ")"
] "]"
struct_item (+41 nodes collapsed)
struct_item (+27 nodes collapsed)
struct_item (+93 nodes collapsed)
struct_item (+38 nodes collapsed)
struct_item
visibility_modifier
pub "pub"
struct "struct"
type_identifier "WgpuRenderer"
field_declaration_list
{ "{"
field_declaration
field_identifier "device"
: ":"
generic_type
type_identifier "Arc"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Device"
> ">"
, ","
field_declaration
field_identifier "queue"
: ":"
generic_type
type_identifier "Arc"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Queue"
> ">"
, ","
field_declaration
field_identifier "surface"
: ":"
generic_type
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Surface"
type_arguments
< "<"
lifetime
' "'"
identifier "static"
> ">"
, ","
field_declaration
field_identifier "surface_config"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "SurfaceConfiguration"
, ","
field_declaration
field_identifier "surface_configured"
: ":"
primitive_type "bool"
, ","
field_declaration
field_identifier "pipelines"
: ":"
type_identifier "WgpuPipelines"
, ","
field_declaration
field_identifier "bind_group_layouts"
: ":"
type_identifier "WgpuBindGroupLayouts"
, ","
field_declaration
field_identifier "atlas"
: ":"
generic_type
type_identifier "Arc"
type_arguments
< "<"
type_identifier "WgpuAtlas"
> ">"
, ","
field_declaration
field_identifier "atlas_sampler"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Sampler"
, ","
field_declaration
field_identifier "globals_buffer"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Buffer"
, ","
field_declaration
field_identifier "path_globals_offset"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "gamma_offset"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "globals_bind_group"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "BindGroup"
, ","
field_declaration
field_identifier "path_globals_bind_group"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "BindGroup"
, ","
field_declaration
field_identifier "instance_buffer"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Buffer"
, ","
field_declaration
field_identifier "instance_buffer_capacity"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "max_buffer_size"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "storage_buffer_alignment"
: ":"
primitive_type "u64"
, ","
field_declaration
field_identifier "path_intermediate_texture"
: ":"
generic_type
type_identifier "Option"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Texture"
> ">"
, ","
field_declaration
field_identifier "path_intermediate_view"
: ":"
generic_type
type_identifier "Option"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "TextureView"
> ">"
, ","
field_declaration
field_identifier "path_msaa_texture"
: ":"
generic_type
type_identifier "Option"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "Texture"
> ">"
, ","
field_declaration
field_identifier "path_msaa_view"
: ":"
generic_type
type_identifier "Option"
type_arguments
< "<"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "TextureView"
> ">"
, ","
field_declaration
field_identifier "rendering_params"
: ":"
type_identifier "RenderingParameters"
, ","
field_declaration
field_identifier "dual_source_blending"
: ":"
primitive_type "bool"
, ","
field_declaration
field_identifier "adapter_info"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "AdapterInfo"
, ","
field_declaration
field_identifier "transparent_alpha_mode"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "CompositeAlphaMode"
, ","
field_declaration
field_identifier "opaque_alpha_mode"
: ":"
scoped_type_identifier
identifier "wgpu"
:: "::"
type_identifier "CompositeAlphaMode"
, ","
field_declaration
field_identifier "max_texture_size"
: ":"
primitive_type "u32"
, ","
} "}"
impl_item
impl "impl"
type_identifier "WgpuRenderer"
declaration_list
{ "{"
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment " Creates a new WgpuRenderer from raw window handles.\n"
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment "\n"
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment " # Safety\n"
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment " The caller must ensure that the window handle remains valid"...
line_comment
// "//"
outer_doc_comment_marker
/ "/"
doc_comment " of the returned renderer.\n"
attribute_item
# "#"
[ "["
attribute
identifier "cfg"
token_tree
( "("
identifier "not"
token_tree
( "("
identifier "target_family"
= "="
string_literal
" "\""
string_content "wasm"
" "\""
) ")"
) ")"
] "]"
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "new"
type_parameters
< "<"
type_parameter
type_identifier "W"
trait_bounds
: ":"
type_identifier "HasWindowHandle"
+ "+"
type_identifier "HasDisplayHandle"
> ">"
parameters
( "("
parameter
identifier "gpu_context"
: ":"
reference_type
& "&"
mutable_specifier "mut"
generic_type
type_identifier "Option"
type_arguments
< "<"
type_identifier "WgpuContext"
> ">"
, ","
parameter
identifier "window"
: ":"
reference_type
& "&"
type_identifier "W"
, ","
parameter
identifier "config"
: ":"
type_identifier "WgpuSurfaceConfig"
, ","
parameter
identifier "compositor_gpu"
: ":"
generic_type
type_identifier "Option"
type_arguments
< "<"
type_identifier "CompositorGpuHint"
> ">"
, ","
) ")"
-> "->"
generic_type
scoped_type_identifier
identifier "anyhow"
:: "::"
type_identifier "Result"
type_arguments
< "<"
type_identifier "Self"
> ">"
block
{ "{"
let_declaration (+40 nodes collapsed)
let_declaration (+40 nodes collapsed)
let_declaration (+40 nodes collapsed)
line_comment
// "//"
line_comment
// "//"
line_comment
// "//"
let_declaration (+47 nodes collapsed)
line_comment
// "//"
line_comment
// "//"
line_comment
// "//"
let_declaration (+46 nodes collapsed)
let_declaration
let "let"
identifier "context"
= "="
match_expression
match "match"
identifier "gpu_context"
match_block
{ "{"
match_arm (+27 nodes collapsed)
match_arm
match_pattern
identifier "None"
=> "=>"
call_expression
field_expression
identifier "gpu_context"
. "."
field_identifier "insert"
arguments
( "("
try_expression
call_expression
scoped_identifier
identifier "WgpuContext"
:: "::"
identifier "new"
arguments
( "("
identifier "instance"
, ","
reference_expression
& "&"
identifier "surface"
, ","
identifier "compositor_gpu"
) ")"
? "?"
) ")"
, ","
} "}"
; ";"
call_expression
scoped_identifier
identifier "Self"
:: "::"
identifier "new_with_surface"
arguments
( "("
identifier "context"
, ","
identifier "surface"
, ","
identifier "config"
) ")"
} "}"
attribute_item
# "#"
[ "["
attribute
identifier "cfg"
token_tree
( "("
identifier "target_family"
= "="
string_literal
" "\""
string_content "wasm"
" "\""
) ")"
] "]"
function_item (+118 nodes collapsed)
function_item
fn "fn"
identifier "new_with_surface"
parameters (+30 nodes collapsed)
-> "->"
generic_type
scoped_type_identifier
identifier "anyhow"
:: "::"
type_identifier "Result"
type_arguments
< "<"
type_identifier "Self"
> ">"
block
{ "{"
let_declaration
let "let"
identifier "surface_caps"
= "="
call_expression
field_expression
identifier "surface"
. "."
field_identifier "get_capabilities"
arguments
( "("
reference_expression
& "&"
field_expression
identifier "context"
. "."
field_identifier "adapter"
) ")"
; ";"
let_declaration (+24 nodes collapsed)
let_declaration (+164 nodes collapsed)
let_declaration (+143 nodes collapsed)
let_declaration (+33 nodes collapsed)
let_declaration (+33 nodes collapsed)
let_declaration (+21 nodes collapsed)
let_declaration
let "let"
identifier "device"
= "="
call_expression
scoped_identifier
identifier "Arc"
:: "::"
identifier "clone"
arguments
( "("
reference_expression
& "&"
field_expression
identifier "context"
. "."
field_identifier "device"
) ")"
; ";"
let_declaration
let "let"
identifier "max_texture_size"
= "="
field_expression
call_expression
field_expression
identifier "device"
. "."
field_identifier "limits"
arguments
( "("
) ")"
. "."
field_identifier "max_texture_dimension_2d"
; ";"
let_declaration
let "let"
identifier "requested_width"
= "="
type_cast_expression
field_expression
field_expression
field_expression
identifier "config"
. "."
field_identifier "size"
. "."
field_identifier "width"
. "."
integer_literal "0"
as "as"
primitive_type "u32"
; ";"
let_declaration
let "let"
identifier "requested_height"
= "="
type_cast_expression
field_expression
field_expression
field_expression
identifier "config"
. "."
field_identifier "size"
. "."
field_identifier "height"
. "."
integer_literal "0"
as "as"
primitive_type "u32"
; ";"
let_declaration
let "let"
identifier "clamped_width"
= "="
call_expression
field_expression
identifier "requested_width"
. "."
field_identifier "min"
arguments
( "("
identifier "max_texture_size"
) ")"
; ";"
let_declaration
let "let"
identifier "clamped_height"
= "="
call_expression
field_expression
identifier "requested_height"
. "."
field_identifier "min"
arguments
( "("
identifier "max_texture_size"
) ")"
; ";"
expression_statement (+40 nodes collapsed)
let_declaration (+84 nodes collapsed)
line_comment
// "//"
line_comment
// "//"
expression_statement
call_expression
field_expression
identifier "surface"
. "."
field_identifier "configure"
arguments
( "("
reference_expression
& "&"
field_expression
identifier "context"
. "."
field_identifier "device"
, ","
reference_expression
& "&"
identifier "surface_config"
) ")"
; ";"
let_declaration
let "let"
identifier "queue"
= "="
call_expression
scoped_identifier
identifier "Arc"
:: "::"
identifier "clone"
arguments
( "("
reference_expression
& "&"
field_expression
identifier "context"
. "."
field_identifier "queue"
) ")"
; ";"
let_declaration
let "let"
identifier "dual_source_blending"
= "="
call_expression
field_expression
identifier "context"
. "."
field_identifier "supports_dual_source_blending"
arguments
( "("
) ")"
; ";"
let_declaration (+21 nodes collapsed)
let_declaration
let "let"
identifier "bind_group_layouts"
= "="
call_expression
scoped_identifier
identifier "Self"
:: "::"
identifier "create_bind_group_layouts"
arguments
( "("
reference_expression
& "&"
identifier "device"
) ")"
; ";"
let_declaration (+32 nodes collapsed)
let_declaration (+44 nodes collapsed)
let_declaration (+68 nodes collapsed)
let_declaration
let "let"
identifier "uniform_alignment"
= "="
type_cast_expression
field_expression
call_expression
field_expression
identifier "device"
. "."
field_identifier "limits"
arguments
( "("
) ")"
. "."
field_identifier "min_uniform_buffer_offset_alignment"
as "as"
primitive_type "u64"
; ";"
let_declaration (+25 nodes collapsed)
let_declaration (+25 nodes collapsed)
let_declaration
let "let"
identifier "path_globals_offset"
= "="
call_expression
field_expression
identifier "globals_size"
. "."
field_identifier "next_multiple_of"
arguments
( "("
identifier "uniform_alignment"
) ")"
; ";"
let_declaration
let "let"
identifier "gamma_offset"
= "="
call_expression
field_expression
parenthesized_expression
( "("
binary_expression
identifier "path_globals_offset"
+ "+"
identifier "globals_size"
) ")"
. "."
field_identifier "next_multiple_of"
arguments
( "("
identifier "uniform_alignment"
) ")"
; ";"
let_declaration (+70 nodes collapsed)
let_declaration
let "let"
identifier "max_buffer_size"
= "="
field_expression
call_expression
field_expression
identifier "device"
. "."
field_identifier "limits"
arguments
( "("
) ")"
. "."
field_identifier "max_buffer_size"
; ";"
let_declaration
let "let"
identifier "storage_buffer_alignment"
= "="
type_cast_expression
field_expression
call_expression
field_expression
identifier "device"
. "."
field_identifier "limits"
arguments
( "("
) ")"
. "."
field_identifier "min_storage_buffer_offset_alignment"
as "as"
primitive_type "u64"
; ";"
let_declaration
let "let"
identifier "initial_instance_buffer_capacity"
= "="
binary_expression
binary_expression
integer_literal "2"
* "*"
integer_literal "1024"
* "*"
integer_literal "1024"
; ";"
let_declaration (+67 nodes collapsed)
let_declaration (+203 nodes collapsed)
let_declaration (+203 nodes collapsed)
let_declaration
let "let"
identifier "adapter_info"
= "="
call_expression
field_expression
field_expression
identifier "context"
. "."
field_identifier "adapter"
. "."
field_identifier "get_info"
arguments
( "("
) ")"
; ";"
call_expression
identifier "Ok"
arguments
( "("
struct_expression
type_identifier "Self"
field_initializer_list
{ "{"
shorthand_field_initializer
identifier "device"
, ","
shorthand_field_initializer
identifier "queue"
, ","
shorthand_field_initializer
identifier "surface"
, ","
shorthand_field_initializer
identifier "surface_config"
, ","
field_initializer
field_identifier "surface_configured"
: ":"
boolean_literal
true "true"
, ","
shorthand_field_initializer
identifier "pipelines"
, ","
shorthand_field_initializer
identifier "bind_group_layouts"
, ","
shorthand_field_initializer
identifier "atlas"
, ","
shorthand_field_initializer
identifier "atlas_sampler"
, ","
shorthand_field_initializer
identifier "globals_buffer"
, ","
shorthand_field_initializer
identifier "path_globals_offset"
, ","
shorthand_field_initializer
identifier "gamma_offset"
, ","
shorthand_field_initializer
identifier "globals_bind_group"
, ","
shorthand_field_initializer
identifier "path_globals_bind_group"
, ","
shorthand_field_initializer
identifier "instance_buffer"
, ","
field_initializer
field_identifier "instance_buffer_capacity"
: ":"
identifier "initial_instance_buffer_capacity"
, ","
shorthand_field_initializer
identifier "max_buffer_size"
, ","
shorthand_field_initializer
identifier "storage_buffer_alignment"
, ","
line_comment
// "//"
line_comment
// "//"
field_initializer
field_identifier "path_intermediate_texture"
: ":"
identifier "None"
, ","
field_initializer
field_identifier "path_intermediate_view"
: ":"
identifier "None"
, ","
field_initializer
field_identifier "path_msaa_texture"
: ":"
identifier "None"
, ","
field_initializer
field_identifier "path_msaa_view"
: ":"
identifier "None"
, ","
shorthand_field_initializer
identifier "rendering_params"
, ","
shorthand_field_initializer
identifier "dual_source_blending"
, ","
shorthand_field_initializer
identifier "adapter_info"
, ","
shorthand_field_initializer
identifier "transparent_alpha_mode"
, ","
shorthand_field_initializer
identifier "opaque_alpha_mode"
, ","
shorthand_field_initializer
identifier "max_texture_size"
, ","
} "}"
) ")"
} "}"
function_item (+948 nodes collapsed)
function_item (+1715 nodes collapsed)
function_item (+214 nodes collapsed)
function_item (+233 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "update_drawable_size"
parameters
( "("
self_parameter
& "&"
mutable_specifier "mut"
self "self"
, ","
parameter
identifier "size"
: ":"
generic_type
type_identifier "Size"
type_arguments
< "<"
type_identifier "DevicePixels"
> ">"
) ")"
block
{ "{"
let_declaration
let "let"
identifier "width"
= "="
type_cast_expression
field_expression
field_expression
identifier "size"
. "."
field_identifier "width"
. "."
integer_literal "0"
as "as"
primitive_type "u32"
; ";"
let_declaration
let "let"
identifier "height"
= "="
type_cast_expression
field_expression
field_expression
identifier "size"
. "."
field_identifier "height"
. "."
integer_literal "0"
as "as"
primitive_type "u32"
; ";"
expression_statement
if_expression
if "if"
binary_expression (+22 nodes collapsed)
block
{ "{"
let_declaration
let "let"
identifier "clamped_width"
= "="
call_expression
field_expression
identifier "width"
. "."
field_identifier "min"
arguments
( "("
field_expression
self "self"
. "."
field_identifier "max_texture_size"
) ")"
; ";"
let_declaration
let "let"
identifier "clamped_height"
= "="
call_expression
field_expression
identifier "height"
. "."
field_identifier "min"
arguments
( "("
field_expression
self "self"
. "."
field_identifier "max_texture_size"
) ")"
; ";"
expression_statement (+42 nodes collapsed)
line_comment
// "//"
expression_statement (+58 nodes collapsed)
line_comment
// "//"
expression_statement (+30 nodes collapsed)
expression_statement (+30 nodes collapsed)
expression_statement
assignment_expression
field_expression
field_expression
self "self"
. "."
field_identifier "surface_config"
. "."
field_identifier "width"
= "="
call_expression
field_expression
identifier "clamped_width"
. "."
field_identifier "max"
arguments
( "("
integer_literal "1"
) ")"
; ";"
expression_statement
assignment_expression
field_expression
field_expression
self "self"
. "."
field_identifier "surface_config"
. "."
field_identifier "height"
= "="
call_expression
field_expression
identifier "clamped_height"
. "."
field_identifier "max"
arguments
( "("
integer_literal "1"
) ")"
; ";"
expression_statement
if_expression
if "if"
field_expression
self "self"
. "."
field_identifier "surface_configured"
block
{ "{"
expression_statement
call_expression (+24 nodes collapsed)
; ";"
} "}"
line_comment
// "//"
line_comment
// "//"
line_comment
// "//"
expression_statement
assignment_expression
field_expression
self "self"
. "."
field_identifier "path_intermediate_texture"
= "="
identifier "None"
; ";"
expression_statement
assignment_expression
field_expression
self "self"
. "."
field_identifier "path_intermediate_view"
= "="
identifier "None"
; ";"
expression_statement
assignment_expression
field_expression
self "self"
. "."
field_identifier "path_msaa_texture"
= "="
identifier "None"
; ";"
expression_statement
assignment_expression
field_expression
self "self"
. "."
field_identifier "path_msaa_view"
= "="
identifier "None"
; ";"
} "}"
} "}"
function_item (+251 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "update_transparency"
parameters
( "("
self_parameter
& "&"
mutable_specifier "mut"
self "self"
, ","
parameter
identifier "transparent"
: ":"
primitive_type "bool"
) ")"
block
{ "{"
let_declaration (+24 nodes collapsed)
expression_statement
if_expression
if "if"
binary_expression
identifier "new_alpha_mode"
!= "!="
field_expression
field_expression
self "self"
. "."
field_identifier "surface_config"
. "."
field_identifier "alpha_mode"
block
{ "{"
expression_statement
assignment_expression
field_expression
field_expression
self "self"
. "."
field_identifier "surface_config"
. "."
field_identifier "alpha_mode"
= "="
identifier "new_alpha_mode"
; ";"
expression_statement
if_expression
if "if"
field_expression
self "self"
. "."
field_identifier "surface_configured"
block
{ "{"
expression_statement
call_expression (+24 nodes collapsed)
; ";"
} "}"
expression_statement (+59 nodes collapsed)
} "}"
} "}"
attribute_item
# "#"
[ "["
attribute
identifier "allow"
token_tree
( "("
identifier "dead_code"
) ")"
] "]"
function_item (+64 nodes collapsed)
function_item (+29 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "supports_dual_source_blending"
parameters
( "("
self_parameter
& "&"
self "self"
) ")"
-> "->"
primitive_type "bool"
block
{ "{"
field_expression
self "self"
. "."
field_identifier "dual_source_blending"
} "}"
function_item (+95 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "max_texture_size"
parameters
( "("
self_parameter
& "&"
self "self"
) ")"
-> "->"
primitive_type "u32"
block
{ "{"
field_expression
self "self"
. "."
field_identifier "max_texture_size"
} "}"
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "draw"
parameters
( "("
self_parameter
& "&"
mutable_specifier "mut"
self "self"
, ","
parameter
identifier "scene"
: ":"
reference_type
& "&"
type_identifier "Scene"
) ")"
block
{ "{"
expression_statement
call_expression
field_expression
field_expression
self "self"
. "."
field_identifier "atlas"
. "."
field_identifier "before_frame"
arguments
( "("
) ")"
; ";"
let_declaration
let "let"
identifier "frame"
= "="
match_expression
match "match"
call_expression
field_expression
field_expression
self "self"
. "."
field_identifier "surface"
. "."
field_identifier "get_current_texture"
arguments
( "("
) ")"
match_block
{ "{"
match_arm
match_pattern
tuple_struct_pattern
identifier "Ok"
( "("
identifier "frame"
) ")"
=> "=>"
identifier "frame"
, ","
match_arm
match_pattern (+21 nodes collapsed)
=> "=>"
block
{ "{"
expression_statement
assignment_expression
field_expression
self "self"
. "."
field_identifier "surface_configured"
= "="
boolean_literal
false "false"
; ";"
expression_statement
return_expression
return "return"
; ";"
} "}"
match_arm (+30 nodes collapsed)
} "}"
; ";"
line_comment
// "//"
expression_statement
call_expression
field_expression
self "self"
. "."
field_identifier "ensure_intermediate_textures"
arguments
( "("
) ")"
; ";"
let_declaration (+29 nodes collapsed)
let_declaration (+53 nodes collapsed)
let_declaration (+76 nodes collapsed)
let_declaration
let "let"
identifier "path_globals"
= "="
struct_expression
type_identifier "GlobalParams"
field_initializer_list
{ "{"
field_initializer
field_identifier "premultiplied_alpha"
: ":"
integer_literal "0"
, ","
base_field_initializer
.. ".."
identifier "globals"
} "}"
; ";"
expression_statement (+33 nodes collapsed)
expression_statement (+37 nodes collapsed)
expression_statement (+37 nodes collapsed)
expression_statement (+897 nodes collapsed)
} "}"
function_item (+106 nodes collapsed)
function_item (+106 nodes collapsed)
function_item (+106 nodes collapsed)
function_item (+135 nodes collapsed)
function_item (+162 nodes collapsed)
function_item (+135 nodes collapsed)
function_item (+275 nodes collapsed)
function_item (+351 nodes collapsed)
function_item (+77 nodes collapsed)
function_item (+334 nodes collapsed)
function_item (+627 nodes collapsed)
function_item (+138 nodes collapsed)
function_item (+177 nodes collapsed)
function_item (+76 nodes collapsed)
function_item
visibility_modifier
pub "pub"
fn "fn"
identifier "destroy"
parameters
( "("
self_parameter
& "&"
mutable_specifier "mut"
self "self"
) ")"
block
{ "{"
line_comment
// "//"
} "}"
} "}"
struct_item (+31 nodes collapsed)
impl_item (+340 nodes collapsed)