That's not quite true. Vulkan has extensions too, and adapter_vk_create_device() will pass the supported Vulkan extensions to wined3d_device_init(), which in turn will pass them to compile_state_table().
Yes, that was sloppy wording on my part. I should have said that it's tied to wined3d_gl_extension. Granted, that's self-contained and doesn't really rely on anything else about the GL backend, but it's still conceptually kind of ugly, and I was hoping to fully segregate the GL and Vulkan code [which was the real motivation for this].
Of course that's not to say the broader point is invalid; wined3d_context_vk_apply_draw_state() simply doesn't use the state_table[], and ultimately I think we'd like the equivalent GL function to use the same basic structure.
Right, that.
I suppose the question eventually becomes: do we want these patches, or do we want to do this differently? E.g. if our ultimate goal is "get rid of the state table entirely", perhaps it makes sense to just pull state handlers out of the state table one at a time, and basically turn extension selection into a conditional while doing so. The idea of this patch is to do that in two steps instead of one, but it does have the disadvantage that it hypothetically makes performance worse in the meantime.