Commit Graph

225 Commits

Author SHA1 Message Date
Victor Brekenfeld d6fa2e96cf drm: Require all surfaces to always have a mode set 2020-04-27 00:45:58 +02:00
Victor Brekenfeld b6087bf2d2 legacy: move create_surface into Surface constructor 2020-04-27 00:45:58 +02:00
Victor Brekenfeld 77875f71c6 fallback: add disable_connectors to `FallbackDevice` initialization 2020-04-27 00:45:58 +02:00
Victor Brekenfeld 50f94d013a legacy: disable connectors on device creation 2020-04-27 00:45:58 +02:00
Victor Brekenfeld 8c8f5e0d59 atomic: disable connectors on device creation 2020-04-27 00:45:58 +02:00
Victor Brekenfeld 260bfd9f86 clippy fixes 2020-04-21 20:18:35 +02:00
Victor Brekenfeld dcd6934d08 legacy: remove outdated comment 2020-04-21 20:18:35 +02:00
Victor Brekenfeld 11bb910224 atomic: flesh out trace logs 2020-04-21 20:18:35 +02:00
Victor Brekenfeld ef05dacc0d atomic: Move out `add/map_props` to `Dev` 2020-04-21 20:18:35 +02:00
Victor Brekenfeld df951b5de7 common: add fallback device/surface types 2020-04-21 20:18:35 +02:00
Victor Brekenfeld 35943fc56a typo: ctrc -> crtc in drm/mod.rs 2020-04-21 20:18:34 +02:00
Victor Brekenfeld 57e5494941 legacy: bugfix, add null-commit to free pipeline 2020-04-21 20:18:34 +02:00
Victor Brekenfeld ea44343315 drm: add set_connectors to Surface 2020-04-21 20:18:34 +02:00
Victor Brekenfeld d3b8563f65 gbm: Try to re-create resources and commit if restarting the rendering loop fails 2020-04-21 20:18:34 +02:00
Victor Brekenfeld d30bd4555e anvil: use atomic modesetting 2020-04-21 20:18:34 +02:00
Victor Brekenfeld 365b7e6496 drm: Add atomic modesetting support 2020-04-21 20:18:34 +02:00
Victor Brekenfeld e8cb940aab drm legacy: small cleanups + additional logging 2020-04-21 20:18:34 +02:00
Victor Brekenfeld 1b259e2deb typo: priviledged -> privileged 2020-04-21 20:18:34 +02:00
Victor Brekenfeld 41696f5364 drm: trigger vblank on commit 2020-04-21 20:18:34 +02:00
Victor Brekenfeld ed257e8991 drm: move legacy::Error into common module 2020-04-21 20:18:34 +02:00
Victor Brekenfeld df27224372 gbm: implement CursorBackend generically 2020-04-21 20:18:34 +02:00
Victor Brekenfeld cde06eb99a cursor: simplify trait by removing barely utilized lifetimes 2020-04-21 20:18:34 +02:00
Chandler Newman c4016af67b Add default settings for surface creation 2020-04-16 12:33:28 +01:00
Chandler Newman f7c05fa064 Rename WaylandEGLDisplay to EGLBufferReader 2020-04-15 21:19:20 +01:00
Chandler Newman b8df85e744 Mark get_proc_address as safe 2020-04-15 12:16:02 +01:00
Chandler Newman a684f5d8d6 Refactor EGL backend 2020-04-15 12:01:01 +01:00
Victor Berger b54d95c15d
Fix most clippy warnings (#185)
* Add missing documentation

* Fix most clippy warnings
2020-04-15 09:28:22 +02:00
Victor Berger 6a7d933553 Replace `failure` and `error-chain` by `thiserror` 2020-04-13 13:20:59 +02:00
Victor Brekenfeld f6b3d630ce rustfmt 2020-04-10 19:18:58 +02:00
Victor Brekenfeld e8e8667d89 Upgrade to the upcoming drm-rs 0.4 2020-04-10 16:58:49 +02:00
Jonas Platte b8c20ebf30
Update wayland-rs to 0.25 (#171)
Update wayland-rs to 0.25 and calloop to 0.5

Co-authored-by: Victor Berger <victor.berger@m4x.org>
2020-04-05 19:01:08 +02:00
nycex 0140de89fb fix some clippy warnings (#147)
This commit removes some clippy warnings (to advance #45) by doing the following:
- replace usage of `mem::uninitialized()` with `MaybeUninit`
- replace usage of `nix::libc::{uint64_t, int32_t}` with `{u64, i32}`
- replace functions inside of `Option::ok_or` with `Option::ok_or_else`
- replace functions inside of `Result::unwrap_or` with `Result::unwrap_or_else`
- replace occurrences of pass-by-reference with pass-by-value when
  appropriate
- replace unused variables in pattern-matching with wildcards
- replace `match` expressions that have only one case with `if let`
  expressions
- replace UpperCamelCase names of consts with SCREAMING_SNAKE_CASE
- remove `clone()` on types that implement Copy
- remove redundant imports
- remove `fn main()` from doctests
- remove let binding for variables that are returned afterwards
2020-01-01 11:43:16 +01:00
Pierre Chevalier 0b2e4b42db Fix clippy warnings with cargo fix
Simply ran:
```
rustup run nightly  cargo fix --clippy -Z unstable-options
```
followed by
```
cargo fmt
```

No manual change in this commit.
2019-10-23 14:13:10 +02:00
Victor Berger 89dce178c8 Make wayland support optional 2019-02-06 09:29:56 +01:00
Victor Brekenfeld e5f8c351c7 Check for rust_2018_idioms 2018-12-16 19:31:38 +01:00
Victor Brekenfeld 71bd64a6bf Fix source code for 2018 edition 2018-12-16 19:31:38 +01:00
Victor Brekenfeld dc97e0ad03 Add reexports module 2018-12-14 14:26:50 +01:00
Victor Brekenfeld 04aee7cbc9 Replace documentation links with intra rustdoc links 2018-12-13 15:14:25 +01:00
Victor Brekenfeld a3acd48cc3 fmt: rust 1.31 2018-12-08 18:31:08 +01:00
Victor Brekenfeld c24619861e egl: style: move constraints into where clause 2018-12-08 17:26:05 +01:00
Victor Berger 7dc3d64b6e docs: typo fixes
Co-Authored-By: Drakulix <github@drakulix.de>
2018-12-08 13:47:22 +01:00
Victor Brekenfeld a8343edbd7 legacy: add legacy drm example 2018-12-05 22:51:41 +01:00
Victor Brekenfeld bbe767002d comments: add more explainations to new code 2018-12-05 22:48:10 +01:00
Victor Brekenfeld a3734da9da gbm: update to gbm 0.5 2018-12-05 22:45:01 +01:00
Victor Brekenfeld 6609754d13 docs: add drm/egl 2018-12-05 22:45:01 +01:00
Victor Brekenfeld 1f8a7e7335 docs: add drm/gbm 2018-12-05 22:45:01 +01:00
Victor Brekenfeld 3b92e351b1 docs: added drm/legacy 2018-12-05 22:45:01 +01:00
Victor Brekenfeld 174c150887 docs: added drm 2018-12-03 23:29:30 +01:00
Victor Brekenfeld b160a91f8a drm: remove mode & connector arguments of create_surface 2018-12-03 23:29:30 +01:00
Victor Brekenfeld f8a5e8bfde anvil: allow for non-egl builds 2018-12-03 23:29:30 +01:00
Victor Brekenfeld f2466c5c50 drm: Fix drop order 2018-12-03 23:29:30 +01:00
Victor Brekenfeld 51f0050d68 drm: fix dropping master when killed from another tty 2018-12-02 22:01:45 +01:00
Victor Brekenfeld 8abcc145d7 egl: EGLContext borrow native to circumvent RefCell runtime error 2018-12-02 22:01:45 +01:00
Victor Brekenfeld 0ed69bf2da session: Add multiplexer 2018-12-02 22:01:45 +01:00
Victor Brekenfeld 5741ccdd46 gbm: fix EGLSurface recreation 2018-11-29 19:41:17 +01:00
Victor Brekenfeld e7575d08b8 gbm: fix calling lock_front_buffer without eglSwapBuffers 2018-11-29 19:41:17 +01:00
Victor Brekenfeld 9a82de6fae graphics: Move PixelFormat out of gl module 2018-11-29 19:41:17 +01:00
Victor Brekenfeld d07c66985f gbm: CursorBackend depends on backend_drm_legacy 2018-11-29 19:41:17 +01:00
Victor Brekenfeld 59e0ad87f9 gbm: do not expose egl support, if backend_egl is not enabled 2018-11-29 19:41:17 +01:00
Victor Brekenfeld de526f4b23 drm: Add functions to query device state 2018-11-29 16:13:07 +01:00
Victor Brekenfeld 2675cf94dc egl_surface: fix CursorBackend implementation 2018-11-29 16:13:07 +01:00
Victor Brekenfeld f17e37465b drm: Remove associated Return type from Device 2018-11-29 16:13:07 +01:00
Victor Brekenfeld 9ee44672a0 cargo fmt 2018-11-29 16:13:07 +01:00
Victor Brekenfeld bd5690bd77 Refactor drm backend
- Split `DrmDevice` into `LegacyDrmDevice`, `GbmDevice` and `EglDevice`
- Provide common `Device` and `RawDevice` traits

- Change `DrmBackend` into `Surface` (and `RawSurface`) implementations of each `Device` (or `RawDevice`)
2018-11-29 16:13:07 +01:00
Pablo Stebler 630b659ae6 Upgrade calloop and winit (#114)
* Fix compilation with calloop 0.4

* Use `Into` instead of changing signatures

* Bump winit to 0.18

* Fix logind for calloop 0.4

* Cargo fmt
2018-11-17 18:01:04 +01:00
Colin Benner 734d2ce996 Fmt, spelling and capitalisation fixes (#113)
* Rename priviledged to privileged in backend/drm/mod.rs

* Fix a number of typos in comments

* Fix typos in string literals

* Wrap identifiers with backticks in doc comments

* Spelling and capitalisation in doc comments

* Use XWayland in comments

This seems to be the standard capitalisation, even though the executable
is called `Xwayland`.

* Use Glium instead of glium in comments

* Use DRM and API in comments

* Fix remaining occurrence of 'priviledged'

* Reformat code to appease Travis' rustfmt
2018-10-30 13:56:30 +01:00
Jonas Platte a77e29d9b5 lib: Use nested imports 2018-10-07 22:39:18 +02:00
Victor Berger 454f874284 cargo fmt 2018-09-25 00:32:09 +02:00
Victor Berger 605895e30f update to wayland-rs 0.21 2018-09-25 00:31:58 +02:00
Colin Benner 6d31e9e5ff address more clippy warnings
Not sure how much of an improvement these are.
2018-06-29 12:30:42 +02:00
Colin Benner 4598ba0b48 address a bunch of clippy warnings 2018-06-28 11:33:49 +02:00
Victor Berger 53242bd974 backend.libinput: migrate to wayland-rs 0.20 2018-04-18 09:53:54 +02:00
Victor Berger 31a3d40589 backend.drm: update doc examples 2018-04-18 09:44:22 +02:00
Victor Berger 7f6af94733 backend: migrate drm & udev 2018-04-18 09:38:35 +02:00
Drakulix 5cfdf931fb Update for wayland-server 0.14 2018-02-21 21:02:14 +01:00
Drakulix f4d3061b2b Fix tests & examples 2018-02-21 14:52:43 +01:00
Drakulix 85bac997e0 Fix merge with latest logind bug fixes 2018-02-21 14:52:31 +01:00
Drakulix 4a2658090b Code formatting 2018-02-21 14:24:37 +01:00
Drakulix 5d66f8fdb3 Give EventLoopHandle to DrmHandler 2018-02-21 14:24:20 +01:00
Drakulix b80674bdf5 Introduce SessionObserver
`DrmDevice` and `UdevBackend` now do not need to be wrapped into `StateToken`s anymore, but can return a separate `SessionObserver` object using the new `AsSessionObserver` trait.

This change was motivated by allowing the `UdevHandle` to obtain a mutable reference to an `EventLoopHandle` to create wayland object, e.g. a `wl_output` object.

Previously this was not possible.

Depends on https://github.com/Smithay/wayland-rs/pull/164
2018-02-21 14:24:20 +01:00
Drakulix 0ad723a71b Allow `DrmBackend` to act as `drm::control::Device` 2018-02-21 13:31:05 +01:00
Drakulix 2294e79814 Reset drm device into text mode on tty switch 2018-02-20 19:19:22 +01:00
Drakulix 525c9b60c4 rustfmt 2018-02-20 19:19:22 +01:00
Drakulix 310bc94a20 Fix disappearing cursor after tty switch 2018-02-20 19:19:22 +01:00
Drakulix 495c492e50 Fix trying to become drm master on logind session 2018-02-20 19:19:22 +01:00
Drakulix b16c62b19f Add logind session 2018-02-20 19:19:22 +01:00
Drakulix 8a30689015 Add getter for current `DrmBackend` mode 2018-02-18 22:04:13 +01:00
Drakulix b125ce8005 Fix backend_drm feature 2018-01-07 23:44:21 +01:00
Drakulix 66c011c942 Use new rustfmt-preview 2018-01-07 22:30:38 +01:00
Drakulix 25c1e30fb3 Fix drm doc-test for new egl buffer changes 2018-01-07 22:12:34 +01:00
Drakulix aaa68b1cce Add documentation for the egl buffer features 2018-01-07 22:12:14 +01:00
Drakulix efaadb8882 Fix a bunch of warnings 2018-01-07 20:24:40 +01:00
Drakulix c5f475ebb5 Make unbind_egl_display into Drop implementation for EGLDisplay 2018-01-07 13:02:26 +01:00
Drakulix a527456ba6 Fixup drm backends for egl hardware-acceleration
- Decouple DrmBackend and DrmDevice through Weak references
- Move EGL-WlBuffer related functionality into it's own trait
- Impl new trait by every struct that can theoretically bind the display although it is no rendering target (no EGLGraphicsBackend), e.g. DrmDevice
- Move texture binding into own struct `EGLDisplay` created by `bind_wl_display` that can be passed around freely
- Add device num to DrmDevice for HashMap storage
- Fixup and enable acceleration on drm and udev examples made possible by the previous changes.
2018-01-05 20:04:46 +01:00
Drakulix 5d7e96103d Rework EGL module 2017-12-24 14:29:45 +01:00
Drakulix d0046e4c60 Fix rare hot-plugging bug 2017-12-21 16:25:21 +01:00
Drakulix 4207611e6d rustfmt code 2017-12-15 19:22:44 +01:00
Drakulix ae5df5039d Fix drm example and tests 2017-12-03 22:33:21 +01:00
Drakulix bd83bc5b2d Restore drm state correctly 2017-12-02 17:07:52 +01:00
Drakulix 612436e42d Correctly scan for any encoders 2017-12-02 13:51:08 +01:00
Drakulix 13be5b1634 Add documentation 2017-11-29 22:28:14 +01:00
Drakulix 96bb3570ba Get input working 2017-11-29 22:28:14 +01:00
Drakulix c7682e77de Udev backend 2017-11-29 22:28:13 +01:00
Victor Berger c31d966fd4 Upgrade wayland-server to 0.12 2017-11-03 17:31:51 +01:00
Demur Rumed ce844ba9f8 Cargo.toml: include repo, update nix/image 2017-10-09 15:17:19 +02:00
Jonas Platte 4946017c0c Apply a bunch of clippy suggestions 2017-10-07 18:40:59 +02:00
Drakulix 51886fbf00 Update to stable drm-rs version 2017-10-01 22:25:52 +02:00
Drakulix 7f45283759 cargo fmt 2017-09-21 20:50:10 +02:00
Drakulix d2617becbf Fix drm doc test and Deref impl 2017-09-21 19:05:59 +02:00
Drakulix 518f7dbdfc Store DrmBackend in EventLoop state 2017-09-20 19:48:58 +02:00
Drakulix 0758ec98ba Fix the drm backend for wayland-rs 0.10 2017-09-20 17:09:37 +02:00
Drakulix 457d6d1c35 Free framebuffers correctly 2017-09-20 15:56:57 +02:00
Drakulix fa6742fb5f The glory of error-chain 2017-09-20 15:56:11 +02:00
Drakulix a04bfcdd11 Add encoder detection to runtime manipulation 2017-09-20 15:54:16 +02:00
Drakulix 174e4b9d0b Fix encoder detection 2017-09-20 15:53:19 +02:00
Drakulix d3fca34475 Do a better job at finding a crtc in the example 2017-09-20 15:52:47 +02:00
Drakulix bdb91fc1f1 Better explaination of the drm module
- Explain the types involved and their role
- Link to the drm-rs documentation
2017-09-20 15:51:59 +02:00
Drakulix 67b3621be3 drm: reformat 2017-09-20 15:51:59 +02:00
Drakulix ab77a87725 drm: Check for valid encoder 2017-09-20 15:51:59 +02:00
Drakulix 10fd94f963 drm: add more logging 2017-09-20 15:51:39 +02:00
Drakulix 73d262e292 drm: reformat 2017-09-20 15:51:39 +02:00
Drakulix 9c71793b0e drm: Add more inline comments explaining the drm code 2017-09-20 15:51:39 +02:00
Drakulix 7bf4105050 drm: Add error for multi-use of a single crtc 2017-09-20 15:51:39 +02:00
Drakulix f2bff6172b drm: Documentation 2017-09-20 15:51:38 +02:00
Drakulix 0698775153 drm: Introduce the Drm Backend
- new backend rendering via egl via gbm directly on a drm device
- refine EGLContext and EGLSurface dependencies through lifetimes
- fixup the old winit backend to work with these changes
- add new example using the drm backend instead
- change GliumDrawer to be static for the drm example
2017-09-20 15:50:14 +02:00