From: Mathias Fröhlich <mathias.froehl...@gmx.net>

Hi Brian,

The second version of 'we are getting there somehow'.
The series builds up unique binding information internal to a VAO.
This shall help drivers to get as few buffer objects as possible.
The first patch implements building up this unique binding information.
Then there is a bunch of gallium changes that do utilize this unique
set of buffer objects for array setup.
Followed by some changes to i965 to get again somehow closer to
utilizing that unique binding information. But with i965 we are not yet
finished. I have something close to the gallium array setup making use of the
binding information, but for easier review, I will schedule the more intrusive
intel changes into an other series.
After all we have tnl as only user of gl_vertex_array and consequently
move all that into tnl and rename accordingly.

The second version differs from the first one by also grouping user space
arrays of interleaved user space arrays so that a driver can again work with
a relative offset and also there with a minimum set of relocs.
This version as well as the previous version uses bitmask maniuplations for
scanning for interleaved arrays as well as common binding information so that
an application using already an optimal VAO setup using a single VBO binding
point does effectively no scanning.
Also the second version contains some overhauls to comments that I came across.
Finally it is rebased to the current mesa.

The changeset has been tested locally with piglit on radeonsi, classic
swrast and i965(Sandybridge Mobile) as well as with intels CI system without
regressions.

There is still a lot of possible cleanup and optimization around
drawing, but with this change gl_vertex_array is pushed into legacy
tnl based drivers.

please review
Thanks!



Mathias Fröhlich (11):
  mesa: Compute effective buffer bindings in the vao.
  st/mesa: Use _DrawVAO for edgeflag enabled check.
  st/mesa: Make the input_to_index array available.
  st/mesa: Use Array._DrawVAO in st_atom_array.c.
  st/mesa: Make feedback draw and rasterpos use _DrawVAO.
  st/mesa: Remove the now unused gl_vertex_array.
  i965: Implement all_varyings_in_vbos in terms of Array._DrawVAO.
  i965: Remove the gl_vertex_array indirection.
  i965: Remove the now unused gl_vertex_array.
  mesa: Remove Array._DrawArrays.
  mesa/vbo/tnl: Move gl_vertex_array related stuff to tnl.

 src/mesa/drivers/dri/i965/brw_context.h       |   7 +-
 src/mesa/drivers/dri/i965/brw_draw.c          |  49 +--
 src/mesa/drivers/dri/i965/brw_draw_upload.c   |  31 +-
 src/mesa/drivers/dri/i965/genX_state_upload.c |  12 +-
 src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c  |  40 +--
 src/mesa/main/arrayobj.c                      | 391 ++++++++++++++++++++++-
 src/mesa/main/arrayobj.h                      | 186 +++++++++++
 src/mesa/main/attrib.c                        |   2 +-
 src/mesa/main/mtypes.h                        |  82 +++--
 src/mesa/main/varray.c                        |   9 +
 src/mesa/main/varray.h                        |  26 --
 src/mesa/state_tracker/st_atom.c              |  11 +-
 src/mesa/state_tracker/st_atom_array.c        | 432 +++++++-------------------
 src/mesa/state_tracker/st_cb_feedback.c       |  32 +-
 src/mesa/state_tracker/st_cb_rasterpos.c      |  43 +--
 src/mesa/state_tracker/st_context.c           |   3 -
 src/mesa/state_tracker/st_context.h           |   3 -
 src/mesa/state_tracker/st_draw.c              |   8 -
 src/mesa/state_tracker/st_draw.h              |   1 -
 src/mesa/state_tracker/st_draw_feedback.c     |  46 +--
 src/mesa/state_tracker/st_program.c           |  17 +-
 src/mesa/state_tracker/st_program.h           |   5 +
 src/mesa/state_tracker/st_shader_cache.c      |   4 +
 src/mesa/tnl/t_context.c                      |   4 +-
 src/mesa/tnl/t_context.h                      |  41 ++-
 src/mesa/tnl/t_draw.c                         | 100 +++++-
 src/mesa/tnl/t_rebase.c                       |   4 +-
 src/mesa/tnl/t_rebase.h                       |   2 +-
 src/mesa/tnl/t_split.c                        |   2 +-
 src/mesa/tnl/t_split.h                        |   4 +-
 src/mesa/tnl/t_split_copy.c                   |  34 +-
 src/mesa/tnl/t_split_inplace.c                |   4 +-
 src/mesa/tnl/tnl.h                            |  24 +-
 src/mesa/vbo/vbo.h                            |  37 +--
 src/mesa/vbo/vbo_context.c                    |  17 +
 src/mesa/vbo/vbo_exec.c                       |  86 -----
 src/mesa/vbo/vbo_private.h                    |   7 +-
 37 files changed, 1063 insertions(+), 743 deletions(-)

-- 
2.14.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to