| Summary: | Rendering issues in foot | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | Kacper Słomiński <kacper.slominski72> |
| Component: | wayland-generic | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | RESOLVED DOWNSTREAM | ||
| Severity: | normal | CC: | arsen, nate |
| Priority: | NOR | ||
| Version First Reported In: | 6.1.4 | ||
| Target Milestone: | --- | ||
| Platform: | Gentoo Packages | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: | Recording of me triggering the bug | ||
|
Description
Kacper Słomiński
2024-08-17 11:39:08 UTC
> warn: render.c:2694: compositor is not releasing buffers immediately; expect lower rendering performance
It's true that kwin may require double buffering sometimes. We have had a couple of clients in the past that handled it incorrectly: they just repainted what changed in the current frame instead of ensuring that the _whole_ buffer contains valid data. You would normally observe it by the app contents flipping back and forth between old and new contents.
For the debugging purposes, I made kwin dump every shared memory client buffer to see what foot submits. From what I see is that some text can be missing in two consecutive frames, i.e.
frame N
```
❯ mkfs.ext2 test.img
mke2fs 1.47.1 (20-May-2024)
test.img contains
created on Wed Sep 18 14:19:46 2024
Proceed anyway? (y,N) ^C⏎
~
❯ mkfs.ext2 test.img
mke2fs 1.47.1 (20-May-2024)
test.img contains
created on Wed Sep 18 14:19:46 2024
Proceed anyway? (y,N)
```
frame N + 1
```
❯ mkfs.ext2 test.img
mke2fs 1.47.1 (20-May-2024)
test.img contains a ext2 file system
created on Wed Sep 18 14:19:46 2024
Proceed anyway? (y,N) ^C⏎
~
❯ mkfs.ext2 test.img
mke2fs 1.47.1 (20-May-2024)
test.img contains a ext2 file system
created on Wed Sep 18 14:19:46 2024
Proceed anyway? (y,N)
```
However, every shared memory client buffer is expected to have a complete frame. It points to foot committing shared memory client buffers with partial frame contents, which is a protocol violation.
|