An open userspace means that I will be able to use the GPU as far into the future as I like. It means that if anything is screwed up on my ARM processor I can see it and fix it (or thank the person that beat me to it.) That's a good thing.
The code blob that is not open is what runs on the GPU. I'd love to have that too so that the OpenGL could possibly be extended beyond what the vendor chooses or it could be ditched as a GPU entirely and used as a big parallel DSP. BroadCom didn't give us that.
Some reasons I can think of:
• GPU litigation – If you don't have a pre-emptive patent arsenal, open sourcing your GPU code and design is like inviting your competitors' lawyers over for tea and depositions.
• Unbuildable – The toolchain to build the GPU code is likely a cobbled together mess of tools, many built to minimally functional in house standards.
• Undocumented – They probably have not spent the hundreds of thousands of dollars to properly document how the GPU works. What documentation exists is possibly not in English.
• Unsafe – It is possible that the GPU has HCF[1] opcodes or sequences, or at the very least hasn't been lightly proven not to. In particular, there could be thermal issues depending how you drive it.
• IP Ownership – Portions of their implementation could be licensed under terms that do not permit release.
I'm still happy. It wanders a bit from topic, but I eventually gave away stacks of Broadcom based WRTSL54GS wifi routers because their closed source driver was stuck at linux 2.4 and I needed 2.6 for some attached hardware. That went on for years. Having everything that runs on the host CPU open means things like this can't happen. Much better than a plastic mule.
Even further afield… When my first daughter was 3 or 4 we got her a magic wand for her birthday. A plastic star on the end of a plastic stick. She was thrilled, pointed it at her grandmother and said "I turn you into a bug!". She was crushed when it didn't work. Rather spoiled the whole day for her. She assures us she was going to turn her back.
True, BUT, it doesn't look there was really very much to it anyway, so while I wouldn't be jumping up and down cursing at them over this, I'd hardly call it an impressive achievement either.
Missed one (which I still consider valid): making it trivial for others to extend the firmware might endanger other products on sale. ATI learned this a few years ago, when it was discovered a software upgrade was all required to turn a sub-$150 graphics card into a far more expensive model.
From the user's perspective, all they see is hardware that can Do So Much More simply with a little firmware jiggery, but from the manufacturer's perspective, they've spent billions developing that firmware and if they choose to differentiate depending on its configuration, and they've paid the infrastructure costs to reach this position of privilege, then as far as I'm concerned that's their prerogative.
While I can see a stereotypical manager coming up with those or any number of silly reasons, I can't agree with the code-related ones.
Litigation and IP ownership may be reasons enough, I like not to get into details there, but:
- Unbuildable - great, release it, someone will either pick it up and correct it, or they will not. Right now they're guaranteeing that noone will.
- Undocumented - same as above; also I've never seen a proper, up to date, useful documentation without errors. If you open the code, you may get some improvements and current documentation may be actually useful. Otherwise we have nothing.
- Unsafe - that's pretty much the same situation as currently used custom android roms, firmware which is not cryptographicly signed, and many things that talk to SOCs with power management. If you corrupt the firmware in some way, or configure chips for different voltage than expected bad things will happen. This is not specific to GPUs.
There's a certain implied responsibility that comes with releasing source. While the community is clearly better off with any sort of source release than with none, their reputation could still take a hit if the source release has problems like these.
An open userspace means that I will be able to use the GPU as far into the future as I like. It means that if anything is screwed up on my ARM processor I can see it and fix it (or thank the person that beat me to it.) That's a good thing.
The code blob that is not open is what runs on the GPU. I'd love to have that too so that the OpenGL could possibly be extended beyond what the vendor chooses or it could be ditched as a GPU entirely and used as a big parallel DSP. BroadCom didn't give us that.
Some reasons I can think of:
• GPU litigation – If you don't have a pre-emptive patent arsenal, open sourcing your GPU code and design is like inviting your competitors' lawyers over for tea and depositions.
• Unbuildable – The toolchain to build the GPU code is likely a cobbled together mess of tools, many built to minimally functional in house standards.
• Undocumented – They probably have not spent the hundreds of thousands of dollars to properly document how the GPU works. What documentation exists is possibly not in English.
• Unsafe – It is possible that the GPU has HCF[1] opcodes or sequences, or at the very least hasn't been lightly proven not to. In particular, there could be thermal issues depending how you drive it.
• IP Ownership – Portions of their implementation could be licensed under terms that do not permit release.
EOM
[1] http://en.wikipedia.org/wiki/Halt_and_Catch_Fire