[Mesa-dev] [PATCH 0/3] nir: Convert nir_variable_mode to a bitfield

Jason Ekstrand jason at jlekstrand.net
Mon Apr 11 20:50:29 UTC 2016


This tiny series converts nir_var_mode to be a bitfield instead of a
regular enum and then converts two of the passes that currently take a mode
to handle the new bitfield.  The reason for this is that a number of
different passes want to be able to act on some subset of the modes and can
run more efficiently if they are called once with that set rather than once
per mode.

I'm not 100% sold on making it a bitfield and asserting only one bit is set
in nir_validate.  This isn't the standard pattern in the mesa compiler
stack today so it may throw people off.  It still looks kind of strage to
me.  On the other hand, it does have the potential to make things look
nicer and gdb will pretty-print it for you.  For what it's worth, the
Khronos group settled on using this pattern for bitfield-capable enums in
Vulkan.  Rob seems to prefer this over a regular enum and using (1 << mode)
everywhere so, unless there are major objections, we'll probably go with
it.

Cc: Kenneth Graunke <kenneth at whitecape.org>
Cc: Eric Anholt <eric at anholt.net>
Cc: Connor Abbott <cwabbott0 at gmail.com>
Cc: Rob Clark <robclark at gmail.com>

Jason Ekstrand (3):
  nir: Convert nir_variable_mode to a bitfield
  nir/lower_indirect: nir_variable_mode is now a bitfield
  nir/lower_io: Allow for a full bitmask of modes

 src/compiler/nir/nir.h                       | 37 ++++++++++++++--------------
 src/compiler/nir/nir_lower_indirect_derefs.c | 12 ++++-----
 src/compiler/nir/nir_lower_io.c              | 12 ++++-----
 src/compiler/nir/nir_validate.c              |  3 +++
 4 files changed, 33 insertions(+), 31 deletions(-)

-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list