Exophase
Nothing good will ever come of Exophase.
I saw darkblu mentioned this before in one topic but I haven't seen a link to it anywhere. Please delete/merge this topic if I'm wrong. At the very least I added it to the relevant node on the wiki (http://pandorawiki.org/OpenGLES_On_the_Pandora)
http://www.imgtec.com/factsheets/SDK/POWERVR%20SGX.OpenGL%20ES%202.0%20Application%20Development%20Recommendations.1.1f.External.pdf
I found this guide very informative on how to use the SGX efficiently.
Section 6.3 in particular relates to something I know a number of people here have been wondering about:
This means that you'll never be able to do texture uploads that don't cost CPU time, for instance for scaling a virtual 2D framebuffer. I also doubt that there's any way to upload pre-swizzled data. So we're at the mercy of the driver to convert + copy the framebuffer, which may or may not be heavily optimized for the platform, ie using NEON. If you need to do simple integer scaling w/o filtering then you might be better off doing it in software with NEON, depending on the scale ratio. If you're scaling down by an integer amount then you'll always be better off doing this.
For fullscreen scaling the OMAP3530's builtin scaler will be the best option, but for partial scaling things aren't so clear cut. I'm thinking that delegating the DSP for this will still be a good option, since it can be done without taking any CPU time. It'd still take bus bandwidth, though - in this sense, the builtin scaler would be the best performing option since the operation is merged with framebuffer I/O.
http://www.imgtec.com/factsheets/SDK/POWERVR%20SGX.OpenGL%20ES%202.0%20Application%20Development%20Recommendations.1.1f.External.pdf
I found this guide very informative on how to use the SGX efficiently.
Section 6.3 in particular relates to something I know a number of people here have been wondering about:
6.3. Texture Upload
When you upload textures to the OpenGL ES driver via glTexImage2D, the input data is usually in
linear scanline format. Internally, though, 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.
For this reason we recommend that you upload all required textures at application or level start-up
time in order to not cause any framerate dips when additional textures are uploaded later on.
You should especially avoid uploading texture data mid-frame to a texture object that has already
been used in the frame.
This means that you'll never be able to do texture uploads that don't cost CPU time, for instance for scaling a virtual 2D framebuffer. I also doubt that there's any way to upload pre-swizzled data. So we're at the mercy of the driver to convert + copy the framebuffer, which may or may not be heavily optimized for the platform, ie using NEON. If you need to do simple integer scaling w/o filtering then you might be better off doing it in software with NEON, depending on the scale ratio. If you're scaling down by an integer amount then you'll always be better off doing this.
For fullscreen scaling the OMAP3530's builtin scaler will be the best option, but for partial scaling things aren't so clear cut. I'm thinking that delegating the DSP for this will still be a good option, since it can be done without taking any CPU time. It'd still take bus bandwidth, though - in this sense, the builtin scaler would be the best performing option since the operation is merged with framebuffer I/O.