- 14 May, 2020 4 commits
-
-
xichen authored
plane-assignment in `drm_output_propose_state`, we are removing the restriction of exclusively present for view to be assigned on a plane, as in the case of cloning outputs, no views would fit this condition. Now one view can be assigned to different planes on different outputs. Signed-off-by:
xichen zhou <sichem.zh@gmail.com>
-
xichen authored
Right now damages are tracked for every output, so there is no actual reason to keep the damage in the plane. `weston_view_damage_below` now works a bit differently, it now directly updates on `output->damage` if the view resides on primary_plane. This will work for the case like `weston_view_unmap`. Signed-off-by:
xichen zhou <sichem.zh@gmail.com>
-
xichen authored
This patch enables per output view damage tracking. At `view_accumulate_damage` Views will copy its damage to all the outputs they touch, later be combined in `output_update_damage`. It also adds per-output link in `weston_view`, this list is built in `compositor_build_view_list` along with global view list. This enables each output to go through only views it touches. Signed-off-by:
xichen zhou <sichem.zh@gmail.com>
-
xichen authored
By moving `compositor_accumulate_damage` outside the `weston_repaint_output`, we are able to properly track the damage of every output before the damage gets flushed. This design should be able to handle overlapping outputs. The damage tracking at every weston_output level Mainly adopted from patch here: https://lists.freedesktop.org/archives/wayland-devel/2014-March/013571.htmlSigned-off-by:
xichen zhou <sichem.zh@gmail.com>
-
- 12 May, 2020 1 commit
-
-
Ken C authored
-
- 07 May, 2020 2 commits
-
-
Peter Hutterer authored
Make use of the templating structure the templates provide. No functional changes in the end, container-build's default behavior is the previously called container-if-not-exists template. Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net>
-
Peter Hutterer authored
The project was moved a while ago to make it look less waylandy. Same sha, so no actual changes here. Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net>
-
- 29 Apr, 2020 1 commit
-
-
Michael Olbrich authored
If a surface has subsurfaces then the surface itself is in the subsurface list. To avoid printing it again there is a check to skip the child view, if it is the same as the current view. However, this fails when a surface with subsurfaces has two (or more) views: The check to skip the parent fails for the other view and the two views are printed again and again until a stack overflow occurs. So instead check if the parent view of the subsurface view is the current view. This way, any view that does not belong to a real subsurface is skipped. As a side effect, this ensures that each view of the subsurfaces is only printed once at the correct place in the hierarchy. Signed-off-by:
Michael Olbrich <m.olbrich@pengutronix.de>
-
- 06 Apr, 2020 1 commit
-
-
Paul Menzel authored
Signed-off-by:
Paul Menzel <pmenzel@molgen.mpg.de>
-
- 30 Mar, 2020 1 commit
-
-
Tomohito Esaki authored
Without universal plane, the weston crashes with null pointer access in set_gbm_format function because that function called before output enable function. By changing timing to set color format for primary plane in this case, this issue fixes. Signed-off-by:
Tomohito Esaki <etom@igel.co.jp>
-
- 20 Mar, 2020 9 commits
-
-
Daniel Stone authored
pixman_renderer_output_create currently takes a flags enum bitmask for its options. Switch this to using a structure, so we can introduce other non-boolean options. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
gl_rendererer's output_pbuffer_create has a lot of arguments now. Add a structure for the options to make it more clear what is what. This is in preparation for adding bare-integer arguments which are ripe for confusion when passing positional arguments. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
gl_rendererer's output_window_create has a lot of arguments now. Add a structure for the options to make it more clear what is what. This is in preparation for adding bare-integer arguments which are ripe for confusion when passing positional arguments. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
gl_rendererer's output_create has a lot of arguments now. Add a structure for the options to make it more clear what is what. This is in preparation for adding bare-integer arguments which are ripe for confusion when passing positional arguments. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
The renderer buffer size is usually the same size as the current mode, so we were taking the dimensions from the currently-set mode. However, using current_mode is quite confusing in places when it comes to scale, and it also hampers our ability to do mode switches, as well as to introduce a future option which will let the renderer use a smaller buffer than the output and display scaled. Simply take the dimensions of the renderer's output buffer from the buffer itself. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
This condition inside drm_output_render() checks if we can reuse the existing renderer buffer for the primary plane; this occurs in mixed-mode composition where a client buffer promoted to a plane has changed, but the primary plane is unchanged. We accomplish this by checking if there is no damage on the primary/renderer plane, and then if there is already a renderer buffer active on the primary plane: in that case, we can reuse the buffer we already have. There was a further condition checking if the width and height were identical. This was designed to prevent against issues on mode changes. However, runtime mode changes are already quite broken, and a mode change will also cause damage on the full plane. We can simply remove this condition. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
Output and mode can never be NULL. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
When libweston-desktop kills an xdg-shell client because it has failed to configure its surface as demanded, be more helpful by explaining exactly what the error is. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
- 18 Mar, 2020 1 commit
-
-
Daniel Stone authored
In order to start the repaint loop, the Wayland backend tries to damage the full SHM buffer, but doesn't actually damage the full area if we have a frame. Store the buffer's width and height alongside the buffer itself, so we can damage the full area when required. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
- 12 Mar, 2020 1 commit
-
-
Pekka Paalanen authored
This test ensures that "pixman-renderer: half-fix bilinear sampling on edges" keeps on working. Unlike in the original report wayland/weston#373, here we use buffer scale 2 instead of output scale 2 to trigger bilinear filter. The effect is the same, the actual resulting image in the failing case is just a little different. This is so that it will be easy to add more viewport screenshooting tests in this program in the future. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
- 11 Mar, 2020 4 commits
-
-
Pekka Paalanen authored
There will be a new test program that wants to share this code. No behavioral changes. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
Pekka Paalanen authored
There will be a new test program using viewports and would like to share this bit of code. There are two behavioral changes: - Compositor wp_viewporter interface version is no longer checked. - client_create_viewport() does not leak the viewporter object. test_viewporter_double_create needs to call bind_to_singleton_global() itself so that the viewporter object still exists when the error event arrives. Otherwise error verification fails. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
Pekka Paalanen authored
When weston-desktop-shell uses a solid color for the wallpaper, it creates a 1x1 buffer and uses wp_viewport to scale that up to fullscreen. It's a very nice memory saving optimization. If you also have output scale != buffer scale, it means pixman-renderer chooses bilinear filter. Arguably pixman-renderer should choose bilinear filter also when wp_viewport implies scaling, but it does not. As w-d-s always sets buffer scale from output scale, triggering the bilinear filter needs some effort. What happens when you sample with bilinear filter from a 1x1 buffer, stretching it to cover a big area? Depends on the repeat mode. The default repeat mode is NONE, which means that samples outside of the buffer come out as (0,0,0,0). Bilinear filter makes it so that every sampling point on the 1x1 buffer except the very center is actually a mixture of the pixel value and (0,0,0,0). The resulting color is no longer opaque, but the renderer and damage tracking assume it is. This leads to the issue 373. Fix half of the issue by using repeat mode PAD which corresponds to OpenGL CLAMP_TO_EDGE. GL-renderer already uses CLAMP_TO_EDGE always. This is only a half-fix, because composite_clipped() cannot actually be fixed. It relies on repeat mode NONE to work. It would need a whole different approach to rendering potentially non-axis-aligned regions exactly like GL-renderer. Fixes: wayland/weston#373Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
Daniel Stone authored
As in aaf35586, we want to fail when we are passed an invalid transform name, not just blindly configure on using the normal transform. The previous commit missed the callsite from the headless backend's command-line parsing. Fix this so that headless fails when an invalid transform is specified on the command line. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
- 10 Mar, 2020 1 commit
-
-
Pekka Paalanen authored
When a test fails and it produces a difference image, also compute the min/max per-channel signed difference statistics. These numbers can be used to adjust the fuzz needed for fuzzy_match_pixels() to pass. Otherwise one would have to manually inspect the reference and result images and figure out the values. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
- 06 Mar, 2020 5 commits
-
-
Daniel Stone authored
If the output only has a single weston_head attached to it, take its declared transform as the default transform. With the previous patches, this allows a device declaring the KMS 'panel orientation' property (e.g. through DeviceTree) to autoconfigure to the correct display rotation when running Weston. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Lucas Stach authored
The KMS 'panel orientation' property allows the driver to statically declare a fixed rotation of an output device. Now that weston_head has a transform member, plumb the KMS property through to weston_head so the compositor can make a smarter choice out of the box. Signed-off-by:
Lucas Stach <l.stach@pengutronix.de> [daniels: Extracted from one of Lucas's patches] Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Lucas Stach authored
Like physical size, subpixel arrangement, etc, transform advises of a physical transform of a head, if present. This commit adds the transform member and setter to weston_head, however it is currently unused. Signed-off-by:
Lucas Stach <l.stach@pengutronix.de> [daniels: Extracted from one of Lucas's patches.] Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
If an invalid transformation is provided for an output, fail the output configuration rather than continuing on using whatever we chose as the default transform. After !383, this will result in configurations using the old definition failing and exiting, rather than continuing on the wrong way around. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
Daniel Stone authored
Regardless of the default transform passed in, weston_parse_transform would always return 'normal' if there was an output section. This is because, if a section was declared for that output, it would ask weston_config for the transform, with the default being 'normal'. Fix it so we return the passed-in default transform when we have a matching output section without a transform key. If the transform is declared but invalid, we can remove the line resetting to the default transform, because we've already set the default transform up top. Signed-off-by:
Daniel Stone <daniels@collabora.com>
-
- 05 Mar, 2020 2 commits
-
-
Guillaume Champagne authored
b_lundef was overriden for the RDP backend since it triggered linking errors due to functions that were defined in a missing dependency. This issue was fixed, so the override is removed. The global project's linker parameters are now applied to the RDP backend. Signed-off-by:
Guillaume Champagne <champagne.guillaume.c@gmail.com>
-
Guillaume Champagne authored
The RDP backend uses functions defined by the Windows Portable Runtime library (WinPR). The library's code is contained within FreeRDP repository, but it is packaged as its own library (seperate pkg-config file). WinPR is added as a dependency to the RDP backend. The version 2.0 is choosen as the version to on since the backend depends on FreeRDP 2.0. Signed-off-by:
Guillaume Champagne <champagne.guillaume.c@gmail.com>
-
- 28 Feb, 2020 2 commits
-
-
Pekka Paalanen authored
This patch continues the buffer and output transforms testing by iterating through a representative selection of buffer transforms and scales. For more details, see the previous patch "tests: add output transform tests". wayland/weston#52Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
Pekka Paalanen authored
This goes through all output transforms with two different buffer transforms and verifies the visual output against reference images. This commit introduces a new test input image 'basic-test-card.png'. It is a small image with deliberately odd and indivisible dimensions to provoke bad assumptions about image sizes. It contains red, green and blue areas which are actually text that makes it very obvious if you have e.g. color channels swapped. It has a white thick circle to highlight aspect ratio issues, and an orange cross to show a mixed color. The white border is for contrast and a 1px wide detail. The whole design makes it clear if the image happens to be rotated or flipped in any way. The image has one pixel wide transparent border so that bilinear sampling filter near the edges of the image would produce the same colors with both Pixman- and GL-renderers which handle the out-of-image samples fundamentally differently: Pixman assumes (0, 0, 0, 0) samples outside of the image, while GL-renderer clamps sample coordinates to the edge essentially repeating the edge pixels. It would have been "easy" to create a full matrix of every output scale & transform x every buffer scale & transform, but that would have resulted in 2 renderers * 8 output transforms * 3 output scales * 8 buffer transforms * 3 buffer scales = 1152 test cases that would have all ran strictly serially because our test harness has no parallelism inside one test program. That would have been slow to run, and need a lot more reference images too. Instead, I chose to iterate separately through all output scales & transforms (this patch) and all buffer scales & transforms (next patch). This limits the number of test cases in this patch to 56, and allows the two test programs to run in parallel. I did not even pick all possible scale & transform combinations here, but just what I think is a representative sub-set to hopefully exercise all the code paths. wayland/weston#52Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
- 27 Feb, 2020 5 commits
-
-
Pekka Paalanen authored
Running with Mesa 20.1.0-devel (git-c7617d8908) GL renderer: Radeon RX 550 Series (POLARIS11, DRM 3.27.0, 4.19.0-2-amd64, LLVM 8.0.1) I found output-tranform test (a future patch) to produce exactly this much more difference between Pixman and GL rendererers. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
Pekka Paalanen authored
It turns out that if the client is not explicitly destroyed, it will remain connected until the compositor shuts down because there is no more a client process that would terminate. Usually this is not a problem, but if a test file has multiple screenshooting tests, the windows from earlier tests in the file will remain on screen. That is not wanted, hence implement client destruction. To properly destroy a client, we also need a list of outputs. They used to be simply leaked. This does not fix wl_registry.global_remove for wl_outputs, that is left for a time when a test will actually need that. This patch makes only ivi-shell-app test use the new client_destroy() to show that it actually works. The added log scopes prove it: destroy requests get sent. Sprinkling client_destroy() around in all other tests is left for a time when it is actually necessary. ivi-shell-app is a nicely simple test doing little else, hence I picked it. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
Pekka Paalanen authored
The string from get_test_name() can be used for writing screenshot files and others. Starting the name with the fixture number makes an alphabetized listing of output files look unorganized. Let's change the test name to begin with the test (source) name with fixture and element numbers as suffixes. That makes a file listing easier to look through, when you have multiple tests each saving multiple screenshot files. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
Pekka Paalanen authored
A future test wants to access the fixture data array for the currently running fixture index to log the test description. This patch provides access to the array index. Rather than adding more gloabl variables, I changed the type of the existing one which feels slightly cleaner. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-
Pekka Paalanen authored
With these, a test can initialize the headless-backend with non-default scale and transform which allows testing output scales and transforms. Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com>
-