Age | Commit message (Collapse) | Author |
|
|
|
|
|
This commit handles better situations in which the number of
connected outputs is greater than the number of available CRTCs.
It'll enable as many outputs as possible, and transfer CRTCs to
outputs that need one on unplug.
This changes CRTC and plane reallocation to happen after scanning
DRM connectors instead of on modeset.
This cleanups CRTCs and planes on unplug to allow them to be
re-used for other outputs.
On modeset, if an output doesn't have a CRTC, the desired mode is
saved and used later when the output gains a CRTC.
Future work includes giving priority to enabled outputs over
disabled ones for CRTC allocation. This requires the compositor to
know about all outputs (even outputs without CRTCs) to properly
modeset outputs enabled in the compositor config file and disable
outputs disabled in the config file.
|
|
I failed to see this issue with Valgrind because of the +1.
|
|
This prevents receiving modesetting requests from the compositor
while we don't have the whole picture (ie. while we haven't yet
scanned all connectors).
This also makes connectors without CRTCs disabled (they can't be
enabled yet even if some CRTCs are free'd -- this is future work).
|
|
This correctly frees CRTCs when disabling outputs without setting
a mode.
|
|
This will indicate the user properly when multi-GPU is not supported by
their GPU driver.
|
|
Create rendering resources on parent GPU, so that we can sample the
passed in texture properly. The cursor buffer needs to remain on the
same GPU.
|
|
|
|
|
|
|
|
|
|
Allow to add additional modes to outputs
|
|
This allows to add additional modes to the list of available video modes
using VESA Coordinated Video Timing information.
Closes #1080
|
|
|
|
These operations are done in 32-bit arithmetics before being casted to 64-bit,
thus can overflow before the cast.
Casting early fixes the issue.
Found through static analysis
|
|
|
|
|
|
|
|
|
|
Updates the projection matrix for the cursor plane in the DRM backend,
when the cursor is set, so new cursor are uploaded with the correct
transformation.
|
|
|
|
output: always use hardware cursors if available
|
|
Don't allow any value of the env var to disable atomic mode setting.
|
|
This changes the `wlr_output_impl.set_cursor` function to take a
`wlr_texture` instead of a byte buffer. This simplifies the
DRM and Wayland backends since they were creating textures from
the byte buffer anyway.
With this commit, performance should be improved when moving the
cursor since outputs don't need to be re-rendered anymore.
|
|
|
|
|
|
This also fixes #535.
|
|
|
|
- Textures are now immutable (apart from those created from raw
pixels), no more invalid textures
- Move all wl_drm stuff in wlr_renderer
- Most of wlr_texture fields are now private
- Remove some duplicated DMA-BUF code in the DRM backend
- Add more assertions
- Stride is now always given as bytes rather than pixels
- Drop wl_shm functions
Fun fact: this patch has been written 10,000 meters up in the air.
|
|
This makes the hardware cursor code a less efficient. Can be
fixed with a GLES3 renderer.
|
|
This allows raw GL calls outside wlr_renderer to be removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The current mode was set to NULL to abuse it as state variable
persisting DRM suspend/resume, this results resulted in a segfault on
normal DPMS cycle.
This reverts that change and uses the wlr_output enabled variable, which
also persists and makes more sense.
|
|
If there is no current mode, set outputs to dpms off in drm resume.
Sets current mode to null on disable to ensure this can be checked.
|
|
so we can use the alpha channel to e.g. blend in textures
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Add atomic gamma control
|