[Mesa-dev] [PATCH 00/31] Make more use of bitmasks v2

Nicolai Hähnle nhaehnle at gmail.com
Tue Jun 7 14:15:58 UTC 2016


Hi Mathias,

Thanks for staying with this!

I know it's bike-shedding, and I'm not sure what other people's opinions 
are on this matter, but having the duplication of u_bit_scan and 
_mesa_bit_scan feels a bit annoying to me...

Cheers,
Nicolai

On 07.06.2016 07:29, Mathias.Froehlich at gmx.net wrote:
> From: Mathias Fröhlich <Mathias.Froehlich at gmx.net>
>
> Hi all,
>
> following a series with performance improvements
> for cpu/draw bound applications. This part makes
> more use of the bitmask/ffs technique for iterating
> a set of enabled items. The gains are not huge
> but they are noticable for some of my favourite
> workloads.
>
> Changes in v2:
>
> Past the suggestion from Brian Paul and the
> discussion about maintainability I
> switched to gallium/u_bit_scan{,64} style
> functions for the series of changes.
> Providing them and using them in some places
> in core mesa make up the two new patches upfront.
>
> Appart from that the problem spotted
> by Roland Scheidegger is fixed and the changes
> requested all around are incorporated.
>
> Please review!
>
> Thanks
>
> Mathias
>
>
> Mathias Fröhlich (31):
>    mesa: Provide _mesa_bit_scan{,64} similar to gallium.
>    mesa: Make use of _mesa_bit_scan{,64}.
>    mesa: Add gl_point_attrib::CoordReplaceBits bitfield.
>    swrast: Convert swrast to use CoordsReplaceBits.
>    gallium: Convert the state_tracker to use CoordsReplaceBits.
>    r200: convert r200 to use CoordsReplaceBits.
>    i915: Convert i915 to use CoordsReplaceBits.
>    i965: Convert i965 to use CoordsReplaceBits.
>    mesa: Remove the now unused CoordsReplace array.
>    mesa: Rename CoordReplaceBits back to CoordReplace.
>    mesa: Track enabled lights in a bitmask
>    mesa: Use bitmask/ffs to iterate enabled lights
>    mesa: Use bitmask/ffs to iterate enabled lights for ff shader keys.
>    tnl: Use bitmask/ffs to iterate enabled lights
>    nouveau: Use bitmask/ffs to iterate enabled lights
>    radeon/r200: Use bitmask/ffs to iterate enabled lights
>    mesa: Switch to bitmask based enabled lights in gen_matypes.c
>    mesa: Remove the linked list of enabled lights
>    mesa: Use bitmask/ffs to build ff vertex shader keys.
>    mesa: Use bitmask/ffs to build ff fragment shader keys.
>    mesa: Use bitmask/ffs to iterate color material attributes.
>    mesa: Use bitmask/ffs to iterate enabled clip planes.
>    radeon/r200: Use bitmask/ffs to iterate enabled clip planes.
>    i965: Use bitmask/ffs to iterate enabled clip planes.
>    i965: Use bitmask/ffs to iterate used vertex attributes.
>    mesa: Use bitmask/ffs to iterate SamplersUsed
>    mesa: Use designated bool value to check texture unit completeness.
>    mesa: Use bitmask/ffs to iterate the enabled textures.
>    mesa: Use bitmask/ffs to iterate the active_samplers bitmask.
>    vbo: Use a bitmask to track the active arrays in vbo_exec*.
>    vbo: Use a bitmask to track the active arrays in vbo_save*.
>
>   src/mesa/drivers/common/meta.c                |  21 ++--
>   src/mesa/drivers/dri/i915/i915_state.c        |  17 ++-
>   src/mesa/drivers/dri/i965/brw_curbe.c         |  20 ++--
>   src/mesa/drivers/dri/i965/brw_draw.c          |   9 +-
>   src/mesa/drivers/dri/i965/brw_sf.c            |   7 +-
>   src/mesa/drivers/dri/i965/brw_vs.c            |   6 +-
>   src/mesa/drivers/dri/i965/gen6_sf_state.c     |   2 +-
>   src/mesa/drivers/dri/nouveau/nouveau_state.c  |   9 +-
>   src/mesa/drivers/dri/nouveau/nv10_state_tnl.c |  26 +++--
>   src/mesa/drivers/dri/nouveau/nv20_state_tnl.c |  26 +++--
>   src/mesa/drivers/dri/r200/r200_state.c        |  65 ++++++------
>   src/mesa/drivers/dri/radeon/radeon_state.c    |  60 ++++++-----
>   src/mesa/main/arrayobj.c                      |   5 +-
>   src/mesa/main/attrib.c                        |   2 +-
>   src/mesa/main/buffers.c                       |   3 +-
>   src/mesa/main/context.c                       |  11 +-
>   src/mesa/main/enable.c                        |   6 +-
>   src/mesa/main/ff_fragment_shader.cpp          |   9 +-
>   src/mesa/main/ffvertex_prog.c                 |  35 ++++---
>   src/mesa/main/imports.h                       |  24 +++++
>   src/mesa/main/light.c                         |  59 +++++++----
>   src/mesa/main/matrix.c                        |  18 ++--
>   src/mesa/main/mtypes.h                        |   8 +-
>   src/mesa/main/points.c                        |   6 +-
>   src/mesa/main/rastpos.c                       |  27 ++---
>   src/mesa/main/texenv.c                        |  32 +++---
>   src/mesa/main/texstate.c                      |  33 +++---
>   src/mesa/main/uniform_query.cpp               |   7 +-
>   src/mesa/main/uniforms.c                      |  41 ++++----
>   src/mesa/state_tracker/st_atom_rasterizer.c   |   8 +-
>   src/mesa/swrast/s_points.c                    |   4 +-
>   src/mesa/tnl/t_vb_cliptmp.h                   |  51 +++++----
>   src/mesa/tnl/t_vb_light.c                     |  13 ++-
>   src/mesa/tnl/t_vb_lighttmp.h                  |  24 +++--
>   src/mesa/tnl/t_vb_program.c                   |  64 ++++++------
>   src/mesa/tnl/t_vb_vertex.c                    |  57 +++++-----
>   src/mesa/vbo/vbo_exec.h                       |   1 +
>   src/mesa/vbo/vbo_exec_api.c                   | 145 +++++++++++++-------------
>   src/mesa/vbo/vbo_exec_draw.c                  |   2 +
>   src/mesa/vbo/vbo_save.h                       |   2 +
>   src/mesa/vbo/vbo_save_api.c                   |  66 ++++++------
>   src/mesa/vbo/vbo_save_draw.c                  |  54 +++++-----
>   src/mesa/x86/gen_matypes.c                    |   4 +-
>   43 files changed, 569 insertions(+), 520 deletions(-)
>


More information about the mesa-dev mailing list