Skip to content

Commit ae7fb22

Browse files
authored
Merge pull request #1082 from ids1024/angle
egl: Support ANGLE EGL platform on winit Wayland
2 parents b54598f + 2f00e12 commit ae7fb22

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

src/backend/egl/ffi.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,4 +356,9 @@ pub mod egl {
356356
// Accepted in the <attribute> parameter of eglQueryWaylandBufferWL:
357357
pub const EGL_TEXTURE_FORMAT: i32 = 0x3080;
358358
pub const WAYLAND_Y_INVERTED_WL: i32 = 0x31DB;
359+
360+
pub const PLATFORM_ANGLE_ANGLE: u32 = 0x3202;
361+
pub const PLATFORM_ANGLE_TYPE_ANGLE: i32 = 0x3203;
362+
pub const PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE: i32 = 0x348F;
363+
pub const PLATFORM_ANGLE_TYPE_VULKAN_ANGLE: i32 = 0x3450;
359364
}

src/backend/egl/native.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,13 +171,43 @@ impl EGLNativeDisplay for Arc<WinitWindow> {
171171
egl_platform!(PLATFORM_WAYLAND_KHR, display, &["EGL_KHR_platform_wayland"]),
172172
// see: https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_platform_wayland.txt
173173
egl_platform!(PLATFORM_WAYLAND_EXT, display, &["EGL_EXT_platform_wayland"]),
174+
// see: https://raw.githubusercontent.com/google/angle/main/extensions/EGL_ANGLE_platform_angle.txt
175+
egl_platform!(
176+
PLATFORM_ANGLE_ANGLE,
177+
display,
178+
&[
179+
"EGL_ANGLE_platform_angle",
180+
"EGL_ANGLE_platform_angle_vulkan",
181+
"EGL_EXT_platform_wayland",
182+
],
183+
vec![
184+
ffi::egl::PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE,
185+
ffi::egl::PLATFORM_WAYLAND_EXT as _,
186+
ffi::egl::PLATFORM_ANGLE_TYPE_ANGLE,
187+
ffi::egl::PLATFORM_ANGLE_TYPE_VULKAN_ANGLE,
188+
ffi::egl::NONE as ffi::EGLint
189+
]
190+
),
174191
]
175192
} else if let Some(display) = self.xlib_display() {
176193
vec![
177194
// see: https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_platform_x11.txt
178195
egl_platform!(PLATFORM_X11_KHR, display, &["EGL_KHR_platform_x11"]),
179196
// see: https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_platform_x11.txt
180197
egl_platform!(PLATFORM_X11_EXT, display, &["EGL_EXT_platform_x11"]),
198+
// see: https://raw.githubusercontent.com/google/angle/main/extensions/EGL_ANGLE_platform_angle.txt
199+
egl_platform!(
200+
PLATFORM_ANGLE_ANGLE,
201+
display,
202+
&["EGL_ANGLE_platform_angle", "EGL_ANGLE_platform_angle_vulkan"],
203+
vec![
204+
ffi::egl::PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE,
205+
ffi::egl::PLATFORM_X11_EXT as _,
206+
ffi::egl::PLATFORM_ANGLE_TYPE_ANGLE,
207+
ffi::egl::PLATFORM_ANGLE_TYPE_VULKAN_ANGLE,
208+
ffi::egl::NONE as ffi::EGLint
209+
]
210+
),
181211
]
182212
} else {
183213
unreachable!("No backends for winit other then Wayland and X11 are supported")

0 commit comments

Comments
 (0)