message: enable msaa ctor for canvas
diff: @@ -6,13 +6,13 @@ use crate::Context;
  pub struct Canvas<'a> {
  pass: wgpu::RenderPass<'a>,
  target: &'a Image,
  - resolve: Option<Image>,
  + resolve: Option<&'a Image>,
  }
  impl<'a> Canvas<'a> {
  - /// Create a new Canvas from an image. This will allow for drawing to a single color image.
  + /// Create a new [Canvas] from an image. This will allow for drawing to a single color image.
  ///
  - /// The image must be created for Canvas usage, i.e. [Image::new_canvas_image], or [ScreenImage].
  + /// The image must be created for Canvas usage, i.e. [Image::new_canvas_image], or [ScreenImage], and must only have a sample count of 1.
  pub fn from_image(ctx: &'a mut Context, load_op: CanvasLoadOp, image: &'a Image) -> Self {
  assert!(image.samples() == 1);
  @@ -39,25 +39,21 @@ impl<'a> Canvas<'a> {
  }
  }
  - /* pub fn from_msaa(
  + /// Create a new [Canvas] from an MSAA image and a resolve target. This will allow for drawing with MSAA to a color image, then resolving the samples into a secondary target.
  + ///
  + /// Both images must be created for Canvas usage (see [Canvas::from_image]). `msaa_image` must have a sample count > 1 and `resolve_image` must strictly have a sample count of 1.
  + pub fn from_msaa(
  ctx: &'a mut Context,
  load_op: CanvasLoadOp,
  - msaa_image: Image,
  - resolve_image: Image,
  + msaa_image: &'a Image,
  + resolve_image: &'a Image,
  ) -> Self {
  assert!(msaa_image.samples() > 1);
  assert!(resolve_image.samples() == 1);
  - let mut cmd = ctx
  - .gfx_context
  - .fcx
  - .as_mut()
  - .unwrap()
  - .cmd
  - .take()
  - .expect("another canvas is already in progress");
  -
  - let pass = cmd.begin_render_pass(&wgpu::RenderPassDescriptor {
  + Canvas {
  + pass: ctx.gfx_context.fcx.as_mut().unwrap().cmd.begin_render_pass(
  + &wgpu::RenderPassDescriptor {
  label: None,
  color_attachments: &[wgpu::RenderPassColorAttachment {
  view: msaa_image.view.as_ref(),
  @@ -71,16 +67,12 @@ impl<'a> Canvas<'a> {
  },
  }],
  depth_stencil_attachment: None,
  - });
  -
  - Canvas {
  - cmd,
  - ctx,
  - pass,
  + },
  + ),
  target: msaa_image,
  resolve: Some(resolve_image),
  }
  - } */
  + }
  }
  pub enum CanvasLoadOp {
  