From d4fbc5fa1e16abef72a176b373ed1b5ea691c8de Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 27 Jan 2026 19:43:37 +0100 Subject: [PATCH 1/3] Add explicit support tiers --- README.md | 57 +++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 5c59ee24..87268488 100644 --- a/README.md +++ b/README.md @@ -27,35 +27,34 @@ pixels when its GPU-accelerated post-processing effects are not needed. This library is dual-licensed under MIT or Apache-2.0, just like minifb and rust. Significant portions of code were taken from the minifb library to do platform-specific work. -## Platform support: - -Some, but not all, platforms supported in [raw-window-handle](https://crates.io/crates/raw-window-handle) are supported -by Softbuffer. Pull requests are welcome to add new platforms! **Nonetheless, all major desktop platforms that winit uses -on desktop are supported.** - -For now, the priority for new platforms is: - -1. to have at least one platform on each OS working (e.g. one of Win32 or WinRT, or one of Xlib, Xcb, and Wayland) and -2. for that one platform on each OS to be the one that winit uses. - -(PRs will be accepted for any platform, even if it does not follow the above priority.) - -| Platform || -|-----------|--| -|Android NDK|✅| -| AppKit |✅| -| Orbital |✅| -| UIKit |✅| -| Wayland |✅| -| Web |✅| -| Win32 |✅| -| WinRT |❌| -| XCB |✅| -| Xlib |✅| - -✅: Present\ -❔: Immature\ -❌: Absent +## Platform support + +Softbuffer supports many platforms, some to a higher degree than others. This is codified with a "tier" system. Tier 1 platforms can be thought of as "tested and guaranteed to work", tier 2 as "will likely work", and tier 3 as "builds in CI". + +When submitting pull requests that change multiple platforms, you're expected to have tested it on all tier 1 platforms. + +The current status is as follows (based on the list of platforms exposed by [`raw-window-handle`](https://crates.io/crates/raw-window-handle)): + +| Platform | Tier | Available | +| ------------------ | ---- | --------- | +| AppKit (macOS) | 1 | ✅ | +| Wayland | 1 | ✅ | +| Win32 | 1 | ✅ | +| XCB / Xlib (X11) | 1 | ✅ | +| Android NDK | 2 | ✅ | +| UIKit (iOS) | 2 | ✅ | +| WebAssembly | 2 | ✅ | +| DRM/KMS | 3 | ✅ | +| Orbital | 3 | ✅ | +| GBM/KMS | N/A | ❌ | +| Haiku | N/A | ❌ | +| OpenHarmony OS NDK | N/A | ❌ ([#261](https://github.com/rust-windowing/softbuffer/pull/261)) | +| WinRT | N/A | ❌ | +| UEFI | N/A | ❌ ([#282](https://github.com/rust-windowing/softbuffer/pull/282)) | + +Beware that big endian targets are much less tested, and may behave incorrectly. + +Pull requests to add support for new platforms are welcome! ## WebAssembly From aa04cb3350c33060d198c98353385a40fcbb1c92 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 27 Jan 2026 16:21:27 +0100 Subject: [PATCH 2/3] Fix CODEOWNERS file --- .github/CODEOWNERS | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d3772452..2e6f3f6e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,23 +1,23 @@ # Android -/src/android.rs @MarijnS95 +/src/backends/android.rs @MarijnS95 # Apple platforms -/src/cg.rs @madsmtm +/src/backends/cg.rs @madsmtm # DRM/KMS (no maintainer) -/src/kms.rs +/src/backends/kms.rs # Redox -/src/orbital.rs @jackpot51 +/src/backends/orbital.rs @jackpot51 # Wayland -/src/wayland @ids1024 +/src/backends/wayland @ids1024 # Web -/src/web.rs @daxpedda +/src/backends/web.rs @daxpedda # Windows -/src/win32.rs @notgull +/src/backends/win32.rs @notgull # X11 -/src/x11.rs @notgull +/src/backends/x11.rs @notgull From e372f54dacbcdbb3169f87b1fbcce196f96f6c43 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Tue, 27 Jan 2026 22:49:22 +0100 Subject: [PATCH 3/3] Make it clearer for contributors what they have to do By adding a pull request template with the tier list. --- .github/PULL_REQUEST_TEMPLATE.md | 16 ++++++++++++++++ README.md | 2 -- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..e995f063 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ + + + + +Tested on: +- [ ] AppKit (tier 1) +- [ ] Wayland (tier 1) +- [ ] Win32 (tier 1) +- [ ] XCB / Xlib (tier 1) +- [ ] Android NDK (tier 2) +- [ ] UIKit (tier 2) +- [ ] Web (tier 2) +- [ ] DRM/KMS (tier 3) +- [ ] Orbital (tier 3) + + diff --git a/README.md b/README.md index 87268488..66c5ebc8 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,6 @@ from the minifb library to do platform-specific work. Softbuffer supports many platforms, some to a higher degree than others. This is codified with a "tier" system. Tier 1 platforms can be thought of as "tested and guaranteed to work", tier 2 as "will likely work", and tier 3 as "builds in CI". -When submitting pull requests that change multiple platforms, you're expected to have tested it on all tier 1 platforms. - The current status is as follows (based on the list of platforms exposed by [`raw-window-handle`](https://crates.io/crates/raw-window-handle)): | Platform | Tier | Available |