Setup is:
rootston starts fine with this setup using the iGPU as primary and eGPU as secondary, paints a gray background on both outputs. Moving the cursor works well on both.
However when I spawn weston-terminal it shows up on the internal screen but is invisible on the external one. Logs: https://sr.ht/GT26.log
It works well with the eGPU as primary and with the iGPU disabled. I think there's an issue with DMA-BUFs.
This sounds suspiciously similar to:
https://github.com/swaywm/sway/issues/2800
and
https://github.com/swaywm/wlroots/issues/1328
Does it work if you go back to before this commit?
https://github.com/swaywm/wlroots/commit/ba9142274765869cd58ec0c55e7ef8da0354ed25
Indeed, this is the same issue. I've come up with a fix, will submit a PR soon. I still have issues with multi-GPU though, now instead of not being updated the multi-GPU output has stripes like so:

I've tried screenshooting everything, and the screenshot doesn't have these stripes. So I think something goes wrong when exporting and importing the DMA-BUF. Maybe a stride issue?
This may be a driver bug, connecting via VGA makes it work properly.
Closing because this doesn't sound like a wlroots bug.
Most helpful comment
Indeed, this is the same issue. I've come up with a fix, will submit a PR soon. I still have issues with multi-GPU though, now instead of not being updated the multi-GPU output has stripes like so:
I've tried screenshooting everything, and the screenshot doesn't have these stripes. So I think something goes wrong when exporting and importing the DMA-BUF. Maybe a stride issue?