From: https://forums.adafruit.com/viewtopic.php?p=1070425#p1070425
displayio has a slow performance case where overlapping dirty rectangles cause pixels to be recomputed more than once.
We could do merging or flattening of all the rectangles but that is complicated.
As a quick optimization, we could sum the areas of all of the dirty rectangles. If the number of dirty pixels is more than the screen itself, then it'd be faster to do a full refresh because it only does each pixel once.