[Galaxy S III Mini General] sholimar:
Hello!

Let me begin by saying sorry for the monstrously long post - I honestly wanted to make it shorter but it got out of hand pretty quickly.

If you're like me, then the minute you've got your hands on the S III Mini you went to the Play Store to test some games, right?

If yes, then you may have noticed that some of them state that they aren't compatible with our devices... and, if you're like me, then you may have tried some "unofficial" sources for, oh let's say Gameloft goodies.

After installing, they either crash at startup, crash during or after the loading screen or, more interestingly, display white boxes instead of the actual textures (this was my experience with Nova 1, Hawx and a couple of others). In this thread I'll try to explain why. My sources are some wonderful threads here at XDA, but if I'm wrong in my assumptions then please correct me so that in the end, we can paint a more correct picture. Of course, some crashes and incompatibilities will be related to completely different things, but here's my take on it!

First of all, the chipset used in the Samsung I8190 is the NovaThor U8420 (a custom 8500 actually), which includes two Cortex-A9 CPU cores clocked at 1 GHz and a single-core GPU, the Mali 400MP. The Mali-400MP is a pretty old GPU (first launched in 2008), but a decent one nonetheless - it's actually on par with the Adreno 200 and 205 in some tests, but that's irrelevant.

Well, that's our culprit - because of the Mali GPU, a part of the games on the Play Store won't be available to us. That's because it's an older model, which only supports ETC compression for 3D textures and games usually rely on all manner of other formats nowadays. So, we go and torch ARM for their GPU, Ericsson for their chipset and Samsung for including it, right? Actually, no.

Here's where it gets interesting - ETC (Ericsson Texture Compression) is a free algorithm, a rather good one at that, but it doesn't support transparency in textures. Developers need to create a kind of "gradient mask" for transparencies (I believe it's similar to Photoshop), so instead of a one-step procedure, this needs two steps to perform. The other algorithms support compression of textures with transparency, so that's why we see white boxes in our games instead of actual textures - the Mali can't display them, so they all get changed to white "placeholders".

The thing is, the ETC format is the only standard accepted officially by OpenGL, so in the end, all the other formats are basically "wrong"! So, it's actually not Mali's fault, nor Ericsson's or Samsung's - it's the developer's fault that they use proprietary formats! Some users (that seemed to know what they were talking about) stated that the change to ETC format isn't that hard to perform and should take only a couple of hours to a resourceful dev.

Why aren't they doing this? Why isn't everyone using the accepted standard from the get-go? Because Nvidia, Imagination Technologies, Qualcomm and all the other GPU manufacturers want their products showcased and displayed in the spotlight. Tegra, PowerVR and Adreno each have to look like the best way to do 3D graphics, so the giant corporations behind them provide incentives, support and so on for their products, each trying to outdo the other's efforts. Thus, devs create a product (a game in this case) that is customized to run "best" on Tegra, or on Adreno or whatever - if it's an exclusive deal ("Tegra™-optimized", anyone?), even better!

This, in my opinion, is completely idiotic! Remember when in the '90 we had all those graphics card manufacturers? Remember how games ran only on Voodoo? Fortunately, the PC industry stabilized and we now have only the big two (Nvidia and Ati), but the idea resurged in the past couple of years on the mobile platform. It's also quite ridiculous, since we can't actually check and see if Game X performs better on Tegra or on Adreno, since it only works on one... so, how can we perform tests?

This is Android fragmentation at its ugliest! Take any modern PC game - no matter if it's "meant to be played on Nvidia" or whatever - you can still run and enjoy it on any graphics card, no matter the manufacturer. That's because of standardization! On the mobile platform, standardization of this sort isn't yet enforced, so in the end, we the customers have to suffer! So, if the game you bought isn't yet compatible with your device, go and yell at the devs - no, really! There's no excuse for using proprietary formats on a platform that boasts of its openness and customizability; there's no reason why we can't all benefit from GameX and there's no logic in denying paying customers of these experiences, all because of one more step in the compression procedure or some marketing hype! iPhone users can benefit from all games in the App Store because all of their devices use the same set of instructions and I'm pretty sure that we Android fans could as well!

So, in the end, Samsung and Mali actually did the right thing... It may not be regarded as such by us, who suffer in the end, but in the long run, enforcing the standard, officially recognized and supported method of compression is the right way to go. Seeing how Samsung sells millions of devices, I just hope that updates will start rolling for each app that presents me with a yellow bar under the Install button.

'Till then, we can only count on some brilliant guys here at XDA that can and do work hard on fixing things that should work correctly in the first place. Remember that I asked how we can perform tests if Game X doesn't run on both GPU Y and GPU Z? Well, one of the above guys is Chainfire of Windows Mobile 5, 6 and Android fame... with his 3D app installed, users reported that previously incompatible games were running perfectly on their devices, no matter if Tegra, Adreno or Mali was powering them. So, it doesn't matter which GPU is used, only the willingness to actually do it right that counts.

Here's to a more fun and usable Android!:highfive:

Note: I actually don't have any experience with developing games and the like, and all the info above is collected from threads here on XDA (especially those for Samsung Galaxy II) and googling everything I come across. I'm sure that the other methods of compression have their benefits and that at least some info above isn't 100% correct, but I still stand by my point. If you know more or want me to correct something then please leave your reply below and I'll see to it ASAP.