Hi,
Before seeing your post I've just finished building a sample app that demonstrates exactly the same thing.
I was investigating why our app runs slowly on Big Sur.
I've built the sample app with Xcode 12.2 beta 3, and can confirm this is still well and truly broken.
The dirtyRect is always wrong. Always the full size of the view. -getRectsBeingDrawn:count: never returns the correct result.
Apple have frequently talked about the need to use -getRectsBeingDrawn:count: as an essential optimisation.
Just trying to come to terms with what to do about it.
I used random colours in drawRect, and a button to set a small dirty area. For me the rendering only *sometimes* clips the drawing to my set dirty area. It frequently still fills the whole view.
Post
Replies
Boosts
Views
Activity
I noticed this under Catalina too.
Additionally, I empirically found that there's a limit on the number of dirty rects you can set before it breaks completely. I think it was about 8.
Because of this I implemented a fix to coalesce my own list of dirty rects.
With this new problem on Big Sur, that too no longer works.