While the update to OpenGL ES 3.1 from OpenGL ES 3.1 doesn’t really seem like a major one, the thing that most people have to understand is that 3.0 never really got any pull to begin with. To this day, I don’t believe there has been a single OpenGL ES 3.0 title released yet, even though there’s plenty of hardware (now) capable of utilizing it. OpenGL ES 3.0 is a huge jump in terms of capabilities from the previous version and almost everyone struggled with employing it in their GPUs, and now that everyone’s got their GPUs ready, we’ve now got 3.1.
Thankfully for most, OpenGL ES 3.1 will most likely be a simple driver update rather than a revision to hardware or architecture when compared to OpenGL ES 3.0. That’s primarily because there are only 6 major improvements to OpenGL ES 3.1 over 3.0 with the most important one being the addition of compute shaders, meaning that OpenCL may not be necessary in all situations. There are also now separate shader objects which allows applications to program the vertex and fragment shader stages of the GPU independent of eachother. The addition of indirect draw commands is also pretty important because it allows the GPu to draw commands from its own memory rather than having to ping the CPU. This reduces latency in certain situations as well as unnecessary CPU utilization.
OpenGL ES 3.1 also brings enhanced texturing functionality which include multisample textures, stencil textures and texture gather. There are also some shading language improvements which are enabled by new arithmetic and bitfield operations. There are also some new additional optional extensions which include per-sample shading, advanced blending modes and more. And as always, OpenGL ES 3.1 will be backwards compatible with 3.0 and 2.0, which is important for anyone wanting to build a latest generation GPU that is also capable of backwards compatibility with older games or games utilizing older engines. Not just that, but OpenGL ES 3.1 further blurs the lines between desktop and mobile through driver compatibility, up until the point where I don’t think there will be much difference between OpenGL and OpenGL ES.
Many game studios have already indicated their interest to simply go straight to 3.1 rather than try to release something with 3.0 even though, I think we may see some games based on 3.0 purely because of the state of the engine they’re utilizing. We’ll be sure to bring you any news on that front as we hear it as well as any other new Khronos API announcements over the course of this week.