Found while debugging issues with !3554 (merged). Fixes a regression with !3497 (merged) (last commit) and this PR further improves things (first two commits). We haven't noticed problems with this before because firefox would damage surfaces even if it hasn't submitted a new buffer. Fixing this problem with a workaround makes something very obvious: Damage tracking is broken with clients that use viewporter. There was some nonsense intersection in the code that when removed resolves any damage tracking issues.