With QXL and virtio, kscreen tries to set the mode of the output to 4096x2160@60Hz, which results in a not updating screen. It's not possible to recover from this situation. The same issue appears on X, but kscreen does not pick the resolution on startup, so it's a bit less critical. I'm not sure where the actual bug is (kernel, QEMU, spice).
Looks like this is a bug in QEMU, some kind of allocation failure. Probably some kind of internal buffer is too small... Anyway, this shouldn't be triggered at all automaticaly. I can easily explain the difference to X now: It seems like libkscreen does not handle the preferred attribute on kwayland modes yet, so it always picks the one with the biggest area (+ refresh rate). I suggest adding the current mode as preferred mode on startup - this should be the native resolution (or at least a mode that works) in most cases anyway and can easily be overwritten on the kernel cmdline.
The protocol provides a preferred flag on the mode. You might be able to verify with weston_info that KWin sets the preferred flag correctly.
(In reply to Martin Flöser from comment #2) > The protocol provides a preferred flag on the mode. You might be able to > verify with weston_info that KWin sets the preferred flag correctly. I skipped that step as it has to be added to kscreen anyway and it looks like it works fine: https://phabricator.kde.org/D8828
Thanks! Let's close this bug then, if the problem persists, we can always re-open it and investigate further.