21997

OpenGL ES, Changing texture format from RGBA8888 to RGBA4444 will improve fill rate?

Question:

I'm rendering a lot of big images with alpha testing, and I'm hitting the fill rate.

If I change the texture format from RGBA8888 to RGBA4444 will the fill rate improve?

EDIT: Hardware is Iphone 3GS and OpenGL version 1.1

Answer1:

Doing some tests I've found the following:

<ul><li>Loading png as RGBA8888 I get 42fps</li> <li>Loading png as RGBA4444 I get 44fps</li> <li>Loading pvrtc2 I get 53 fps (and I had to double the texture size because it was not squared)</li> </ul>

It seems that changing from rgba8888 to rgba4444 does not improve framerate. But using pvrtc2 might do.

Answer2:

You don't specify the particular hardware you're asking about, but Apple has <a href="http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesForWorkingWithTextureData/TechniquesForWorkingWithTextureData.html%23//apple_ref/doc/uid/TP40008793-CH104-SW1" rel="nofollow">this</a> to say about the PowerVR GPUs in iOS devices:

<blockquote>

If your application cannot use compressed textures, consider using a lower precision pixel format. A texture in RGB565, RGBA5551, or RGBA4444 format uses half the memory of a texture in RGBA8888 format. Use RGBA8888 only when your application needs that level of quality.

</blockquote>

While this will improve memory usage, I'm not sure that it will have a dramatic effect on fill rate. You might see an improvement from being able to hold more of the texture in cache at once, but I'd listen to Tommy's point about per-pixel operations being the more likely bottleneck here.

Also, when it comes to texture size, you'll get much better image quality at a smaller size by using texture compression (like PVRTC for the PowerVR GPUs) than lowering the precision of the texture pixel format.

Recommend

  • keras autoencoder vs PCA
  • ImageView with squared pixels (without interpolation)
  • Render face of cube map to a quad
  • PhoneGap + JQM App breaks in Android 4.0.3
  • Processing video library does not work on Linux (Ubuntu 13.04)
  • Substitution Method - How to find two tags with a newline inbetween using Perl?
  • opengl window freezing during move/resize
  • Best way to produce 'colour correct' raster from a PDF or PS with ghostscript
  • Why does Sencha 2 only work in Webkit browsers?
  • retrieving data from url in iphone
  • Does CSS support inheritance [duplicate]
  • Access user's phone number on iOS 7
  • Eclipse MTJ doesn't see Java ME SDK 3.0 devices
  • Floated image with variable width and heading with background image
  • Git describe fails to return most recent annotated tag
  • Best way to dynamically load an xml configuration file into a Flex4/Flash movie at runtime?
  • perl, mysql - fasting way to upload a csv file into mysql?
  • JBoss External Properties Files in Classpath
  • Set matplotlib plot axis to be the dataframe column name
  • How do I exclude a dependency in provided scope when running in Maven test scope?
  • How to have background script and something similar to a default popup?
  • Mysterious problem with floating point in LISP - time axis generation
  • JQuery Internet Explorer and ajaxstop
  • Python urlparse: small issue
  • How to avoid particles glitching together in an elastic particle collision simulator?
  • Change multiple background-images with jQuery
  • Asynchronous UI Testing in Xcode With Swift
  • How to delay loading a property with linq to sql external mapping?
  • Cannot connect to cassandra from Spark
  • Exchange data b/w iOS devices using Bluetooth 4.0
  • Android screen density dpi vs ppi
  • angularjs unit test when to use $rootScope.$new()
  • DirectX11 ClearRenderTargetViewback with transparent buffer?
  • Deserializing XML into class C#
  • Change an a tag attribute in JavaScript based on screen width
  • Microsoft Visual Studio Community 2015 always crashes in Windows 10 if swithed to Visual FoxPro
  • GridView Sorting works once only
  • How to include full .NET prerequisite for Wix Burn installer
  • costura.fody for a dll that references another dll
  • jQuery Masonry / Isotope and fluid images: Momentary overlap on window resize