Is there a way to pass 16bit float uniforms in OpenGL ES 3.x on ARM Mali GPUs?
In Vulkan, VK_KHR_16bit_storage is doing the trick.
Also, is there an equivalent of VK_KHR_shader_float16_int8 in OpenGL ES ie. is using native 16 bit types in shaders possible?
The main goal of this is to reduce uniform buffer sizes, and reduce conversions between float32 & float16.
There isn't a way to do this using buffers in GLES; uniforms in memory are always 32-bit, and there is no equivalent of the Vulkan 16-bit storage extension. The only way I know to get 16-bit data in memory into a vertex shader is to upload data via a fp16 texture, but beware that this has some side-effects in terms of which path it takes in the hardware so may be slower despite the in-memory size being smaller.
Thanks Pete, all clear!