Skip to content

[META] Feature parity between platforms #252

@elinorbgr

Description

@elinorbgr

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) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions