I can try to get a former dev involved here (for describing the concept and restrictions). But only if you really intent to work on something like performance for Kodi. Its to much hazzle to wake up sleeping/retired people just for an "fyi". Sry. For FYI you would need to dive into the code and debugger/performance analyser and figure out where the penalties come from. (one thing is that we have a "dirty rendering" algorithm but on gles it only works by rendering the whole screen if only one pixel changes - dirty region is not possible (don't know the details - something missing on gles).
Its not ment to be rude - but we are in the final phase of the rebrand/release (nerves are really thin because of multiple internal problems which we have to solve) and we are really low on human ressources and time. I know this is not ideal and mostly scares devs away (which is the opposite of what we would need atm) - but its just a to big project to know all the internas and have them described in an easy understandable way.
Also while there are possibilities to make it better for gles you still have to keep in mind that the whole render stuff is really abstracted for all our platforms (gles, gl, directx, directfb what not) - so this restricts optimal pathes for sure.
We would welcome a "metal" renderbackend for sure
So if you are a gles pro or otherwise ios / osx guru and wanna work on something big (and have way to much free time and are bored most of that time
) - start hacking on something you like - develop it up to a pull request on github - do it good - become a team member
Some bones for the gui render impl.:
https://github.com/xbmc/xbmc/tree/master/xbmc/rendering