Commit Graph

847 Commits

Author SHA1 Message Date
Victor Brekenfeld 3530ac7335 egl: stop egl spamming nclassified messages 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 359c060e0f space: apply transform for output_geometry 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 64c535464a swapchain: Keep buffers on reset and wipe metadata
We make no guarantees about the buffer contents after a fresh allocation
in smithay anyway, so to avoid expensive recreation of a bunch of
resources, try to keep the buffers on reset and just wipe all its
metadata (most importantly the age).
2022-01-04 12:50:39 +01:00
Victor Brekenfeld 8536fa90a1 desktop: streamline custom elements logic 2022-01-04 12:50:39 +01:00
Victor Brekenfeld bb1e68c916 space: Add support for drawing custom elements 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 5b85333eaf desktop: clamp damage to bbox 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 827a3c8c2a desktop: Fixup intersection calls 2022-01-04 12:50:39 +01:00
Victor Brekenfeld a948ff8829 space: commit does not need mutable self 2022-01-04 12:50:39 +01:00
Victor Brekenfeld a20fd0c65d window: cache bbox 2022-01-04 12:50:39 +01:00
Victor Brekenfeld d84a66e053 desktop: api cleanups 2022-01-04 12:50:39 +01:00
Victor Brekenfeld d7350d18ee desktop: fix negative damage values 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 94968e2d0f desktop: track damage per space/output 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 3b39d780fe desktop: layer-shell support 2022-01-04 12:50:39 +01:00
Victor Brekenfeld cea88fdde0 desktop: Various cleanups 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 31b308836f renderer: Use fine grained damage for rendering
Up until now we always redrew the whole windows, which worked
fine - except for some transparency issues - but left performance
on the table.

So now we use instancing to render only the actually damaged regions
inside the window, which also fixes our few rendering issues.

We also use a shader now for clearing the screen to use instancing as
well and lower the amount of draw calls at the begin of a frame for
clearing parts of it.

And while we are add it we remove the last rendering artifacts
by optimizing the damage vector by deduplicating and merging rectangles.
2022-01-04 12:50:39 +01:00
Victor Brekenfeld f55f1bbbe0 desktop: handle xdg-popups 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 90f7d53a3a space: fixup miscalculations 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 25b74e2eaa space: change output_for_window to return Vec 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 7578fab9cf desktop: map_window remove unnecessary Result and activate 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 2c0ae025de desktop: Track surface enter/leave for outputs 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 44829d8fba desktop: Only render surface damage, if window was not moved 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 98906555f5 desktop: Add new desktop abstractions module
Adds a new `Window` and `Space` abstraction to make it easier
to handle windows of various shells and their positions in a
compositor space.
2022-01-04 12:50:39 +01:00
Victor Brekenfeld 76787fb7df renderer: Account for OpenGLs coordinate system in the Gles2Renderer 2022-01-04 12:50:39 +01:00
Victor Brekenfeld eccdd5221c renderer: Make Transform::transform_size use a Size instead of u32 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 57f45d9941 renderer: Allow clear calls on specific regions 2022-01-04 12:50:39 +01:00
Victor Brekenfeld 55ec6dc7cb output: Add userdata to wayland output object
Anvil's output map has a wrapper type `Output`, that largely stores
information of the wayland `Output` type, that is just not accessible.
Lets change that and make it possible to associate userdata with the
output to remove the need to use another wrapper type.
2022-01-04 12:50:39 +01:00
Victoria Brekenfeld 06704fb3be seat: Export KeysymHandle 2022-01-01 23:45:42 +01:00
Victor Berger c232b5c108 backend: Make SwapBuffersError Send+Sync
This makes using anyhow with Smithay easier.
2021-12-29 16:34:53 +01:00
dragonn 5ce5a8abcc call resize after applying new pending model 2021-12-23 17:49:39 +01:00
dragonn 9a7cd23093 make use_mode use the new mode size on test_buffer 2021-12-23 17:47:12 +01:00
Victor Brekenfeld 6d51d1dea0 x11: Don't use modifiers on old dri3 versions
Older dri3 versions (< 1.2) do only support dmabufs with one plane.
Lets limit the modifiers early, if we detect that, so we do not end
up allocating buffers the interface does not accept.
2021-12-22 21:08:44 +01:00
Victor Brekenfeld 94b3ce8e6f x11: Add virtual Device{Added, Removed} events 2021-12-22 19:33:33 +01:00
Victor Brekenfeld cc6225ce21 x11: Move window from Metadata into events
Some events (especially from xinput) cannot be cleanly mapped to a window.
Instead of requiring every event to come with a `Window` reference, move
the window into those events, that have one.
2021-12-22 19:33:33 +01:00
Victoria Brekenfeld 0afebf5fdb
Merge pull request #437 from i509VCB/x11/fix-error-drop 2021-12-21 02:18:59 +01:00
Victor Brekenfeld 5d8ac82688 geometry: Don't compute intersection for non-overlapping rects 2021-12-20 20:10:09 +01:00
i509VCB ed105528de
x11: emit errors when presentation fails 2021-12-17 19:14:14 -06:00
i509VCB d6051a873f
x11: move X11Surface to submodule to reexport and reorganize internal functions 2021-12-17 16:54:18 -06:00
Victoria Brekenfeld c0b9ecbcdf
Merge pull request #434 from Smithay/feature/geometry_additions
Geometry additions
2021-12-17 22:35:44 +01:00
i509VCB 22204f2845
x11: internal window to send close backend event to 2021-12-17 12:06:30 -06:00
Victor Brekenfeld 8022a60089 utils: documentation fixup 2021-12-17 14:47:53 +01:00
Victor Brekenfeld 7ad5edd6a3 utils: make all geometry operations saturating 2021-12-17 14:47:53 +01:00
Victor Brekenfeld 4628fc6bcc utils: Add intersection to Rectangle 2021-12-17 14:47:53 +01:00
Victor Brekenfeld 1a7027eefc utils: overlap support on-the-fly rect conversion 2021-12-17 14:47:43 +01:00
Victor Brekenfeld ee5c14e673 utils: use stable memory layout for Point/Size/Rectangle 2021-12-17 14:47:43 +01:00
Victor Brekenfeld 2f683112a7 utils: Add min/max to Coordinate 2021-12-17 14:47:43 +01:00
Victor Brekenfeld 95b915d429 utils: Make Coordinate public 2021-12-17 14:47:43 +01:00
Victor Brekenfeld 37adc1174c utils: Add Rectangle::contains_rect 2021-12-17 14:47:43 +01:00
Victor Brekenfeld 3c7bbf65c4 utils: Add Rectangle::to_i32_* variants 2021-12-17 14:47:43 +01:00
i509VCB b80281dcc8
x11: fix window drop not destroying 2021-12-15 20:04:53 -06:00
i509VCB 09ce3da742 x11: Do not hold lock when dispatching events 2021-12-06 16:39:02 -06:00