Skip to content

Releases: rust-windowing/glutin

Glutin Version v0.30.6

12 Feb 13:43
v0.30.6
910c8a2
Compare
Choose a tag to compare
  • Fixed handling of *_base extensions with EGL.

Glutin Version v0.30.5

11 Feb 19:48
v0.30.5
154ee0c
Compare
Choose a tag to compare
  • Fixed EGL/GLX display initialization when the provided raw-window-handle has an unknown visual_id.
  • Fixed EGL always returning None for x11_visual().
  • Fixed GLX error handling assuming that XError's will arrive like they should on X11.
  • Fixed EGL window/pixmap creation when using legacy path.

Glutin Version v0.30.4

07 Feb 16:34
v0.30.4
6e88995
Compare
Choose a tag to compare
  • Fixed EGL display initialization with XcbDisplayHandle.
  • Fixed EGL/GLX Surface::width returning the height instead of the width.
  • On GLX, fixed handling of errors not directly requested by glutin.
  • Added GlConfig::hardware_accelerated to check if the config is hardware accelerated.
  • Added GlContext::context_api to get the ContextApi used by the context.
  • Added missing implementations of Surface::{width,height} for WGL/CGL
  • Fixed crash when accessing context from the off-thread on macOS.
  • Clarified that make_{,not}_current(), GlSurface::width(), GlSurface::height(), and GlSurface::resize() could block on macOS.

Glutin Version v0.30.3

08 Dec 11:07
v0.30.3
f0d907c
Compare
Choose a tag to compare
  • Fixed wrong amount of rects committed in Surface::swap_buffers_with_damage with EGL.
  • Added missing Eq, PartialEq, and Hash impls for surface::Rect.

Glutin Version v0.30.2

26 Nov 23:02
v0.30.2
b4d54f9
Compare
Choose a tag to compare
  • Fixed robust context creation with EGL.
  • Moved to stable version of wayland-sys.
  • Allow offline renderers with CGL.
  • Fixed an error when compiling the EGL backend with only one of Wayland and X11 enabled.

Glutin Version v0.30.1

12 Nov 07:11
v0.30.1
3891ed3
Compare
Choose a tag to compare
  • Added new glutin-winit crate to help bootstrapping new glutin with winit.
  • Added EGLDevice wrappers for EGL.
  • Added EGL dependent api to make a context current without a surface.
  • Added supports_transparency on GlConfig.
  • On GLX, try all extensions when setting vsync.
  • On WGL, fixed that Surface::swap_buffers takes longer with every call caused by frequent calls of the win32 function HDC GetDC(HWND hWnd).

Glutin Version v0.30.0

26 Oct 16:00
v0.30.0
06045c7
Compare
Choose a tag to compare

The glutin was rewritten from the ground to solve its previous design pitfalls. If this rewrite is a surprise to you, it was on the radar for a long time before @kchibisov started seriously maintaining this crate. Previously there was an attempt to do so by @goddessfreya in https://github.com/rust-windowing/glutin/tree/v0.23_reworks , but unfortunately she disappeared and we can only hope that she is alright. While her code wasn't complete the comments about some edge cases were very helpful and saved a lot of time.

To outline some major issues glutin had and that were solved:

  • The maintenance was hard, since the code was a bag of glue around winit and GL shenanigans.
  • Very hard to use with anything other than winit.
  • MT safety was wrong and it was causing issues on Wayland(EGL in general), since some stuff ended up Send + Sync while it shouldn't due to other platfroms.
  • Impossible for specialized use, like EGL only features.
  • Configuration picking is a mess due to building everything at once(Display, Config, Surface, and Context) leading to complex fallback behavior downsteam.
  • etc.

The glutin 0.30.0 is more low-level now and its core concepts are now around Display, Config, Context, and Surface, using raw window handle for window related config creation and display creation.
Each platform EGL, GLX, WGL, and CGL could be used on their own and every backend/platform are optional.

For an example of bootstrapping and working with the new glutin we strongly advise to look at the example.

Unfortunately, not every platform was ported to glutin 0.30.0. The ios, surfaceless, and os-mesa platforms were removed due to
the lack of maintenance, however if there's a desire and maintainer for such platforms we'd warmly welcome them and guide through the code.

More formal changelog:

  • This version of glutin has been rewritten from the ground and no longer depends on winit, the raw-window-handle is now used instead of it.
  • The Api is now built around Display, Surface, Config, and Surface. For more info see crate documentation and examples.
  • Breaking: Bump MSRV from 1.57 to 1.60.
  • The ios support was removed for the lack of maintainance for now. In case there's a need for it, contributions are welcome.
  • The context creation is no longer limited to winit's supported platforms.
  • The underlying Api providers are publically exposed now, so glutin could be used with just e.g. EGL.
  • Fixed soundness issues with Surface MT safety, since before EGLSurface could be sent to a different thread, which is not safe.
  • Fallback to Surface::swap_buffers when Surface::swap_buffers_with_damage is not supported on EGL.
  • iOS, os-mesa, and surfaceless platforms were removed.

Glutin Version v0.30.0-beta.3

23 Oct 12:56
v0.30.0-beta.3
b49b72c
Compare
Choose a tag to compare
Pre-release
  • Config doesn't force OpenGL Api by default.
  • Display::create_context now uses the most recent available Api from the Config when ContextApi is not specified in ContextAttributes.
  • Breaking: PossiblyCurrentGlContext::get_proc_address method was moved to GlDisplay::get_proc_address.
  • Breaking: ConfigTemplateBuilder::with_sample_buffers now called ConfigTemplateBuilder::with_multisampling.
  • Breaking: GlConfig::sample_buffers now called GlConfig::num_samples and returns the amount of samples in multisample buffer.
  • Breaking: Bump MSRV from 1.57 to 1.60.
  • Fix GlProfile::Core requesting without explicit version.
  • Pick the latest available profile on macOS.
  • When using ContextApi::Gles(None) in ContextAttributesBuilder the latest known supported major ES version will be picked.
  • Fix Eq implementation for Config on CGL.
  • Add GetDisplayExtensions trait to obtain api display extensions implemented on EGL, WGL, and GLX.
  • Fallback to Surface::swap_buffers when Surface::swap_buffers_with_damage is not supported on EGL.
  • Add missing GetGlConfig implementation for NotCurrentContext and PossiblyCurrentContext.
  • Implement Clone for builders.
  • Breaking: move DamageRect into surface::Rect.
  • Add GlDisplay::version_string to help with logging the display information.
  • Rename NotCurrentGlContext::treat_as_current to NotCurrentGlContext::treat_as_possibly_current.
  • Rename Display::from_raw to Display::new.
  • Added GlDisplay::supported_features to allow checking for extensions support beforehand.
  • Breaking: renamed ReleaseBehaviour to ReleaseBehavior.
  • Fix GLX not working with nvidia binary drivers.
  • Fix crash in glx::surface::Surface::set_swap_interval.

Glutin Version v0.30.0-beta.2

03 Sep 18:21
v0.30.0-beta.2
e903a35
Compare
Choose a tag to compare
Pre-release
  • macOS: Fix memory leak in Surface.

Glutin Version v0.30.0-beta.1

03 Sep 14:56
v0.30.0-beta.1
0e37613
Compare
Choose a tag to compare
Pre-release
  • Replace winit dependency with raw-window-handle.
  • The Api is now built around Display, Surface, Config, and Surface for more info see crate documentation and examples.
  • The ios support was removed for the lack of maintainance for now. In case there's a need for it, contributions are welcome.
  • The context creation is no longer limited to winit's supported platforms.
  • The underlying Api providers are publically exposed now, so glutin could be used with just e.g. EGL.
  • Fixed soundness issues with Surface MT safety, since before EGLSurface could be sent to a different thread, which is not safe.