Age | Commit message (Collapse) | Author |
|
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.
|
|
It doesn't look like there's any motion on a fix from the AMDGPU side,
and using the legacy interface for this isn't so bad.
|
|
|
|
This will indicate the user properly when multi-GPU is not supported by
their GPU driver.
|
|
These aren't used anymore and crashes when the gbm_bo tries to get
destroyed (e.g. on hotplug).
|
|
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.
|
|
All screens on secondary GPU in multiple GPU configurations
was flipped 180.
The flipped screens was always on secondary card (the primary card
was always correct).
Tested on nouveau with:
WLR_DRM_DEVICES=/dev/dri/card1:/dev/dri/card2
WLR_DRM_DEVICES=/dev/dri/card2:/dev/dri/card1
The commit is fixing this problem. Now all screens are "normal".
|
|
backend_get_renderer() is now returning the renderer of the primary GPU, instead
of its own renderer, since that's the thing which actually does all of the "real"
rendering
wlr_multi_backend_add() is now adding all subbackends (otherwise only one GPU
is handled).
credits: @ascent12
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
render: bind wl_drm in renderer
|
|
Compositors now have more control over how the backend creates its
renderer. Currently all backends create an EGL/GLES2 renderer, so
the necessary attributes for creating the context are passed to a
user-provided callback function. It is responsible for initializing
provided wlr_egl and to return a renderer. On fail, return 0.
Fixes #987
|
|
|
|
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.
|
|
|
|
Untie wlr_backend from wlr_renderer
|
|
|
|
|
|
|
|
|
|
- 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.
|
|
|
|
|