Views in non-visible workspaces don't have their coordinates updated, so damage to those views still damages each output even if what's actually displayed there has not changed.
This should be simple to fix, likely by ignoring frame damage events for views not in a workspace with an output or which are floating.
This isn't as simple as I thought, Vivarium does seem to be correctly not acting on damage from tiled views in other workspaces, but somehow is still leaking chromium damage events to my other workspaces.
Views in non-visible workspaces don't have their coordinates updated, so damage to those views still damages each output even if what's actually displayed there has not changed.
This should be simple to fix, likely by ignoring frame damage events for views not in a workspace with an output or which are floating.