Does such a tool exists?
I am working with some researchers in computer vision on porting to GPU some of their algorithm. Does ARM provide a mean to protect shader content? I understand the general case does not mandate such endeavor as the application is much more important than individual shaders. But in my specific scenario, I believe there is a novelty that could be worth spending some effort to protect. Precompiling shaders offline for a specific architecture, at the expanse of portability, is the only way I can imagine. Feedback on this would be greatly appreciated.
The offline compiler is available here:
Mali Offline Compiler - Mali Developer Center
As you say, for most real applications no-one bothers with binary shaders (simply too many vendors/GPUs/driver versions to keep on top of - you'd need literally hundreds of variants if you are shipping on multiple devices, and would have to keep on top of any over-the-air firmware changes). I've only ever seen it used in anger for platform-level software which therefore only has to support a single variant as part of the device firmware.
Newer APIs such as Vulkan are moving away from pure text source to a compiled intermediate representation (SPIR-V) which is less transparent, although still possible to decompile back into a source form.
HTH, Pete