From 71b41c663838b8a1cf34efeb7d1f7beb14867634 Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Wed, 28 Aug 2024 09:29:43 +0200 Subject: [PATCH] [wgpu-hal] Make `raw-gles` runnable on X11 and Wayland platforms again PR #6150 suffered a much larger rebase "hell" than I anticipated. On my Linux box I made this change, but lost it while force-pushing from Windows (and created some other compiler errors while at it...). By disabling all features on `glutin`/`glutin-winit` (the latter only uses `x11`, and only forwards `wayland` to `glutin`) we may have dropped a lot of "unused" dependencies for other GL backends, but also made the crate unable to import X11 (Xlib/Xcb) and Wayland handles into EGL. Also import the missing `glutin::context::Version` struct again which was added last-minute to #6150 (to make sure my Intel card on Windows creates a GLES 3.0+ instead of GLES 2.0 context) while the import was accidentally squashed into #6152 (not merged yet). --- CHANGELOG.md | 1 + Cargo.lock | 2 ++ wgpu-hal/Cargo.toml | 4 ++-- wgpu-hal/examples/raw-gles.rs | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4625d97f7..0946e7099 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -111,6 +111,7 @@ By @teoxoy [#6134](https://github.com/gfx-rs/wgpu/pull/6134). #### GLES - Replace `winapi` code in WGL wrapper to use the `windows` crate. By @MarijnS95 in [#6006](https://github.com/gfx-rs/wgpu/pull/6006) +- Update `glutin` to `0.31` with `glutin-winit` crate. By @MarijnS95 in [#6150](https://github.com/gfx-rs/wgpu/pull/6150) and [#6176](https://github.com/gfx-rs/wgpu/pull/6176) #### DX12 diff --git a/Cargo.lock b/Cargo.lock index 62132f8dd..0153bf693 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1366,6 +1366,8 @@ dependencies = [ "objc2", "once_cell", "raw-window-handle 0.5.2", + "wayland-sys", + "x11-dl", ] [[package]] diff --git a/wgpu-hal/Cargo.toml b/wgpu-hal/Cargo.toml index d9d36d14b..e033e4d4d 100644 --- a/wgpu-hal/Cargo.toml +++ b/wgpu-hal/Cargo.toml @@ -208,7 +208,7 @@ glam.workspace = true # for ray-traced-triangle example winit.workspace = true # for "halmark" example [target.'cfg(not(any(target_arch = "wasm32", windows, target_os = "ios")))'.dev-dependencies] -glutin-winit = { workspace = true, features = ["egl"] } # for "raw-gles" example -glutin = { workspace = true, features = ["egl"] } # for "raw-gles" example +glutin-winit = { workspace = true, features = ["egl", "wayland", "x11"] } # for "raw-gles" example +glutin = { workspace = true, features = ["egl", "wayland", "x11"] } # for "raw-gles" example rwh_05 = { version = "0.5", package = "raw-window-handle" } # temporary compatibility for glutin-winit in "raw-gles" example winit = { workspace = true, features = ["rwh_05"] } # for "raw-gles" example diff --git a/wgpu-hal/examples/raw-gles.rs b/wgpu-hal/examples/raw-gles.rs index 1048d3ca4..34298d081 100644 --- a/wgpu-hal/examples/raw-gles.rs +++ b/wgpu-hal/examples/raw-gles.rs @@ -16,7 +16,7 @@ fn main() { use glutin::{ config::GlConfig as _, - context::{NotCurrentGlContext as _, PossiblyCurrentGlContext as _}, + context::{NotCurrentGlContext as _, PossiblyCurrentGlContext as _, Version}, display::{GetGlDisplay as _, GlDisplay as _}, surface::GlSurface as _, };