| Summary: | kwin-wayland session is completely broken on RV380 while kwin-x11 works fine | ||
|---|---|---|---|
| Product: | [Plasma] kwin | Reporter: | Jan Binder <wheel> |
| Component: | wayland-generic | Assignee: | KWin default assignee <kwin-bugs-null> |
| Status: | RESOLVED UPSTREAM | ||
| Severity: | major | CC: | xaver.hugl |
| Priority: | NOR | ||
| Version First Reported In: | 6.3.6 | ||
| Target Milestone: | --- | ||
| Platform: | Debian stable | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Jan Binder
2025-12-18 13:08:57 UTC
Thank you for the bug report! Debian advises users to not submit bugs upstream (https://www.debian.org/Bugs/Reporting), and Plasma 6.3.6 is no longer eligible for support or maintenance from KDE. It's possible that the issue exists only in Debian at this point. Could you report the bug to Debian using the report bug utility (https://packages.debian.org/stable/utils/reportbug)? If necessary, the maintainer of the package will forward the bug upstream. Thanks for understanding! Thanks again! > Dez 18 11:30:58 ni8130 kwin_wayland_wrapper[1191]: r300 FP: Compiler Error: > Dez 18 11:30:58 ni8130 kwin_wayland_wrapper[1191]: Too many ALU instructions used: 219, max: 64. > Dez 18 11:30:58 ni8130 kwin_wayland_wrapper[1191]: Using a dummy shader instead. I think in this case we can ignore the bot. For situations like that, where the hardware isn't good enough to run our full shaders, we have an automatic fallback to llvmpipe. That looks like rather than failing our shader compilation, RadeonSi is replacing our actual shader with nonsense though... please report this at https://gitlab.freedesktop.org/mesa/mesa/-/issues I upgraded this system further to Debian forky: Mesa: 25.2.8 Plasma: 6.5.4 Frameworks: 6.20.0 Qt: 6.9.2+dfsg-3 The amount of breakage is reduced considerably, probably because the llvmpipe fallback works and the session now runs with correct drawing at 170% CPU load and produces 1 frame every 3 seconds. There is of course still a lot of logspam concerning buffer pinning and in general it is not that much more usable than before and absolutely no comparison to the X11 session. Startup output now is: Dez 19 10:55:23 ni8130 kwin_wayland_wrapper[1397]: No backend specified, automatically choosing drm Dez 19 10:55:23 ni8130 kwin_wayland_wrapper[1397]: kwin_wayland_drm: drmSetClientCap for Atomic Mode Setting failed. Using legacy mode on GPU "/dev/dri/card0" Dez 19 10:55:23 ni8130 kwin_wayland_wrapper[1397]: kwin_wayland_drm: Could not find edid for connector DrmConnector(id=53, gpu="/dev/dri/card0", name="LVDS-1", connection="Connected", countMode=14) Dez 19 10:55:24 ni8130 kwin_wayland_wrapper[1397]: r300 FP: Compiler error: Too many ALU instructions used: 236, max: 64 Dez 19 10:55:24 ni8130 kwin_wayland_wrapper[1397]: r300 FP: Use RADEON_DEBUG=dummysh to force dummy shader instead. Dez 19 10:55:24 ni8130 kwin_wayland_wrapper[1397]: kwin_scene_opengl: Failed to link shader: Dez 19 10:55:24 ni8130 kwin_wayland_wrapper[1397]: "error: Too many ALU instructions used: 236, max: 64\x00" Dez 19 10:55:24 ni8130 kwin_wayland_wrapper[1397]: kwin_scene_opengl: Creating the OpenGL rendering failed: "Could not initialize rendering context" Dez 19 10:55:24 ni8130 kernel: radeon 0000:01:00.0: [drm] *ERROR* crtc 44: Can't calculate constants, dotclock = 0! Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: Failed to find a working output layer configuration! Enabled layers: Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: src QRectF(0,0 1600x1200) -> dst QRect(0,0 1600x1200) Dez 19 10:55:25 ni8130 kernel: radeon 0000:01:00.0: 000000009c0e0206 pin failed Dez 19 10:55:25 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_wayland_drm: Could not find edid for connector DrmConnector(id=53, gpu="/dev/dri/card0", name="LVDS-1", connection="Connected", countMode=1) Dez 19 10:55:25 ni8130 kernel: radeon 0000:01:00.0: 000000001bf1c23a pin failed Dez 19 10:55:25 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: Failed to find a working output layer configuration! Enabled layers: Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: src QRectF(0,0 1600x1200) -> dst QRect(0,0 1600x1200) Dez 19 10:55:25 ni8130 kernel: radeon 0000:01:00.0: 00000000b0f092c6 pin failed Dez 19 10:55:25 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_wayland_drm: Could not find edid for connector DrmConnector(id=53, gpu="/dev/dri/card0", name="LVDS-1", connection="Connected", countMode=1) Dez 19 10:55:25 ni8130 kernel: radeon 0000:01:00.0: 000000001bf1c23a pin failed Dez 19 10:55:25 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: Failed to find a working output layer configuration! Enabled layers: Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: src QRectF(0,0 1600x1200) -> dst QRect(0,0 1600x1200) Dez 19 10:55:25 ni8130 kernel: radeon 0000:01:00.0: 00000000b0f092c6 pin failed Dez 19 10:55:25 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_wayland_drm: Could not find edid for connector DrmConnector(id=53, gpu="/dev/dri/card0", name="LVDS-1", connection="Connected", countMode=1) Dez 19 10:55:25 ni8130 kernel: radeon 0000:01:00.0: 000000001bf1c23a pin failed Dez 19 10:55:25 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: Failed to find a working output layer configuration! Enabled layers: Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: src QRectF(0,0 1600x1200) -> dst QRect(0,0 1600x1200) Dez 19 10:55:25 ni8130 kernel: radeon 0000:01:00.0: 00000000b0f092c6 pin failed Dez 19 10:55:25 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_wayland_drm: Could not find edid for connector DrmConnector(id=53, gpu="/dev/dri/card0", name="LVDS-1", connection="Connected", countMode=1) Dez 19 10:55:25 ni8130 kernel: radeon 0000:01:00.0: 000000001bf1c23a pin failed Dez 19 10:55:25 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: Failed to find a working output layer configuration! Enabled layers: Dez 19 10:55:25 ni8130 kwin_wayland_wrapper[1397]: kwin_core: src QRectF(0,0 1600x1200) -> dst QRect(0,0 1600x1200) With RADEON_DEBUG=dummysh the session is even more broken than the old version and only a flickering mouse pointer can be seen. Assorted debug output for that session: Dez 19 11:25:46 ni8130 kwin_wayland_wrapper[2785]: No backend specified, automatically choosing drm Dez 19 11:25:46 ni8130 kwin_wayland_wrapper[2785]: kwin_wayland_drm: drmSetClientCap for Atomic Mode Setting failed. Using legacy mode on GPU "/dev/dri/card0" Dez 19 11:25:46 ni8130 kwin_wayland_wrapper[2785]: kwin_wayland_drm: Could not find edid for connector DrmConnector(id=53, gpu="/dev/dri/card0", name="LVDS-1", connection="Connected", countMode=1) Dez 19 11:25:46 ni8130 kwin_wayland_wrapper[2785]: r300 FP: Compiler error: Too many ALU instructions used: 236, max: 64 Dez 19 11:25:46 ni8130 kwin_wayland_wrapper[2785]: r300 FP: Using a dummy shader instead. Dez 19 11:25:46 ni8130 kwin_wayland_wrapper[2785]: r300 FP: Compiler error: Too many ALU instructions used: 236, max: 64 Dez 19 11:25:46 ni8130 kwin_wayland_wrapper[2785]: r300 FP: Using a dummy shader instead. Dez 19 11:25:47 ni8130 kernel: radeon 0000:01:00.0: [drm] *ERROR* crtc 44: Can't calculate constants, dotclock = 0! Dez 19 11:25:47 ni8130 kernel: radeon 0000:01:00.0: 0000000043943254 pin failed Dez 19 11:25:47 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 11:25:47 ni8130 kwin_wayland_wrapper[2785]: kwin_core: Failed to find a working output layer configuration! Enabled layers: Dez 19 11:25:47 ni8130 kwin_wayland_wrapper[2785]: kwin_core: src QRectF(0,0 1600x1200) -> dst QRect(0,0 1600x1200) Dez 19 11:25:47 ni8130 kernel: radeon 0000:01:00.0: 00000000b5a7db9e pin failed Dez 19 11:25:47 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 11:25:47 ni8130 kwin_wayland_wrapper[2785]: kwin_core: Failed to find a working output layer configuration! Enabled layers: Dez 19 11:25:47 ni8130 kwin_wayland_wrapper[2785]: kwin_core: src QRectF(0,0 1600x1200) -> dst QRect(0,0 1600x1200) Dez 19 11:25:47 ni8130 kernel: radeon 0000:01:00.0: 00000000dd3538cf pin failed Dez 19 11:25:47 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 11:25:47 ni8130 kwin_wayland_wrapper[2785]: kwin_wayland_drm: Could not find edid for connector DrmConnector(id=53, gpu="/dev/dri/card0", name="LVDS-1", connection="Connected", countMode=1) Dez 19 11:25:47 ni8130 kwin_wayland_wrapper[2785]: kwin_wayland_drm: Could not find edid for connector DrmConnector(id=53, gpu="/dev/dri/card0", name="LVDS-1", connection="Connected", countMode=1) Dez 19 11:25:47 ni8130 kernel: radeon 0000:01:00.0: 0000000043943254 pin failed Dez 19 11:25:47 ni8130 kernel: [drm:radeon_crtc_page_flip_target [radeon]] *ERROR* failed to pin new rbo buffer before flip Dez 19 11:25:47 ni8130 kwin_wayland_wrapper[2785]: kwin_core: Failed to find a working output layer configuration! Enabled layers: Dez 19 11:25:47 ni8130 kwin_wayland_wrapper[2785]: kwin_core: src QRectF(0,0 1600x1200) -> dst QRect(0,0 1600x1200) Dez 19 11:25:51 ni8130 kwin_wayland_wrapper[2830]: r300 FP: Compiler error: Too many ALU instructions used: 67, max: 64 Dez 19 11:25:51 ni8130 kwin_wayland_wrapper[2830]: r300 FP: Using a dummy shader instead. Dez 19 11:25:51 ni8130 kwin_wayland_wrapper[2830]: r300 FP: Compiler error: If/then statements not supported by R300/R400 shaders, should have been flattened by peephole_select. Dez 19 11:25:51 ni8130 kwin_wayland_wrapper[2830]: Failed to link: error: If/then statements not supported by R300/R400 shaders, should have been flattened by peephole_select. Dez 19 11:25:55 ni8130 ksplashqml[2788]: r300: CS space validation failed. (not enough memory?) Skipping rendering. Dez 19 11:25:55 ni8130 ksplashqml[2788]: r300: CS space validation failed. (not enough memory?) Skipping rendering. Considering that the dummy shader is still broken but the default behavior is now as expected regarding the error handling/rendering result, excluding usability, what is the sensible thing for the dummy shader to do? There dummy shader can't help. If it doesn't work on the hardware, it simply has to fail and fall back to software rendering. For the moment, you *could* attempt to patch KWin to reduce the amount of instructions in the colormanagement.glsl file (maybe delete the tonemapping code), but it's not a long term solution. Software rendering should absolutely not be that slow though, the buffer pinning is probably the bigger problem. Unfortunately at this point, it seems rather unlikely for the radeon driver to see fixes for it, but you can try creating a report for it at https://gitlab.freedesktop.org/drm/amd/-/issues |