BananaBread does not work on Firefox on Android by default on Galaxy Nexus due to lack of "texture compression"




Firefox for Android
5 years ago
2 years ago


(Reporter: gkw, Unassigned)



Firefox Tracking Flags

(Not tracked)




5 years ago
I was at a recent Firefox App Day event, and talking to some app developers, they were immensely interested in the ability to create games using HTML5 technologies, JS, WebGL and the like.

My first instinct was to show them on Android, but testing on Firefox on Android Aurora 20 by default showed "Technical Details: texture compression is missing".

I had to open up my laptop and fire up Firefox Release 18 for them to be amazed by BananaBread and its potential.

It will be really really nice to have BananaBread working on Firefox on Android by default.
I suppose that what BananaBread is trying to say there is that it requires support for S3TC compressed textures. Unfortunately there is no universally supported compressed texture format, yet. S3TC is supported on desktop devices, and on Tegra devices. For non-Tegra mobile devices, there is PVRTC (for PowerVR mobile GPUs) and ATC (for Adreno mobile GPUs). Yes, that sucks. There is a long-term plan (ETC2). Until that happens, we'll have to evangelize game devs to support all 3 formats. If you want to demo BananaBread on a mobile device right now, your only chance is to do so with a Tegra-based device, such as a Nexus 7 tablet for example. Then again, we have a few tech hurdles to overcome before BananaBread can look amazing on any mobile device right now, but we hope to get there.

Comment 2

5 years ago
I tested out on a Galaxy Nexus, so I think it is not a Tegra-based device.
Summary: BananaBread does not work on Firefox on Android by default due to lack of "texture compression" → BananaBread does not work on Firefox on Android by default on Galaxy Nexus due to lack of "texture compression"
The Galaxy Nexus is a PowerVR SGX540 device.

I've seen wild differences in OpenGL ES driver implementations across devices, making WebGL... difficult to use at all. I'm not sure if we can mitigate any of that, or provide some guidelines to devs wanting to use WebGL on mobile. Maybe some of it is our fault (although for everything I've seen, the drivers either refuse to compile valid shaders or compile them and then render incorrectly). Getting some more basic demos to run across a wide variety of devices and trying to document some of those differences seems like it might be useful for everyone.

Comment 4

5 years ago
BananaBread does not strictly require texture compression, we can make a build without it if that is helpful. It would be slower, though.
Not really worth it: it's already hard to make BB run fast on a mobile device with compressed textures, it would be worth without. Plus, we do want to hammer the point that WebGL apps should use compressed textures.

What would be fantastic is if BB's textures were converted to PVRTC and ATC, and upon loading BB, it would detect which version of the textures to download based on which WebGL extensions are available. That is basically the only way that can see WebGL games working on mobile devices for the next few years --- until ETC2 or some other format becomes universally supported.
> it would be worth without

s/worth/worse; dyslexia, etc.

Comment 7

5 years ago
Makes sense. I don't know anything about those compression formats though - are there existing mobile demos using them? And open source libraries to convert to/from them?
Not really. We're the only WebGL based browser engine exposing them at the moment (we're the only ones to be in a hurry to advocate the Web as the platform of choice for mobile games in the short term), and for all I know you'd have to use the respective vendors (Imgtec for PVRTC, Qualcomm for ATC) proprietary tools to convert the textures offline (to be clear, this is something that you want to do once and for all offline, not something you want to do upon loading the game).

The WebGL extension specs are:
You need to log in before you can comment on or make changes to this bug.