Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -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
16 changes: 16 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!-- Thanks for contributing! -->

<!-- If your pull request only touches a single backend, feel free to prune the following list: -->

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)

<!-- Note that it's okay to leave these unchecked, this is just a signal to the reviewer that they need to test it themselves. PRs may be merged when all tier 1 backends have been tested. -->
55 changes: 26 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,35 +27,32 @@ 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".

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 | ✅ |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would commit to 1 on Android too, if it weren't for the remaining issues in android-activity and winit.

Copy link
Member Author

@madsmtm madsmtm Jan 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm kind of of the same mind for iOS / UIKit (and Web to a certain extent), the problems there aren't in Softbuffer but in Winit. But effectively, it does mean that Android and iOS are less supported, hence tier 2.

| UIKit (iOS) | 2 | ✅ |
| WebAssembly | 2 | ✅ |
| DRM/KMS | 3 | ✅ |
| Orbital | 3 | ✅ |
| GBM/KMS | N/A | ❌ |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are users interested in a GBM backend - which uses DRM/KMS?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Idk how GBM works, I just kinda filled out the table based on RawWindowHandle

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As long as the gbm_surface uses a linear modifier, we could mmap it and write to it, but I'd assume for pure software rendering using dumb buffers would perform better, or equivalently?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it makes sense to list it here anyhow, regardless of whether we ever intend to support it, since it's part of raw-window-handle.

| 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

Expand Down