Imagination PowerVR SDK Blog

Twiddling Algorithm Complexity

pvrtextool

#1

Hi,





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).





Thanks,


Takenori                                                      


#2

The main bottleneck was memory bandwidth.





- Takenori


#3

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

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:

http://en.wikipedia.org/wiki/Z-order_(curve)

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

https://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp