use super::*;
impl WebGpuContext {
pub fn surface_extension_set_surface_size(
&mut self,
_width: usize,
_height: usize,
) -> GResult<()> {
let surface = self.surface.as_ref().unwrap();
let window = window().unwrap();
let device_pixel_ratio = window.device_pixel_ratio();
let device_pixel_ratio = if device_pixel_ratio == 0.0 {
1.0
} else {
device_pixel_ratio
};
let width = (surface.canvas.client_width() as f64 * device_pixel_ratio) as usize;
let height = (surface.canvas.client_height() as f64 * device_pixel_ratio) as usize;
surface.canvas.set_width(width as u32);
surface.canvas.set_height(height as u32);
for attachment_image in self.attachment_images.iter_mut() {
attachment_image.recreate_with_new_size(&self.device, width, height);
}
let e = unsafe { &mut *(self as *mut WebGpuContext) };
for program in self.programs.iter_mut() {
program.recreate_bind_groups(e)?;
}
for pass_idx in 0..self.compiled_passes.len() {
let pass = &mut self.compiled_passes[pass_idx];
pass.original_pass.render_width = width;
pass.original_pass.render_height = height;
let pass = &self.compiled_passes[pass_idx];
let new_pass =
WebGpuCompiledPass::new(self, &pass.original_pass, Some(pass.ext.clone()))?;
let pass = &mut self.compiled_passes[pass_idx];
*pass = new_pass;
}
Ok(())
}
}