#graphics #winit #gl


Software-rendered surface for winit

5 releases

0.1.4 Jan 24, 2020
0.1.3 Jan 24, 2020
0.1.2 Aug 28, 2019
0.1.1 Aug 27, 2019
0.1.0 Aug 27, 2019

#563 in Graphics APIs


1.5K SLoC



This crate provides a software-rendered surface for winit.

The goal of this crate is to provide a minimal drawing functionality for every platform supported by winit even if the drawing APIs that we usually assume are available, such as OpenGL¹, aren't available in the target environment. This crate is also useful as a fallback when they are available, but failed due to an unrecoverable error.

¹ “Servo on Windows in VirtualBox gets 'NoAvailablePixelFormat'” servo/servo #9468

To this end, this crate is designed to panic only when preconditions are not met or under very pathologic circumstances that would cause winit to panic.

Unimplemented features

  • Partial update - The application can redraw a portion, but swsurface always sends entire the windowfor now
  • Support for platforms other than: macOS, Windows, X11, Wayland
  • X11: Support for color depths other than 24
  • X11: Transparency
  • Multi-threaded rendering (Send-able Surface)
  • Color management - we'll try to stick to sRGB for now

License: MIT/Apache-2.0


~71K SLoC