Make use of VAO information in i965 v4.
Hi all,
The following series is a resend from last spring with some rebasing on the way. Well and a resend from an other attempt to get that reviewed just during the transition to gitlab before christmas.
This change finally makes use of the binding/attribute information now present in the VAO. The big part is basically a rewrite of brw_draw_upload in a way that traverses in an outer loop the bindings and for each binding the attached arrays. By this way the driver emits as few buffers as the VAO allows. For an application that already configures the VAO with a minimal set of buffers, this information is now routed through from the application down into the backend and the hardware. And there is the first in the series that remove the last VERT_ATTRIB_MAX long loop in the fast draw path.
I did, up to now, not find a sensible way to split the big blob #2 (closed) into smaller nicer to review chunks. Nevertheless, the patchset run through intels CI system without introducing failures (With changes in logs frohlich/#85).
The piglit drawoverhead test improves from 1.5 million to 2 million DrawElements calls and from 1.5 million to 2 million DrawArrays calls on a Skylake GT2.
Note that the change also serves as a preparation for further cleanup in the vbo module due to a different code flow for the current attribute values. Also not that this further cleanup will not only help i965 but also gallium including iris then.
Please review
Thanks and best Mathias