cso: remove cso_draw_vbo layering from all draws, call the driver or u_vbuf directly
Instead of calling like this: st_draw_gallium -> cso_draw_vbo -> driver_draw_vbo/u_vbuf_draw_vbo
Do it like this: st_draw_gallium -> driver_draw_vbo
Or like this: st_draw_gallium -> u_vbuf_draw_vbo
It's accomplished by adding a draw_vbo function pointer into cso_context. The pointer is equal to pipe_context::draw_vbo when needed, so there is no call overhead from this if cso's draw_vbo callback is indeed equal to driver_draw_vbo. We just call cso_context_base::draw_vbo to jump into the driver directly, or u_vbuf if needed.
The cso function with the indirect function call is inlined, so draws don't actually visit any cso_context function.
Other commits are prerequisites.
Edited by Marek Olšák