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 <[email protected]>
Cc: Eric Anholt <[email protected]>
Cc: Connor Abbott <[email protected]>
Cc: Rob Clark <[email protected]>

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

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to