Commit Graph

560 Commits

Author SHA1 Message Date
Victoria Brekenfeld 6b3a00fc06
Merge pull request #420 from i509VCB/x11/egl-drm
Rework X11 backend to use EGL for finding gbm device and associated commits
2021-11-26 13:43:49 +01:00
Victor Brekenfeld a4f2729608 gbm: expose buffer age 2021-11-24 18:57:51 +01:00
Victor Brekenfeld 6c57e27e5e swapchain: Support buffer age 2021-11-24 18:57:51 +01:00
Victor Brekenfeld 643ff5395d gbm: Refactor: remove internal `Buffers` struct 2021-11-24 18:57:51 +01:00
Victor Brekenfeld 9584219ffa swapchain: Use `UserDataMap` instead of generic parameter 2021-11-24 18:57:49 +01:00
Victoria Brekenfeld a4fab6633c
Merge pull request #406 from i509VCB/input/remove-dispatch-new
input: remove `InputBackend::dispatch_new_events`
2021-11-24 18:57:01 +01:00
i509VCB 5506c7e1c5 apply cargo fmt and clippy 2021-11-24 18:43:37 +01:00
i509VCB 86716f9c9f x11: allocate buffers using gbm with modifiers 2021-11-24 18:42:24 +01:00
i509VCB 53d43905ac x11: store dmabufs in buffer object userdata 2021-11-24 18:11:27 +01:00
Victor Brekenfeld 42b646a152 x11: Initialize via egl instead of dri3 if possible 2021-11-24 18:11:26 +01:00
i509VCB e4891b0c9e
egl: Introduce EGLDevice
More specifically, this introduces a way to query the available EGL devices on a system, `EGLDevices::enumerate`.
Also this introduces a way to get the `EGLDevice` used by an `EGLDisplay`, `EGLDevice::device_for_display`

Co-authored-by: Drakulix <github@drakulix.de>
2021-11-23 10:52:02 -06:00
Victor Brekenfeld 8bf7d91f98
backend/drm: Do not open new file descriptors in `DrmNode`
`DrmNode` was made to manage open drm nodes (including render nodes)
without having to create a `DrmDevice`. Even if opening render nodes
*should* work in general on most systems, the user should be in charge
of opening device, because they *may* want to use a `Session` or
something else. Therefor remove all `open` calls from drm/node.

The X11-backend, which tries to optain a render node, now opens the
render node itself, if getting a path proves to be successful.
2021-11-23 10:09:48 -06:00
i509VCB 7b1c0501f3 clean up warnings from github 2021-11-23 14:45:38 +01:00
i509VCB d1fae4ba4e
Merge branch 'master' into input/remove-dispatch-new 2021-11-22 18:19:46 +00:00
Victor Brekenfeld 87069f26e9 renderer: rename function parameters for clearer purpose 2021-11-22 16:38:31 +01:00
Victor Brekenfeld 011a7da665 renderer: Remove render_texture from Frame 2021-11-22 16:38:31 +01:00
Victor Brekenfeld 7a7f1217d8 renderer: Allow to set texture filtering methods 2021-11-22 16:38:31 +01:00
i509VCB d00197052c x11: add option to make extensions optional 2021-11-22 15:26:52 +01:00
Victor Brekenfeld cf6f7a0726 gbm: use Xrgb8888, if alpha variant is not available 2021-11-04 19:13:57 +01:00
i509VCB 8ca5d1f301 input: remove `InputBackend::dispatch_new_events` 2021-10-28 15:37:02 -05:00
i509VCB 3283010d2c Add Forward/Back mouse buttons 2021-10-27 12:23:12 -05:00
i509VCB e1400a1926 Mention where keyboard key code constants may be found 2021-10-27 12:23:07 -05:00
i509VCB 77c970e197 winit: rework around `WinitEvent` vs `InputEvent<Special = WinitEvent>` 2021-10-27 14:16:19 +02:00
Victor Brekenfeld 3dde8d70ef Update to input-rs 0.7 2021-10-23 22:49:32 +02:00
Victor Brekenfeld af8863578e Fix trailing_semicolon on egl macro 2021-10-23 15:24:55 +02:00
i509VCB 2e68cfda5a X11 backend 2021-10-17 13:46:15 -05:00
i509VCB 953d9ce158 Implement `Hash` on some enums in `backend::input` 2021-10-17 13:46:07 -05:00
i509VCB 4d93805814 Add `DrmNode` to `backend::drm`. 2021-10-17 13:46:07 -05:00
Poly 10cab4eab9 backend.libseat: Fix dispatch double borrow 2021-08-26 01:00:31 +02:00
Poly df9be985ca Fix Clippy 2021-07-30 18:10:48 +02:00
Poly e3522dfb34
backend.egl: Early return on dead buffers (#352) 2021-07-28 23:31:43 +02:00
Victor Berger 07deba4c1b Documentation fixes in preparation for release 2021-07-25 11:19:09 +02:00
i509VCB 7e4eff529e Put smithay's docs through a spell checker.
I noticed quite a few spelling errors, so I fixed a whole bunch of them.
2021-07-25 09:09:56 +02:00
Victor Berger 5524f1f6bd Deny warnings in CI 2021-07-25 09:09:12 +02:00
Victor Berger 782b21f363 Update dependencies 2021-07-25 09:09:12 +02:00
Victor Brekenfeld 3cc89dcf6e gles2: expose texture id 2021-07-25 08:30:01 +02:00
Victor Brekenfeld 3e4d93dfff egl: Fix segfault in egl logging for empty command strings 2021-07-25 08:29:41 +02:00
Victor Brekenfeld 6933494b6a docs: some backend clarifications 2021-07-16 00:34:00 +02:00
Victor Brekenfeld 945d7128d8 Backend documentation fixes and additions 2021-07-15 20:53:05 +02:00
Victor Brekenfeld 1cf1d4739b buffer: use Size instead of width/height 2021-07-13 23:37:28 +02:00
Victor Brekenfeld 00fb4561b7 gles2: Enable scissor test for optimization.
Skips unnecessary drawcalls outside of the viewable area.
This may happen with textures rendered over the edges of our screen.
2021-07-13 23:28:11 +02:00
Victor Brekenfeld 8bd17d71d2 renderer: Support cropping and scaling 2021-07-13 23:28:07 +02:00
Victor Brekenfeld 56f5557f8c anvil: Move import_bitmap into anvil 2021-07-13 23:21:08 +02:00
Victor Brekenfeld a938c2874f gles2: Allow usage of raw-gl calls out-of-tree 2021-07-13 23:21:08 +02:00
Christian Meissl d09de13bfc use size for transformed functions 2021-07-13 22:38:32 +02:00
Christian Meissl 72e4d910fe implement fractional HiDPI scaling
expose output from output map and return a reference
in find

change scale with keyboard shortcut

scale input coordinates and render location
according to output_scale

scale buffers during rendering

adapt window locations on output scale
change to that the location will appear
to be stable

scale udev pointer location on output scale
change to make the pointer location appear stable

Use a UserDataMap to store the udev output id

Short names for udev outputs for easier output
scale configuration
2021-07-13 22:38:32 +02:00
Victor Berger e60374a459 Fix unused imports 2021-07-13 14:23:21 +02:00
Victor Berger 0bad0a4a62 move input.rs to input/mod.rs, same for libinput.rs 2021-07-13 14:23:21 +02:00
Victor Berger 54ea0d3a74 Introduce Logical/Physical Point/Rectangle 2021-07-13 13:58:06 +02:00
Victor Brekenfeld 510c0a5400 egl: Add debug logging
Add debug logging to egl via the `EGL_KHR_debug` extension similar to our
support for `GL_KHR_debug`. Sadly unlike the GL-extensions the EGL-extension
does not let us provide any user-data for the callback, so we fall back to
using `slog-stdlog`, when available.

Since we only want to initialize this once, when libEGL gets loaded and
not per display, but we need to query the list of supported extensions
first, some initialization steps where moved around.
2021-07-10 20:07:12 +02:00