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
