Dominique Martinet
f0d455f088
drm backend: overflow fixes
...
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
2018-06-30 11:21:22 +09:00
emersion
21928cbe61
Merge branch 'master' into screencontent
2018-05-31 12:33:27 +01:00
emersion
bd430b8620
backend/drm: support multi-planar DMA-BUFs when exporting
2018-05-29 18:47:17 +01:00
emersion
9e26808c28
output, backend/drm: add wlr_output_export_dmabuf
2018-05-29 18:45:45 +01:00
emersion
79683ee497
backend/drm: better connector cleanup, add more logs
2018-05-27 13:21:41 +01:00
Markus Ongyerth
6a46fcc6f2
recalculate cursor projection matrix on set_cursor
...
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.
2018-05-16 15:44:41 +02:00
emersion
13098a18ea
Fix hardware cursors scale & transform
2018-05-09 19:58:18 +01:00
emersion
caf9f9022c
Merge pull request #936 from emersion/full-hardware-cursors
...
output: always use hardware cursors if available
2018-05-04 19:00:45 +01:00
Guido Günther
1637053ef8
drm: only disable atomic modesetting when WLR_DRM_NO_ATOMIC == 1
...
Don't allow any value of the env var to disable atomic mode setting.
2018-05-03 15:37:37 +02:00
emersion
225d182765
output: always use hardware cursors if available
...
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.
2018-05-01 21:38:04 +01:00
emersion
71ca45e2c0
Make sure we don't use others' prefixes
2018-04-25 23:24:58 +01:00
emersion
b0d99f5c67
Remove wlr_ prefix from local symbols
2018-04-25 23:00:46 +01:00
emersion
94fa6c88f4
output: don't emit the mode event if it hasn't changed
...
This also fixes #535 .
2018-04-18 00:15:25 +01:00
emersion
a2391a6047
Fix cursor transform on DRM backend
2018-03-31 20:55:31 -04:00
emersion
c63d94483b
Redesign wlr_texture
...
- 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.
2018-03-24 23:48:32 -04:00
emersion
60bfe0a6aa
backend/drm: remove remaining raw GL call
...
This makes the hardware cursor code a less efficient. Can be
fixed with a GLES3 renderer.
2018-03-21 11:34:08 +01:00
emersion
3581573bdc
render/gles2: make wlr_renderer_begin take viewport size
...
This allows raw GL calls outside wlr_renderer to be removed.
2018-03-21 07:37:09 +01:00
emersion
c41de2d1be
render: split render.h into wlr_renderer.h and wlr_texture.h
2018-03-19 23:16:29 +01:00
emersion
7894fca224
matrix: rename wlr_matrix_texture to wlr_matrix_projection
2018-03-15 21:26:45 +01:00
emersion
876f07e9f1
renderer: replace wlr_texture_get_matrix by wlr_render_texture
2018-03-15 19:31:02 +01:00
emersion
824a95ad19
matrix: use 2D matrices
2018-03-15 15:33:58 +01:00
emersion
d26b67cb06
matrix: unify API, don't use array pointers
2018-03-15 11:10:56 +01:00
emersion
b6a3f240c7
matrix: move to types/
2018-03-15 09:11:27 +01:00
emersion
d24f868bbe
backend/drm: fix cursor hotspot not updated
2018-03-12 19:34:43 +01:00
emersion
92ca4ad474
backend/drm: refactor wlr_drm_connector_set_cursor
2018-03-11 11:40:03 +01:00
Markus Ongyerth
2cea430488
prevent current_mode null on output_enable(false)
...
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.
2018-03-01 15:48:25 +01:00
Markus Ongyerth
a65ef8ea86
restore dpms state on drm resume
...
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.
2018-02-26 18:12:51 +01:00
Guido Günther
d08792bfff
Add alpha to wlr_render_with_matrix
...
so we can use the alpha channel to e.g. blend in textures
2018-02-25 13:47:48 +01:00
Drew DeVault
1d9be89e2d
Revert "ELF Visibility"
2018-02-19 18:01:27 -05:00
Scott Anderson
86269052eb
Explicitly export EFL symbols
2018-02-19 14:26:40 +13:00
emersion
c2e1474010
Reformat all #include directives
2018-02-12 21:29:23 +01:00
emersion
36ead80cd1
Make wlr_signal_emit_safe private
2018-02-12 19:52:47 +01:00
emersion
10ecf871f2
Remove wlr_backend.events.{output_remove,device_remove}
2018-02-12 10:36:43 +01:00
emersion
5e58d46cc1
Add wlr_signal_emit_safe
2018-02-12 09:12:31 +01:00
Drew DeVault
664d7bfe4e
Merge pull request #618 from VincentVanlaer/atomic-gamma
...
Add atomic gamma control
2018-02-10 09:51:09 -05:00
emersion
bf6d245400
Swap buffers with damage
2018-02-09 22:54:14 +01:00
Vincent Vanlaer
2df97ed16a
Set needs_swap on output when gamma changes
2018-02-09 17:29:14 +01:00
Vincent Vanlaer
f5e5d1983b
Do not allow gamma control without a crtc
2018-02-09 17:29:14 +01:00
Vincent Vanlaer
ab011406ad
Add atomic gamma lut size fetching
...
Legacy gamma lut size now uses the new legacy_crtc member of
wlr_drm_crtc. This was Previously doen using old_crtc in
wlr_drm_connector, but since this refers to the crtc that was connected to
the ouput, this could give the wrong result.
2018-02-09 17:29:14 +01:00
Vincent Vanlaer
cc1229e75e
Add atomic gamma setting
2018-02-09 17:29:04 +01:00
emersion
cdd55b5d19
Merge remote-tracking branch 'upstream/master' into output-damage
2018-02-09 14:50:26 +01:00
Markus Ongyerth
08fda567d2
prevents reuse of outdated wlr_output state
...
On the drm output the wlr_drm_connector structs are reused.
This struct contains the wlr_output struct, which is reused as well.
The old code kept modes/edid and output state persistent over hotplug.
This nulls the relevant strings, reads newer edid data and removes old
modes on unplug.
2018-02-06 22:45:37 +01:00
emersion
3d3ea32137
Merge remote-tracking branch 'upstream/master' into output-damage
2018-02-03 00:15:44 +01:00
emersion
bb39277e97
backend/drm: update output enabled property on modeset
2018-02-02 22:28:08 +01:00
emersion
bb4aeb3b2f
backend/drm: support updating cursor when session is paused
2018-02-02 21:01:59 +01:00
Guido Günther
c5aac77692
Fix some typos
...
Prefer initialize over initialise since used more often in the sources.
2018-01-30 16:10:07 +01:00
emersion
d498855b9d
backend/drm: fix hw cursor position on rotated and scaled outputs
...
output: add wlr_output_transformed_resolution
2018-01-30 10:23:35 +01:00
emersion
b47e8c4a1d
backend/drm: do not retry pageflip when swapping buffers
2018-01-28 23:33:38 +01:00
emersion
20e6861021
Do not flush damage if swapping buffers failed
...
This should solve issues with multiple outputs on DRM backend.
2018-01-28 22:39:24 +01:00
emersion
1ee61dbd0f
Merge remote-tracking branch 'upstream/master' into output-damage
2018-01-28 21:22:50 +01:00
Guido Günther
d7dfbd23fa
drm: Use ptrdiff_t instead of intmax_t in format string
...
since we're looking at pointer differences.
Otherwise the build fails on arm like
In file included from ../backend/drm/drm.c:19:0:
../include/wlr/util/log.h:34:17: error: format '%jd' expects argument of type 'intmax_t', but argument 7 has type 'int' [-Werror=format=]
_wlr_log(verb, "[%s:%d] " fmt, _strip_path(__FILE__), __LINE__, ##__VA_ARGS__)
^
../backend/drm/drm.c:462:2: note: in expansion of macro 'wlr_log'
wlr_log(L_DEBUG, "%s: crtc=%ju ovr=%jd pri=%jd cur=%jd", conn->output.name,
^~~~~~~
../backend/drm/drm.c:462:39: note: format string is defined here
wlr_log(L_DEBUG, "%s: crtc=%ju ovr=%jd pri=%jd cur=%jd", conn->output.name,
~~^
%d
2018-01-27 12:29:56 +01:00
emersion
7adf13e284
Fix flickering when switching VT
2018-01-27 11:16:42 +01:00
emersion
8d58ed502b
output: add wlr_output_schedule_frame
2018-01-26 22:39:23 +01:00
emersion
ece2c1e4e2
Damage tracking for transformed outputs
2018-01-26 22:11:09 +01:00
emersion
59c53e8333
Merge remote-tracking branch 'upstream/master' into output-damage
2018-01-21 22:18:06 +01:00
Timidger
f8b9f44ff5
Add con/crtc null check to move_cursor in drm
2018-01-21 15:47:02 -05:00
Timidger
9d4ea146b6
Added crtc null check for other drm funcs
2018-01-21 15:37:23 -05:00
Timidger
4478cf1ddc
Fixes #575
2018-01-21 14:57:24 -05:00
emersion
0365b587f0
output: add damage tracking via buffer age
2018-01-21 00:06:35 +01:00
emersion
4ca38b84ed
backend/drm: fix hardware cursors not moving
...
This adds back `wlr_output::needs_swap`. This allows a backend to
request buffer swaps even if the output isn't damaged. This is
needed by the DRM backend to trigger pageflips when the cursor
moves.
2018-01-20 16:43:14 +01:00
emersion
584f06ad2f
backend/drm: do not try a pageflip is another one is in pending
2018-01-19 23:46:40 +01:00
emersion
f0f97280a0
backend/drm: fix retry pageflip
2018-01-19 23:35:23 +01:00
emersion
53ba9b4eec
Fix output enable in DRM backend
2018-01-07 00:28:21 +01:00
emersion
771263380c
Add wlr_output::enabled
2018-01-04 12:46:15 +01:00
emersion
e737f65e38
Fix cursor on transformed output with DRM backend
2017-12-26 18:16:37 +01:00
Dominique Martinet
be95147385
drm backend: add wlr_output_is_drm
2017-12-19 20:13:49 +01:00
emersion
0256de0002
Add full refresh rate support to custom modes
2017-12-17 18:02:55 +01:00
emersion
466e86b7b2
Merge branch 'master' into surface-transform
2017-12-14 20:31:18 +01:00
emersion
3b4b8953d9
Update output layout when scale or transform changes
2017-12-12 21:58:00 +01:00
emersion
8af779fae6
Fix segfault when moving hardware cursor
2017-12-05 22:23:01 +01:00
emersion
6a69b4419f
Make wlr_output_transform_* functions public, refactoring
2017-12-01 09:15:33 +01:00
Dominique Martinet
f451ea3639
rootston exit: fix drm destroy
...
wlr_drm_connector were being freed without removing them
from the drm->outputs list, segfaulting on destroy
2017-11-01 19:37:35 +01:00
emersion
a15b35aa10
Remove mysterious hotspot switch in DRM backend
2017-11-01 14:36:58 +01:00
emersion
60c018c017
Fix hidden software cursors, fix cursor transformations on DRM backend
2017-11-01 14:25:41 +01:00
emersion
0beae99188
Apply output transformation to pointer events in Wayland backend
2017-11-01 11:00:27 +01:00
emersion
c3b09f73da
Fix cursor hotspot with rotated outputs on DRM backend
2017-10-31 12:30:57 +01:00
emersion
6656e25fd4
Transform cursor hotspot
2017-10-31 12:30:56 +01:00
emersion
1b6c729360
Add wlr_output_cursor
2017-10-31 12:30:03 +01:00
Drew DeVault
fa9c6ecc53
Fix segfault in DRM cursor
2017-10-28 15:09:38 -04:00
emersion
9d587d759f
Do not set hw cursor if disabled when switching VT
2017-10-26 18:58:44 +02:00
Scott Anderson
75f0a6c998
Merge pull request #286 from versusvoid/update-connector-crtc-bindings
...
Update Connector-CRTC bindings after resume in DRM backend
2017-10-23 20:25:40 +13:00
Versus Void
549777ca19
Set crtc field when scanning for DRM connectors
...
and always use it when matching CRTCs with connectors.
Fix deactivated monitors check.
2017-10-22 21:38:30 +00:00
Versus Void
3c31209a97
Reinitialize only changed DRM outputs after setting mode on one
2017-10-22 21:34:56 +00:00
Versus Void
ecb2a2b0d3
Emit output resolution event only when resolution changes
2017-10-22 21:34:56 +00:00
emersion
1cc8f21d8e
Cleanup wlr_gamma_control
2017-10-22 23:11:26 +02:00
emersion
e1d213fccd
Create globals only for enabled outputs in DRM backend
2017-10-22 22:21:23 +02:00
Versus Void
2ab080e79a
Fix index computation in DRM output scan and CRTC match
2017-10-22 10:54:09 +00:00
Drew DeVault
16f35ecbea
Merge branch 'master' into heghe/wl_list
2017-10-21 22:03:48 -04:00
Scott Anderson
bdeffad7e5
Remove drm field from wlr_drm_connector
2017-10-22 10:36:07 +13:00
Scott Anderson
822a9f65a4
Add pointer to backend inside wlr_output
2017-10-22 10:36:07 +13:00
Scott Anderson
4ea84c5765
Remove unnecesary wlr_renderers
2017-10-22 10:36:07 +13:00
Heghedus Razvan
1d716241af
Replace list_t with wl_list in wlr_output
...
Signed-off-by: Heghedus Razvan <heghedus.razvan@gmail.com>
2017-10-20 11:46:09 +03:00
Heghedus Razvan
c03e774636
Replace list_t with wl_list in wlr_drm_backend
...
Signed-off-by: Heghedus Razvan <heghedus.razvan@gmail.com>
2017-10-20 11:46:03 +03:00
emersion
92daa790bb
Allow to update the cursor hotspot without its pixels
2017-10-12 09:40:51 +02:00
Versus Void
641d08ce7e
Transform hotspot with cursor
...
Fix #188
2017-10-06 09:07:08 +03:00
Versus Void
c5df6ca900
Fix memory leaks
2017-10-05 20:01:56 +00:00
Scott Anderson
f193623ca1
Change iface prefix to suffix
2017-10-02 21:44:33 +13:00
Scott Anderson
f6f9c40965
Minor fixes
2017-10-01 22:44:24 +13:00
Scott Anderson
009c3747a8
Multi-GPU DRM
2017-10-01 22:29:25 +13:00
Scott Anderson
eaef028976
Add renderer pointer inside drm_surface
2017-10-01 15:55:25 +13:00