-
Notifications
You must be signed in to change notification settings - Fork 1.2k
[META] Feature parity between platforms #252
Copy link
Copy link
Closed
Labels
S - metaProject governanceProject governanceS - platform parityUnintended platform differencesUnintended platform differences
Description
Outdated - please refer to FEATURES.md.
This is intended to be a meta-issue to track feature parity between the various backends.
This is a first draft, please all who have the right to, update this message with what you find missing (be it a feature I forgot or the status of a feature for a platform or a platform entirely)
Each section includes a collapsed description of the features it lists.
Legend:
- ✔️ : Works as intended
- ▢ : Mostly works but some bugs are known
- ❌ : Missing feature or large bugs making it unusable
- N/A : Not applicable for this platform
- ❓ : Unknown status
Display features
| Feature | Windows | MacOS | Linux x11 | Linux Wayland | Android | iOS | Emscripten |
|---|---|---|---|---|---|---|---|
| Window initialization | ✔️ | ✔️ | ▢ #5 | ✔️ | ▢ #33 | ▢ #33 | ❓ |
| Providing pointer to init OpenGL | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❓ |
| Providing pointer to init vulkan | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❓ | N/A |
| Window decorations | ✔️ | ✔️ | ✔️ | ▢ #306 | N/A | N/A | N/A |
| Window decorations toggle | ✔️ | ✔️ | ✔️ | ✔️ | N/A | N/A | N/A |
| Window resizing | ✔️ | ▢ #219 | ✔️ | ▢ #306 | N/A | N/A | ❓ |
| Window transparency | ▢ #260 | ✔️ | ✔️ | ✔️ | N/A | N/A | N/A |
| Window maximization | ✔️ | ✔️ | ✔️ | ✔️ | N/A | N/A | N/A |
| Window maximization toggle | ✔️ | ✔️ | ✔️ | ✔️ | N/A | N/A | N/A |
| Fullscreen | ✔️ | ✔️ | ✔️ | ✔️ | N/A | N/A | ❌ |
| Fullscreen toggle | ✔️ | ✔️ | ✔️ | ✔️ | N/A | N/A | ❌ |
| HiDPI support #105 | ✔️ | ✔️ | ✔️ | ✔️ | ▢ | ✔️ | ✔️ |
Expand details of features
- Window initialization: Winit allows the creation of a window
- Pointer to OpenGL: Winit provides the necessary pointers to initialize a working opengl context
- Pointer to Vulkan: Same as OpenGL but for Vulkan
- Window decorations: The windows created by winit are properly decorated, and the decorations can be deactivated
- Window decorations toggle: Decorations can be turned on or off after window creation
- Window resizing: The windows created by winit can be resized and generate the appropriate events when they are. The application can precisely control its window size if wanted.
- Window transaprency: Winit allows the creation of windows with a transparent background
- Window maximization: The windows created by winit can be maximized upon creation.
- Window maximization toggle: The windows created by winit can be maximized and unmaximized after creation.
- Fullscreen: The windows created by winit support being fullscreen.
- Fullscreen toggle: The windows created by winit can be switched to and from fullscreen after creation.
System information
| Feature | Windows | MacOS | Linux x11 | Linux Wayland | Android | iOS | Emscripten |
|---|---|---|---|---|---|---|---|
| Monitor list | ✔️ | ✔️ | ✔️ | ✔️ | N/A | N/A | N/A |
Expand details of features
- Monitor list: Retrieve the list of monitors and their metada, including which one is primary is applicable
Input handling
| Feature | Windows | MacOS | Linux x11 | Linux Wayland | Android | iOS | Emscripten |
|---|---|---|---|---|---|---|---|
| Mouse events | ✔️ | ▢ #63 | ✔️ | ✔️ | N/A | N/A | ✔️ |
| Mouse set location | ✔️ | ✔️ | ✔️ | ❓ | N/A | N/A | N/A |
| Cursor grab | ✔️ | ▢ #165 | ▢ #242 | ❌ #306 | N/A | N/A | ✔️ |
| Cursor image | ✔️ | ✔️ | ✔️ | ❌ #306 | N/A | N/A | ❌ |
| Touch events | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Multitouch | ❓ | ❌ | ✔️ | ✔️ | ❓ | ❌ | ❌ |
| Keyboard events | ✔️ | ✔️ | ✔️ | ✔️ | ❓ | ❌ | ✔️ |
| Drag&Drop | ✔️ | ✔️ | ✔️ | ❌ #306 | ❌ | ❌ | ❌ |
| Clipboard #162 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Raw Device Events | ▢ | ▢ | ▢ | ❌ | ❌ | ❌ | ❌ |
Expand details of features
- Mouse events: Winit generates mouse events associated with pointer motion, click, and scrolling events
- Mouse set location: Winit can forcibly change the location of the pointer
- Cursor grab: Winit allows a grad of the cursor on a window, and subsequently generates device-type relative motion events for the grabbed cursor
- Cursor image: Winit can change an set the cursor image, or hide the cursor
- Touch events: Winit supports single-touch events
- Multitouch: Winit supports multi-touch events, including cancellation of a gesture
- Keyboard events: Winit properly forwards keyboard events, using the proper keymap, and includes the interpretation of entered text as utf8, handling dead keys and character composing.
- Drag&Drop: Winit supports dragging content to winit, detecting when content enters, drops, or if the drop is cancelled.
- Clipboard: Winit supports copy-pasting content to and from winit.
Pending API Reworks
Here are listed Changes in the API that have been merged but are still stubbed out in some platforms
| API Change | Windows | MacOS | Linux x11 | Linux Wayland | Android | iOS | Emscripten |
|---|---|---|---|---|---|---|---|
| New API for HiDPI (#315 #319) | ✔️ | ✔️ | ✔️ | ✔️ | ▢ | ✔️ | ✔️ |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
S - metaProject governanceProject governanceS - platform parityUnintended platform differencesUnintended platform differences