Imagination PowerVR SDK Blog

Twiddling Algorithm Complexity




In 6.3 of “POWERVR SGX OpenGL ES 2.0 Application Development Recommendations”, it says:

POWERVR SGX uses a twiddled layout (i.e. following a plane-filling curve) to greatly improve memory access locality when texturing. Because of this different layout uploading textures will always require a somewhat expensive reformatting operation, regardless of whether the input pixel format exactly matches the internal pixel format or not.

Can you tell the complexity of the Twiddling algorithm?

I am designing Realtime Video Frame Processing on iPhone 4, and consider to use glTxImage2D for texture data update. It is likely to get pipeline stall. So, wondering if X^2 * (M/X x N/X) size textures get processed better than 1 * (M x N).




The main bottleneck was memory bandwidth.

- Takenori


Apple support the iPhone themselves and there was some discussion of how to upload frames quickly to GL on their forum, which is here:

On other platforms there are other solutions involving something we call texture streaming.

If you want to know more about the twiddle process then this wikipedia article is fairly good:

There’s also some explanation in the PVRTexTool documentation from here: