DACI - Integrating GLES 3.2 support into Splash

Now that we have a working implementation of GLES 3.2, which proved to be working with good enough performances on the Raspberry Pi 4 (even though some optimizations could be done later), this work should be moved to the develop branch. There are multiple ways to do that, and we have to decide which path to take. So let's compare the pluses and minuses of all options.

Do nothing (keep only GL 4.5) Replace GL 4.5 with GLES 3.2 Allow for chosing at compile time Allow for chosing at runtime
+ Most easy to do + Mostly straight-forward + Keep GL 4.5 for desktop platforms + Keep GL 4.5 for desktop platforms
- No low-end platforms support + Should be more compatible than GL 4.5 + Keep GLES 3.2 for low-end platforms + Keep GLES 3.2 for low-end platforms
- Discards a lot of work :( - Not all that well tested + Can be easier to implement than choosing at runtime (wrap each API's code in a #ifdef, then factor common code out) + Only one build
- Against the goal of this GSoC project - Might lose some perfs - Needs to build two versions + Prepare the path for Vulkan
- More limited than OpenGL 4.5 - Needs to distribute two versions - More code complexity
- Can be more complex from a maintainance standpoint - More code paths to test and maintain
- Differences in shaders might introduce even more complexity - Differences in shaders might introduce even more complexity

Note that the only "low-end" platform we're currently concerned with is the raspberry pi 4. Other platforms with lower OpenGL ES support might pose a problem due to missing some features (geometry shaders, tessalation shaders, etc.)

Edited by Tarek Yasser