What's the goal with these? The original idea here was to do these checks once at device creation time instead of during the performance critical draw preparation calls, making use of the fact that we have an indirect call anyway.
I suspect you plan to transition to more d3d10-like state objects, which make these fine grained state callbacks impossible. Is this correct?
Partly applying the state in coarser chunks, yes, but perhaps more saliently trying to get rid of the indirect calls themselves. I had originally written an explanation in this patches, which seems to have gotten lost:
The state table originally took advantage of indirect calls to avoid checking for extensions more than once. However, with modern CPUs indirect calls themselves are a bottleneck, and accordingly we would like to get rid of the state table entirely.
Moreover, the state table is currently used in all backends, but the use of extensions makes it tied to the GL backend. As an intermediate step to getting rid of the state table, consolidate multiple state handlers into one, thereby allowing us to get rid of the "extension" field.