Performance-wise it should be just about identical to drawExternalMask if you are not mirroring, as it only needs to check if mirroring is on a handful of times. If you are horizontal mirroring, I can’t imagine the perf difference is noticeable as it’s just doing a handful of extra calculations. Vertical mirroring requires flipping the data in all the bytes in the bitmap and the mask, so I suspect it is a bit slower. I haven’t noticed any difference in my game.
Size wise is hard to say. It depends on how well you can take advantage of mirroring. The actual function seems to be smaller than using drawExternalMask. A test sketch I just built using SpritesB::drawExternalMask came out to 7924 bytes, but with this drawBitmap it was 7472 bytes.
For my game, sometimes I can choose to mirror instead of choosing a different sprite frame at the same cost, and in those cases I get really nice savings wins. Other parts of my game I have to add more logic to decide when to mirror, and that logic eats into the savings. I’d estimate so far mirroring has saved me about 2k of space.