glutin
Cross-platform OpenGL context provider.
0.32.3
30M downloads/mo
#1665 most downloaded on crates.io
rust-windowing/glutin
What this package is like to depend on
Last release 1 years ago
30 Apr 2025
Ships fairly regularly
a new release about every 2 months
Some releases are documented
notes for 44 of 123 stable releases
5 versions withdrawn
withdrawn after publishing
12 years old
139 releases · first in 2014
0 releases in the last 12 months
see the full history below
Release timeline
139 releases · Dec 2014 to Apr 2025Releases
latest 60 of 139-
0.32.330 Apr 2025 -
0.32.212 Jan 2025Release notes
Open source →- Added
PossiblyCurrentContext::make_not_current_in_place(&self)for whenSendcapability ofNotCurrentContextis not required. - Added
NotCurrentContext::make_current_surfaceless(self)and
PossiblyCurrentContext::make_current_surfaceless(&self)in theCgl
implementation to allow the use of surfaceless contexts on MacOS. - Added
NotCurrentContext::make_current_surfaceless(self)and
PossiblyCurrentContext::make_current_surfaceless(&self)in theGlx
implementation to allow the use of surfaceless contexts with GLX. - Added
NotCurrentContext::make_current_surfaceless(self)and
PossiblyCurrentContext::make_current_surfaceless(&self)in theWgl
implementation to allow the use of surfaceless contexts with WGL. - Added workaround for EGL drivers reporting
EGL_KHR_platform_gbmwithout EGL 1.5 client. - Added
GlContext::priority/ContextAttributesBuilder::with_priorityto get/set context priority.
Release notes
Open source →- Added
PossiblyCurrentContext::make_not_current_in_place(&self)for whenSendcapability ofNotCurrentContextis not required. - Added
NotCurrentContext::make_current_surfaceless(self)andPossiblyCurrentContext::make_current_surfaceless(&self)in theCglimplementation to allow the use of surfaceless contexts on MacOS. - Added
NotCurrentContext::make_current_surfaceless(self)andPossiblyCurrentContext::make_current_surfaceless(&self)in theGlximplementation to allow the use of surfaceless contexts with GLX. - Added
NotCurrentContext::make_current_surfaceless(self)andPossiblyCurrentContext::make_current_surfaceless(&self)in theWglimplementation to allow the use of surfaceless contexts with WGL. - Added workaround for EGL drivers reporting
EGL_KHR_platform_gbmwithout EGL 1.5 client. - Added
GlContext::priority/ContextAttributesBuilder::with_priorityto get/set context priority.
- Added
-
0.32.111 Sep 2024Release notes
Open source →- Fixed EGL's
Device::query_devices()being too strict about required extensions. - Fixed crash in
EglGetProcAddresson Win32-x86 platform due to wrong calling convention. - Fixed EGL's
Display::device()always returning an error due to invalid pointer-argument passing inside. - Fixed EGL's
Display::new()making anEGLDisplay::Khrwhen the EGL version for the display is 1.4 or lower. - Added
Device::drm_device_node_path()andDevice::drm_render_device_node_path()getters to EGL viaEGL_EXT_device_drm. - Added support for
DrmDisplayHandlein EGL'sDisplay::with_device()usingEGL_DRM_MASTER_FD_EXTfromEGL_EXT_device_drm. - Properly set up OpenGL-specific stuff on the
NSView, instead of relying on Winit to do it.
Release notes
Open source →- Fixed EGL's
Device::query_devices()being too strict about required extensions. - Fixed crash in
EglGetProcAddresson Win32-x86 platform due to wrong calling convention. - Fixed EGL's
Display::device()always returning an error due to invalid pointer-argument passing inside. - Fixed EGL's
Display::new()making anEGLDisplay::Khrwhen the EGL version for the display is 1.4 or lower. - Added
Device::drm_device_node_path()andDevice::drm_render_device_node_path()getters to EGL viaEGL_EXT_device_drm. - Added support for
DrmDisplayHandlein EGL'sDisplay::with_device()usingEGL_DRM_MASTER_FD_EXTfromEGL_EXT_device_drm. - Properly set up OpenGL-specific stuff on the
NSView, instead of relying on Winit to do it. - Added
OpenHarmonyplatform support with EGL. - Added support for
Display::create_pbuffer_surface()in WGL viaWGL_ARB_pbuffer.
- Fixed EGL's
-
0.32.008 Jun 2024Release notes
Open source →- Breaking: updated
raw-window-handledependency to0.6. - Bump MSRV from
1.65to1.70. - Bump
windows-sysfrom0.48.0to0.52.0. - Expose
EglandGlxraw API functions onEglandGlxdisplays. - Add
GLUTIN_WGL_OPENGL_DLLenvironment variable to change OpenGL provider name with WGL.
Release notes
Open source →- Breaking: updated
raw-window-handledependency to0.6. - Bump MSRV from
1.65to1.70. - Bump
windows-sysfrom0.48.0to0.52.0. - Expose
EglandGlxraw API functions onEglandGlxdisplays. - Add
GLUTIN_WGL_OPENGL_DLLenvironment variable to change OpenGL provider name with WGL.
- Breaking: updated
-
0.31.312 Feb 2024Release notes
Open source →- Change
Surfaceto beSend. This makes it consistent with the context, so now they are bothSendbut notSync.
Release notes
Open source →- Change
Surfaceto beSend. This makes it consistent with the context, so now they are bothSendbut notSync.
- Change
-
0.31.222 Dec 2023Release notes
Open source →- Fixed EGL not setting context version with EGL versions before 1.5 and missing context ext.
Release notes
Open source →- Fixed EGL not setting context version with EGL versions before 1.5 and missing context ext.
-
0.31.129 Oct 2023 -
0.31.021 Oct 2023Release notes
Open source →- Bump MSRV from
1.60to1.65. - Breaking:
bitflagswhich is used as a part of public API was updated to2.0. - Breaking:
.*SurfaceAccessortraits got removed; their methods now on respective.*GlContexttraits instead. - Breaking:
GlContexttrait is now a part of theprelude. - Automatically cleanup the
EGLDisplaywhenEGL_KHR_display_referenceis present. - Add
api::egl::Display::terminateto terminate the display when glutin doesn't manage it. - Fixed handling of
Robustness::NoErroranddebugattribute when building context. Robustness::NoErrornot being properly enabled with GLX/WGL.
Release notes
Open source →- Bump MSRV from
1.60to1.65. - Breaking:
bitflagswhich is used as a part of public API was updated to2.0. - Breaking:
.*SurfaceAccessortraits got removed; their methods now on respective.*GlContexttraits instead. - Breaking:
GlContexttrait is now a part of theprelude. - Automatically cleanup the
EGLDisplaywhenEGL_KHR_display_referenceis present. - Add
api::egl::Display::terminateto terminate the display when glutin doesn't manage it. - Fixed handling of
Robustness::NoErroranddebugattribute when building context. Robustness::NoErrornot being properly enabled with GLX/WGL.
- Bump MSRV from
-
0.30.1006 Aug 2023Release notes
Open source →- Add
X11VisualInfo::visual_idto getXIDof the visual. - Added support for EGL on Windows using Angle. This assumes libEGL.dll/libGLESv2.dll present.
- EGL's
Display::create_pbuffer_surface()no longer sets the invalidRENDER_BUFFERattribute.
- Add
-
0.30.916 Jun 2023Release notes
Open source →- Fixed lock on SwapBuffers with some GLX drivers.
- Fixed EGL's
Surface::is_single_bufferedbeing inversed.
-
0.30.814 May 2023Release notes
Open source →- Fixed EGL dereferencing raw window handles on everything but X11 in legacy
WindowandPixmapsurface creation. - On GLX, fixed startup failure when passing default
FlushwithKHR_context_flush_control. - Behavior change: the
Config'sApinow has platform specific default instead of being unspecified.
- Fixed EGL dereferencing raw window handles on everything but X11 in legacy
-
0.30.716 Mar 2023 -
0.30.612 Feb 2023 -
0.30.511 Feb 2023Release notes
Open source →- Fixed EGL/GLX display initialization when the provided raw-window-handle has an unknown visual_id.
- Fixed EGL always returning
Noneforx11_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.
-
0.30.407 Feb 2023Release notes
Open source →- Fixed EGL display initialization with XcbDisplayHandle.
- Fixed EGL/GLX
Surface::widthreturning the height instead of the width. - On GLX, fixed handling of errors not directly requested by glutin.
- Added
GlConfig::hardware_acceleratedto check if the config is hardware accelerated. - Added
GlContext::context_apito get theContextApiused 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(), andGlSurface::resize()could block on macOS.
-
0.30.307 Dec 2022Release notes
Open source →- Fixed wrong amount of rects committed in
Surface::swap_buffers_with_damagewith EGL. - Added missing
Eq,PartialEq, andHashimpls forsurface::Rect.
- Fixed wrong amount of rects committed in
-
0.30.226 Nov 2022Release notes
Open source →- 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.
-
0.30.112 Nov 2022Release notes
Open source →- Added new
glutin-winitcrate to help bootstrapping newglutinwithwinit. - Added
EGLDevicewrappers for EGL. - Added EGL dependent api to make a context current without a surface.
- Added
supports_transparencyonGlConfig. - On GLX, try all extensions when setting vsync.
- On WGL, fixed that
Surface::swap_bufferstakes longer with every call caused by frequent calls of the win32 functionHDC GetDC(HWND hWnd).
- Added new
-
0.30.026 Oct 2022Release notes
Open source →- This version of
glutinhas been rewritten from the ground and no longer depends onwinit, theraw-window-handleis now used instead of it. - The Api is now built around
Display,Surface,Config, andSurface. For more info see crate documentation and examples. - Breaking: Bump MSRV from
1.57to1.60. - The ios support was removed for the lack of maintenance 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 publicly exposed now, so glutin could be used with just e.g.
EGL. - Fixed soundness issues with
SurfaceMT safety, since beforeEGLSurfacecould be sent to a different thread, which is not safe. - Fallback to
Surface::swap_bufferswhenSurface::swap_buffers_with_damageis not supported onEGL.
- This version of
-
0.30.0-beta.323 Oct 2022 pre-releaseNothing published for this version
-
0.30.0-beta.203 Sep 2022 pre-releaseNothing published for this version
-
0.30.0-beta.103 Sep 2022 pre-release withdrawnNothing published for this version
-
0.29.110 Aug 2022 -
0.29.030 Jul 2022Release notes
Open source →- Fix crash when creating OpenGLES context without explicit version.
- Add
buffer_agemethod onWindowedContext. - Return an
Errinstead of panicking when surfaceless GLX context creation fails on Linux. - Fix compilation on Android:
- Switch from
StaticStructGeneratortoStructGeneratorto dynamically load symbols. - Replace
android_gluedependency withraw-window-handle, and remove broken lifecycle event handling. - Glutin can now be used on Android, however, the application must ensure it only creates the
Contextfollowing a winitEvent::Resumedevent, and destroys theContextin response to aEvent::Suspendedevent.
- Switch from
- Updated winit dependency to 0.27.0. See winit's CHANGELOG for more info.
- On Windows,
build_raw_contextnow usesisizeforhwndto follow winit change.
-
0.28.002 Dec 2021Release notes
Open source →- On Windows, fixed a panic for headless contexts because of active drag-and-drop (OleInitialize failed! Result was:
RPC_E_CHANGED_MODE) - Updated winit dependency to 0.26.0. See winit's CHANGELOG for more info.
- Remove emscripten support leftover.
- On Windows, fixed a panic for headless contexts because of active drag-and-drop (OleInitialize failed! Result was:
-
0.27.022 Jun 2021Release notes
Open source →- Updated winit dependency to 0.25.0. See winit's CHANGELOG for more info.
-
0.26.010 Dec 2020Release notes
Open source →- Updated winit dependency to 0.24.0. See winit's CHANGELOG for more info.
Release notes
Open source →ea1c031
This commit was created on GitHub.com and signed with GitHub’s verified signature . The key has expired.
GPG key ID: 4AEE18F83AFDEB23 Expired
Verified Learn about vigilant mode .
-
Update raw-window-handle to v0.4 . This is not a breaking change, we still implement HasRawWindowHandle from v0.3 , see rust-windowing/raw-window-handle#74 . Note that you might have to run cargo update -p raw-window-handle after upgrading.
-
On X11, bump mio to 0.8.
-
On Android, fixed WindowExtAndroid::config initially returning an empty Configuration .
-
On Android, fixed Window::scale_factor and MonitorHandle::scale_factor initially always returning 1.0.
-
On X11, select an appropriate visual for transparency if is requested
-
On Wayland and X11, fix diagonal window resize cursor orientation.
-
On macOS, drop the event callback before exiting.
-
On Android, implement Window::request_redraw
-
Breaking: On Web, remove the stdweb backend.
-
Added Window::focus_window to bring the window to the front and set input focus.
-
On Wayland and X11, implement is_maximized method on Window .
-
On Windows, prevent ghost window from showing up in the taskbar after either several hours of use or restarting explorer.exe .
-
On macOS, fix issue where ReceivedCharacter was not being emitted during some key repeat events.
-
On Wayland, load cursor icons hand2 and hand1 for CursorIcon::Hand .
-
Breaking: On Wayland, Theme trait and its support types are dropped.
-
On Wayland, bump smithay-client-toolkit to 0.15.1.
-
On Wayland, implement request_user_attention with xdg_activation_v1 .
-
On X11, emit missing WindowEvent::ScaleFactorChanged when the only monitor gets reconnected.
-
On X11, if RANDR based scale factor is higher than 20 reset it to 1
-
On Wayland, add an enabled-by-default feature called wayland-dlopen so users can opt out of using dlopen to load system libraries.
-
Breaking: On Android, bump ndk and ndk-glue to 0.5.
-
On Windows, increase wait timer resolution for more accurate timing when using WaitUntil .
-
On macOS, fix native file dialogs hanging the event loop.
-
On Wayland, implement a workaround for wrong configure size when using xdg_decoration in kwin_wayland
-
On macOS, fix an issue that prevented the menu bar from showing in borderless fullscreen mode.
-
On X11, EINTR while polling for events no longer causes a panic. Instead it will be treated as a spurious wakeup.
-
0.25.109 Oct 2020 -
0.25.002 Oct 2020Release notes
Open source →- Updated winit dependency to 0.23.0. See winit's CHANGELOG for more info.
- Avoid loading libEGL.dll from PATH on Windows.
-
0.24.130 May 2020 -
0.24.011 Mar 2020Release notes
Open source →- Updated winit dependency to 0.22.0. See winit's CHANGELOG for more info.
-
0.23.007 Feb 2020Release notes
Open source →- Updated winit dependency to 0.21.0. See winit's CHANGELOG for more info.
- Removed broken CI for the
armv7-apple-iostarget.
-
0.22.129 Jan 2020Release notes
Open source →- Fixed incorrectly documented default value for
ContextBuilder::with_srgb
- Fixed incorrectly documented default value for
-
0.22.007 Jan 2020Release notes
Open source →- Updated winit dependency to 0.20.0. See winit's CHANGELOG for more info.
-
0.22.0-alpha605 Jan 2020 pre-releaseRelease notes
Open source →- Fixed dependencies so wrong winit version is not used.
- On X11, got rid of mistaken
XRenderFindVisualFormatcall so that glutin doesn't ignore configs that lack aXRenderPictFormat. - On iOS, fixed not linking against OpenGLES.framework.
- On X11, fixed VSync not being disabled when requested.
-
0.22.0-alpha515 Nov 2019 pre-release -
0.22.0-alpha412 Nov 2019 pre-releaseRelease notes
Open source →- Update winit dependency to 0.20.0-alpha4. See winit's CHANGELOG for more info.
- Added an xcode example for building for iOS.
- Made using sRGB the default.
- MacOSX's raw_handle trait method now returns the CGLContext object.
-
0.22.0-alpha316 Aug 2019 pre-release -
0.22.0-alpha215 Aug 2019 pre-releaseRelease notes
Open source →- Fixed attribute handling for sRGB in WGL.
- Fixed VSync being always enabled on EGL.
-
0.22.0-alpha121 Jun 2019 pre-releaseRelease notes
Open source →- Update winit dependency to 0.20.0-alpha1. See winit's CHANGELOG for more info.
-
0.21.229 Nov 2019Nothing published for this version
-
0.21.127 Aug 2019Nothing published for this version
-
0.21.021 Apr 2019 -
0.21.0-rc314 Apr 2019 pre-release -
0.21.0-rc209 Apr 2019 pre-releaseRelease notes
Open source →- Breaking: Removed
DisplayLostvariant toContextError. - Breaking: Renamed
NotCurrentContexttoNotCurrent. - Breaking: Renamed
PossiblyCurrentContexttoPossiblyCurrent. - Added
treat_as_currentfunction.
- Breaking: Removed
-
0.21.0-rc108 Apr 2019 pre-releaseRelease notes
Open source →- Breaking: Replaced
CreationErrorPairenum variant withCreationErrors. - Added
ClonetoContextBuilder. - Added headless example.
- Removed internal code relating to libcaca.
- Implemented
Debugon all public facing types. - Dropping contexts on platforms using egl and/or glx no longer resets the current context, if the context dropped wasn't the current context.
- Added context sharing support to MacOS.
- Breaking: Removed
ContextTrait. - Breaking: Renamed
OsMesaContextExttoHeadlessContextExt. Added functions for using egl-surfaceless. - Breaking: Changed
WindowedContextandRawContextinto typedefs ofContextWrapper. - Breaking: Removed
new_windowedandnew_headlessfromWindowedContextandContext, respectively. - Breaking: Added two new types,
NotCurrentContextandPossiblyCurrentContext, whichRawContext,WindowedContext,ContextBuilderandContextare now generic over. - Added
{make,treat_as}_not_currentfunction to{Raw,Windowed,}Context. - We now load
libGL.soinstead oflibGLX.so. - Breaking: Added
DisplayLostvariant toContextError. - Fixed bug where we drop the hidden window belonging to a headless context on on X11 and/or Wayland before the actual context.
- "Fixed" bug where we will close
EGLDisplays while they are still in use by others. Angry and/or salty rant can be found inglutin/src/api/egl/mod.rs, you can't miss it. - Breaking:
WindowedContexts now deref toContext, notWindow. Please use.window()to access the window.
- Breaking: Replaced
-
0.20.108 Aug 2019 -
0.20.010 Mar 2019Release notes
Open source →- We no longer load
libEGL.soandlibGL.somultiple times. - Fixes
Context::is_currentincorrectly returningfalse. - Made
ContextBuilder'spf_reqspublic. - Breaking: Renamed
GlContext{,Ext}toContextTrait{,Ext}. - Breaking: Renamed
GlWindowtoWindowedContext. - Implemented context sharing support for Windows and Linux.
- Added support for contexts made from raw parts for Windows and Linux.
- Breaking: Removed
shareable_with_windowed_contexts. Now you must build OsMesa contexts via a separate extension. - Added
ContextBuilder::build_{windowed,headless}methods. - Breaking: Renamed
Context::newtoContext::new_headless.new_headlessnow accepts dimensions for the off-screen surface backing it. - Breaking: Renamed
GlWindow::newtoWindowedContext::new_windowed. - On X11 and Wayland, you can now use shared contexts, however, one limitation of the Wayland backend is that all shared contexts must use the same events pool as each other.
- Added context sharing support to windows.
- Improved docs.
- Refactored code to be more consistent/cleaner. Ran rustfmt on everything.
- Added NetBSD support.
- Breaking: Removed
new_sharedfunction fromContextandGlWindow, in favor ofnew. - Added
buildmethod toContextBuilder. - Added
get_egl_displaymethod toGlContextExttrait and its implementation for platforms. - Removed minimum supported Rust version guarantee.
NoBackendAvailableis nowSync, as a resultCreationErroris alsoSync.- Update winit dependency to 0.19.0. See winit's CHANGELOG for more info.
- We no longer load
-
0.19.010 Nov 2018Release notes
Open source →- Breaking: The entire API for headless contexts has been removed. Please instead use
Context::new()when trying to make a context without a visible window. Also removedheadlessfeature. - Breaking: Types implementing the
GlContexttrait must now be sized. - Breaking: Added new
CreationErrorPairenum variant to enumCreationError. - Remove requirement for EGL dev packages on Wayland.
- Update winit dependency to 0.18.0. See winit's CHANGELOG for more info.
- Breaking: The entire API for headless contexts has been removed. Please instead use
-
0.18.003 Aug 2018Release notes
Open source →- cocoa and core-graphics updates.
- Breaking: Added
OsErrorvariant toContextError. - Improved glX error reporting.
- The iOS backend no longer fails to compile... again (added iOS testing on CI to prevent further issues).
- Update winit dependency to 0.17.0. See winit's CHANGELOG for more info.
-
0.17.028 Jun 2018Release notes
Open source →- Fix regression that prevented automatic graphics switching in macOS (#980).
- Add
ContextBuilder::with_double_bufferfunction. - Add
ContextBuilder::with_hardware_accelerationfunction. - Work around a presumed Android emulator bug
that would cause context creation to return
CreationError::OpenGlVersionNotSupportedin some configurations (#1036). - Update winit dependency to 0.16.0. See winit's CHANGELOG for more info.
- The iOS backend no longer fails to compile.
-
0.16.028 May 2018Release notes
Open source →- Update winit dependency to 0.14.0. See winit's CHANGELOG for more info.
- Update winit dependency to 0.15.0. See winit's CHANGELOG for more info.
-
0.15.003 May 2018 -
0.14.011 Apr 2018Release notes
Open source →- Update winit dependency to 0.12.0. See winit's CHANGELOG for more info.
- Update Wayland backend to not use deprecated
get_inner_size_pointsmethod.
-
0.13.108 Mar 2018Release notes
Open source →- Fix Android activity life cycle.
- Update winit dependency to 0.11.2. See winit's CHANGELOG for more info.
-
0.13.028 Feb 2018 -
0.12.328 Feb 2018 withdrawnNothing published for this version
-
0.12.212 Feb 2018 -
0.12.106 Feb 2018 -
0.12.028 Dec 2017Nothing published for this version