It's a reasonable direction, I think, but I have two comments:
* It probably makes sense to detect whether a whole tile is transparent/solid/etc just-in-time when you're about to consider swapping it out (or dropping it down to a colder cache) instead of every time it gets dirty. IIRC the tile-row-hints stuff does this sort of stuff just-in-time too, at compositing time, so effort isn't wasted on the various sorts of tiles, transient or otherwise, that never end up getting composited (but I'm an old man and my memory is getting hazy; I'd forgotten that the tile-row-hints stuff even existed and I should bloody well know).
I am missing some context here. Why does a tile get dirty? (To offer a guess at understanding, what two blocks of memory are getting out of sync when a tile is dirty?).