3 ms·
The most intractable OpenGL ES issues on mobile have to do with the large amount of state kept, requiring long pipeline flushes, complex application-level batch
by Jasper_ 11y ago
The most intractable OpenGL ES issues on mobile have to do with the large amount of state kept, requiring long pipeline flushes, complex application-level batching, driver batching, and other things.
Normally, drivers try to batch up a lot of work, but being really subtle about things (calling glGet, for instance), you can accidentally cause a blocking flush of your entire state.
Making applications fast involves trying to defer and hack around this state machine as much as possible, while maintaining correct behavior. As such, you end up with tons of subtle, hard-to-find interaction bugs. I've debugged and fixed some of these in a certain mobile OpenGL driver we're deploying on our platform we licensed from the vendor.
This is independent from other tricky bits of OpenGL ES, like the shader compiler front-end choking on perfectly valid GLSL, because there's no compliance tests for any of it.