summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* meson.build: reopen main for regular developmentHEADmainMarius Vlad2023-05-171-1/+1
| | | | Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* build: bump to version 12.0.0 for the official release12.0.0Marius Vlad2023-05-171-1/+1
| | | | Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* build: bump to version 11.0.93 for the RC1 release11.0.93Marius Vlad2023-05-101-1/+1
| | | | Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* libweston: consolidate 'Using GL/Pixman renderer' log messagePhilipp Zabel2023-05-045-5/+4
| | | | | | | | | | | | Consolidates the 'Using GL/Pixman renderer' message emitted by the PipeWire, RDP, VNC, and X11 backends by moving the weston_log() into weston_compositor_init_renderer(). Only print the message after initializing the renderer has succeeded. This effectively adds the message to the DRM, headless, and Wayland backends. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
* meson.build: Bump to version 11.0.92 for the beta release11.0.92Marius Vlad2023-05-031-1/+1
| | | | Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* clients/scaler: check viewporter availabilitySimon Ser2023-05-021-0/+5
| | | | | | | | I just got bitten by this: I thought my compositor was dropping the viewport somehow, but it just didn't expose the viewporter global. Signed-off-by: Simon Ser <contact@emersion.fr>
* backend-drm: drop HDR without libdisplay-infoPekka Paalanen2023-04-282-2/+6
| | | | | | | | | | | Hardcode the ad hoc EDID parser to always claim that only SDR is supported. Even though libdisplay-info is not yet asked for HDR capabilities, it shall be the only way to see them. To be nicer to experimenters, main.c adds a note that you really need libdisplay-info if you want to play with HDR. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* backend-drm: use libdisplay-infoPekka Paalanen2023-04-284-0/+55
| | | | | | | | | | | | Add libdisplay-info as a better alternative for parsing EDID. This way we do not need to extend Weston's ad hoc parser for new things that especially HDR support requires. Eventually the ad hoc parser will be deleted and libdisplay-info becomes a hard dependency for the drm-backend, reducing our maintenance burden. Unlike the ad hoc code, libdisplay-info has automated CI testing. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* CI: install libdisplay-infoPekka Paalanen2023-04-283-2/+11
| | | | | | DRM-backend will want to use this. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* CI: always use wrap-mode=nofallbackPekka Paalanen2023-04-282-11/+11
| | | | | | | | | We want to install all dependencies ourselves to know exactly what we get. I accidentally got some wraps built when I did not expect so. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* backend-drm: add drm_head_info_from_edid()Pekka Paalanen2023-04-281-14/+24
| | | | | | | | | | Move the ad hoc filling code into a separate function. Then we can easily add an alternative implementation of the new function using libdisplay-info without messing up the code any more than necessary. Pure refactoring. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* backend-drm: move struct drm_edid definitionPekka Paalanen2023-04-282-7/+7
| | | | | | | Now that this is used only internally in modes.c, move it there. It will not be used with libdisplay-info. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* backend-drm: let EDID parser return malloc'd stringsPekka Paalanen2023-04-282-35/+46
| | | | | | | | | | | This will make adding libdisplay-info as another EDID parser easier, because libdisplay-info always returns malloc'd strings. To make things easier to extend as well, I introduce struct drm_head_info. The libdisplay-info case will likely return more information than this in the future. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* build: set project, not global, argumentsPekka Paalanen2023-04-281-1/+1
| | | | | | | | | | | Global arguments leak into Meson subprojects. Let's not do that. Specifically, -fvisibility=hidden leaks into a future sub-project libdisplay-info, where it results the DSO not exporting any symbols. Libdisplay-info uses a linker script to define the exported symbols and not visiblity. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* tests/color-icc-output: add ICC VCGT testsLeandro Ribeiro2023-04-279-13/+74
| | | | | | | | | | | | | | | There are some ICC profiles that contain something named VCGT tag. These are usually power curves (y = x ^ exp) that were loaded in the video card when the ICC profile was created. So the compositor should mimic that in order to use the profile. Weston already has support for that, but our ICC profile tests were missing this case. This adds such tests. For testing purposes, we have added tests with different exponents per color channel. Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
* tests/color-icc-output: assert that dimension is not zero when creating clutLeandro Ribeiro2023-04-271-0/+2
| | | | | | | | Without that we may crash when trying to create a PTYPE_CLUT ICC profile with dimension zeroed. This would be wrong, so with this change we are basically validating the test case arguments. Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
* tests/color-icc-output: differentiate test name based on ICC profile typeLeandro Ribeiro2023-04-271-6/+6
| | | | | | | For now we have some tests with the same name. Differentiate them based on the ICC profile type that they build: CLUT vs matrix shaper. Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
* meson.build: Bump to version 11.0.91 for the alpha release11.0.91Marius Vlad2023-04-261-1/+1
| | | | Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* pipewire-[backend|plugin]: Add timestamps to buffersRobert Mader2023-04-202-2/+8
| | | | | | | | | | | | | In Pipewire and Gstreamer terminology Weston is a "live" source (as we do not explicitly set PW_KEY_STREAM_IS_LIVE to false). Such sources, be it compositors, cameras or microphones, usually set the current system time as timestamps on buffers in order to make life easier for consumers. Thus let's do so as well. This notably helps when recording using `gstpipewiresrc` with the `keepalive-time` property set. Signed-off-by: Robert Mader <robert.mader@collabora.com>
* clients/simple-dmabuf-feedback: get buffer size from configure eventsSebastian Wick2023-04-201-6/+17
| | | | | | | | | instead of the output mode. The mode doesn't say anything about the actual output geometry which could lead to buffers extending the output region on rotated monitors. This now also works with moving the window to different monitors. Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
* clients/simple-dmabuf-feedback: create buffers on demandSebastian Wick2023-04-201-34/+42
| | | | Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
* clients/simple-dmabuf-feedback: fullscreen surface from the startSebastian Wick2023-04-201-2/+1
| | | | Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
* clients/simple-dmabuf-feedback: fix dangling pointersSebastian Wick2023-04-201-1/+6
| | | | | | to presentation feedback objects. Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
* CONTRIBUTING.md: Fix link for patchworkMarius Vlad2023-04-201-1/+1
| | | | | | | Noticed this giving a 404 when accessing and it seems that the correct link is with the 's'. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* CONTRIBUTING.md: Inform users that they'd need to ask for permsMarius Vlad2023-04-201-17/+25
| | | | | | | | | | Due to the latest developments fdo no longer allows new users to fork the Weston project so let's inform users about that. This also swaps 'Finding something to work on' with 'Sending patches' paragraph as the first thing users need to look into. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* backend-pipewire: remove linear modifier for nowPhilipp Zabel2023-04-191-1/+0
| | | | | | | | | | | | As of PipeWire version 0.3.69, the gstpipewiresrc element uses the existence of a modifier as a trigger to select dmabuf memory, failing caps negotiation as we don't send DMA buffers yet. Remove the linear modifier for now, to be added back when we add dmabuf support to the PipeWire backend. This allows testing the PipeWire backend with current GStreamer + PipeWire. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
* backend-pipewire: pass backend to weston_pipewire_output_api::create_head()Philipp Zabel2023-04-192-11/+11
| | | | | | | | | | | Pass the backend instead of the compositor to the PipeWire output API create_head() method and increment the API version. That way the backend will not have to find the backend pointer from the compositor. This is trivial now, but in the multi-backend case would entail iterating over all backends to find the correct one. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
* backend-drm: obtain DRM backend from listener in session_notify()Philipp Zabel2023-04-191-1/+2
| | | | | | | | | | | The session_listener is embedded in the DRM backend structure. Use this to obtain the DRM backend with container_of(). That way the DRM backend will not have to be found from the compositor. This is trivial now, but in the multi-backend case would entail iterating over all backends to find the correct one. Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
* tests/xwayland: Don't leak XCB replyDaniel Stone2023-04-191-0/+1
| | | | Signed-off-by: Daniel Stone <daniels@collabora.com>
* xwayland: Reuse weston_client_launchDaniel Stone2023-04-191-82/+47
| | | | | | | | | | | | | | Now that our process-launching internals are identical between the (still-misnamed) weston_client_launch and the frontend's Xwayland launcher, we can reuse the internals instead of open-coding it. As a result, we now additionally prevent Xwayland from inheriting Weston's signal mask, by clearing SIG_UNBLOCK on all signals. This should have no observable effect as we do not depend on signal handling within Xwayland, instead using the displayfd readiness mechanism since c2f4201ed2a8. Signed-off-by: Daniel Stone <daniels@collabora.com>
* xwayland: Use an array for CLOEXEC FDsDaniel Stone2023-04-191-11/+23
| | | | | | | This gets us closer to the implementation of weston_client_launch, so we can reuse that instead of open-coding it. Signed-off-by: Daniel Stone <daniels@collabora.com>
* xwayland: Don't leak fds on failureDaniel Stone2023-04-191-2/+8
| | | | | | | Trivial fixup to not leak socketpairs if we need to exit early in the function. Signed-off-by: Daniel Stone <daniels@collabora.com>
* frontend: Split process and client handlingDaniel Stone2023-04-192-55/+64
| | | | | | | | | | | weston_client_start() takes only a single path with no arguments, forking a process to start that command line, and creating a client from it. weston_client_launch(), which was always misnamed and will be renamed in the next patch, now only handles the child process and nothing else. Signed-off-by: Daniel Stone <daniels@collabora.com>
* frontend: Use array for clearing CLOEXEC in childDaniel Stone2023-04-191-7/+15
| | | | | | | | When we launch a child, we need to clear CLOEXEC on any FDs we want to survive the exec. Use an array for doing this, so it's more generic and we can allow callers to pass in their own. Signed-off-by: Daniel Stone <daniels@collabora.com>
* frontend: Don't log when an unknown child process exitsDaniel Stone2023-04-191-3/+2
| | | | | | | This can happen and it's not an error condition. No reason to shout about it. Signed-off-by: Daniel Stone <daniels@collabora.com>
* frontend: Add FDSTR_INIT macroDaniel Stone2023-04-194-7/+9
| | | | | | This initialises fdstr to 'safe' values so we can reliably deinit them. Signed-off-by: Daniel Stone <daniels@collabora.com>
* screenshooter: Use wl_client, not wet_processDaniel Stone2023-04-191-7/+13
| | | | | | | See discussion in wayland/weston!951 for the reasoning why: the screenshooter must only deal with wl_client. Signed-off-by: Daniel Stone <daniels@collabora.com>
* screenshooter: Exit early when screenshot in progressDaniel Stone2023-04-191-0/+3
| | | | | | | When we're asked to take a screenshot but are already taking one, just exit out of the function early. Signed-off-by: Daniel Stone <daniels@collabora.com>
* screenshooter: Rename compositor_destroy_listenerDaniel Stone2023-04-191-5/+7
| | | | | | Make it more descriptive in order to add a client_destroy_listener. Signed-off-by: Daniel Stone <daniels@collabora.com>
* ivi-layout: simplify APIMichael Olbrich2023-04-193-363/+157
| | | | | | | | | | | Use assert() to check for invalid NULL arguments. Something like that happens during development and assert() makes it easier to find the error. And it avoids unnecessary additional error handling. The hmi-controller asserted anyways so this just moves the assert on level deeper. Other controller probably do the same thing, or don't check the return values at all. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
* hmi-controller: prepare for API simplificationMichael Olbrich2023-04-191-57/+24
| | | | | | | | | The return values for most of the API functions will be removed and replaced by asserts. So remove the return value checks. The end result will be the same: These functions only fail for incorrect API usage, so basically the asserts are moved from the hmi-controller into the shell. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
* tests: ivi-shell: prepare for API simplificationMichael Olbrich2023-04-193-384/+63
| | | | | | | | The return values for most of the API functions will be removed and replaced by asserts. So checking return values will no longer work and passing invalid arguments will trigger asserts. Modify and remove the tests accordingly. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
* simple-dmabuf-v4l: Add support to NV12 devices that combine planesBram Stolk2023-04-181-19/+145
| | | | | | | | | | There are V4L2 devices that will output NV12 but will do so using one dma buffer. To support this, we need to add the same dma buffer twice but with a different offset for the chrominance plane. Also supports situations of 3 planes (e.g. YU12) inside a single dma buffer. Fixes: #712 Signed-off-by: Bram Stolk (b.stolk@gmail.com)
* doc, man: document PipeWire backendPhilipp Zabel2023-04-183-0/+7
| | | | | | | | Add documentation for the PipeWire backend. Co-authored-by: Michael Tretter <m.tretter@pengutronix.de> Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com> Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
* backend-pipewire: add PipeWire backendPhilipp Zabel2023-04-1810-0/+1262
| | | | | | | | | | | | | | | | | | | Add a separate PipeWire backend based on the PipeWire plugin. The backend requires PipeWire 0.3.x. The PipeWire backend can be used as a standalone-backend backend for streaming and composing Wayland clients to PipeWire. The backend supports the on-demand creation of heads via the weston_pipewire_output_api_v1. It also supports per-output pixel format configuration via a gbm-format option. Multiple PipeWire outputs can be created by setting the num-outputs option in the [pipewire] section. Co-authored-by: Michael Tretter <m.tretter@pengutronix.de> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
* backend-drm: schedule connector disable for detached headMichael Tretter2023-04-183-8/+26
| | | | | | | | | | | | | | Currently, if a head is detached, the entire state of the device is invalidated to make sure that the connector is disabled on the next atomic commit. Side effect of the invalid state is that all planes are disabled on the next commit. This includes planes that are used with a different head that is not part of the next atomic commit. Disabling the planes of unrelated outputs causes a blanking of these outputs until output is repainted and the plane is reenabled. Store the detached heads in a list on the output and disable the connectors for all heads in this list in the next atomic commit. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
* backend-vnc: pass vnc_backend to vnc_head_create()Philipp Zabel2023-04-171-10/+3
| | | | | | | | | | | | Pass the VNC backend to vnc_head_create(). That way the already known backend will not have to be found from the compositor. This is trivial now, but in the multi-backend case would entail iterating over all backends to find the correct one. Also remove the now unused to_vnc_backend() helper. Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
* backend-rdp: pass rdp_backend to rdp_head_create()Philipp Zabel2023-04-173-12/+5
| | | | | | | | | | | | Pass the RDP backend to rdp_head_create(). That way the already known backend will not have to be found from the compositor. This is trivial now, but in the multi-backend case would entail iterating over all backends to find the correct one. Also remove the now unused to_rdp_backend() helper. Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
* libweston: pass backend to weston_windowed_output_api::create_head()Philipp Zabel2023-04-175-29/+31
| | | | | | | | | | | Pass the backend instead of the compositor to the windowed output API create_head() method and increment the API version. That way the backend will not have to find the backend pointer from the compositor. This is trivial now, but in the multi-backend case would entail iterating over all backends to find the correct one. Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>
* backend-vnc: remove output move listener leftoversPhilipp Zabel2023-04-151-3/+0
| | | | | | | | The output move listener removal was incomplete. Remove the remaining bits to fix a segfault on shutdown. Fixes: 40f5eaf401f0 ("backend-vnc: use output power_state to disable repainting while disconnected") Signed-off-by: Philipp Zabel <philipp.zabel@gmail.com>