Earlier quoted context omitted.
Most certainly you want to use a shader, but that doesn't fix all your problems. You have to push a (very large) texture across the bus. The GPU will chew on it and spit out the result, which you then have to pull back across the bus into main memory so that it plays nicely with other UI elements that are CPU-bound and not cached in VRAM. So you've removed the processing bottleneck in exchange for a bus bandwidth bot…
are you sure it has to be pulled back to main memory?
Yeah, that doesn't make sense to me either. Especially since the entire point of the recent changes to iOS is precisely to get everything on-screen handled by the GPU, in the first place ..