[Mesa-dev] [PATCH 00/14] nir: add bit-size information in data types
Jason Ekstrand
jason at jlekstrand.net
Tue Mar 15 00:34:54 UTC 2016
I had a few comments, but by-and-large it looks fine. If you think you
need to do a respin, that's fine. Otherwise, with the comments addressed,
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
On Mon, Mar 7, 2016 at 12:45 AM, Samuel Iglesias Gonsálvez <
siglesias at igalia.com> wrote:
> Hello,
>
> Iago and I are working on adding FP64 support to i965 drivers [0] with
> the help of Connor and Jason (Thanks!). That support requires changes
> in NIR to include the bit-size information in the data types and also
> modifications in the opcodes to use sized types as needed.
>
> This means that all NIR clients should take that information into
> consideration as well, since backends are now expected to see sized NIR
> types and they need to handle them properly.
>
> This batch is the smallest set of NIR patches required to
> incorporate sized types together with the minimum set of changes
> required to i965, freedreno and vc4 that we have identified. Rob Clark
> and Eric Anholt checked that freedreno and vc4 drivers respectively
> work fine with these changes.
>
> We have verified that with these changes there are no regressions in
> Piglit for i965, which does the minimum necessary to deal with sized
> types at this point. We tested on gen5, gen6, gen7 and gen8. We don't
> have gen4 hardware available, so trying this would also require
> involvement from other people with access to this hardware.
>
> With this series, drivers should be able to work normally with both
> sized and unsized types (mostly by ignoring the size aspect of the
> type).
>
> The rest of the fp64 work that we hope to send soon for review will add
> further changes to ensure that we get correct bit-sized types wherever
> we need them, but we will postpone this until we actually need to care
> about different bit-sizes, when we send the fp64 for review, since that
> requires a lot more changes.
>
> The reason we are sending this part ahead is that the inclusion of sized
> types in NIR together with the bit-size information affects all drivers
> using NIR, and since it affects a lot of NIR opcodes (that now need to
> be defined using the corresponding bit-sized types) it is much easier to
> review and land this ahead of the rest of the series and have everyone
> be aware of this change as soon as possible.
>
> Because of this it would also be great if new code checked in after this
> series also tries to incorporate bit-size information to the types in
> NIR and the drivers, even if the drivers can eat the unsized types too
> for now. We will try to fix anything that slips in as we rebase our
> fp64 branch though.
>
> We would like to land this batch of patches in NIR ahead of the rest
> of the fp64 changes, which will use sized types extensively. This is
> important because the change is significant and it is important that
> new code landing in master is aware of this as soon as possible.
>
> Our idea is to squash these patches together into a single commit before
> pushing them to master. We keep them separate here to facilitate the
> review.
>
> Thanks,
>
> Sam
>
> [0] https://bugs.freedesktop.org/show_bug.cgi?id=92760
>
> Connor Abbott (10):
> nir/types: add a function to get the bitsize of a base type
> nir: add double constant types
> nir: update opcode definitions for different bit sizes
> nir: handle different bit sizes when constant folding
> i965: fix brw_type_for_nir_type() for sized types
> i965: fix brw_glsl_base_type_for_nir_type() for sized types
> nir: add nir_src_bit_size() helper
> nir: add nir_dest_bit_size() helper
> nir: add a bit_size parameter to nir_ssa_dest_init
> nir: propagate bitsize information in nir_search
>
> Iago Toral Quiroga (1):
> vc4: adapt to new sized alu types
>
> Jason Ekstrand (2):
> nir: Add explicitly sized types
> nir: Add a bit_size to nir_register and nir_ssa_def
>
> Samuel Iglesias Gonsálvez (1):
> i965/nir: fix check to resolve booleans to work with sized
> nir_alu_type
>
> src/compiler/nir/glsl_to_nir.cpp | 22 +-
> src/compiler/nir/nir.c | 14 +-
> src/compiler/nir/nir.h | 51 ++++-
> src/compiler/nir/nir_algebraic.py | 22 +-
> src/compiler/nir/nir_builder.h | 33 ++-
> src/compiler/nir/nir_clone.c | 3 +-
> src/compiler/nir/nir_constant_expressions.h | 2 +-
> src/compiler/nir/nir_constant_expressions.py | 246
> ++++++++++++--------
> src/compiler/nir/nir_from_ssa.c | 6 +-
> src/compiler/nir/nir_lower_alu_to_scalar.c | 10 +-
> src/compiler/nir/nir_lower_atomics.c | 6 +-
> src/compiler/nir/nir_lower_clip.c | 2 +-
> src/compiler/nir/nir_lower_io.c | 3 +-
> src/compiler/nir/nir_lower_locals_to_regs.c | 7 +-
> src/compiler/nir/nir_lower_phis_to_scalar.c | 10 +-
> src/compiler/nir/nir_lower_tex.c | 2 +-
> src/compiler/nir/nir_lower_two_sided_color.c | 2 +-
> src/compiler/nir/nir_lower_var_copies.c | 5 +-
> src/compiler/nir/nir_lower_vars_to_ssa.c | 12 +-
> src/compiler/nir/nir_opcodes.py | 144 ++++++------
> src/compiler/nir/nir_opt_constant_folding.c | 24 +-
> src/compiler/nir/nir_opt_peephole_select.c | 3 +-
> src/compiler/nir/nir_search.c | 247
> +++++++++++++++++++--
> src/compiler/nir/nir_search.h | 8 +-
> src/compiler/nir/nir_to_ssa.c | 6 +-
> src/compiler/nir/nir_validate.c | 42 +++-
> src/compiler/nir_types.h | 21 ++
> src/gallium/auxiliary/nir/tgsi_to_nir.c | 14 +-
> .../drivers/freedreno/ir3/ir3_nir_lower_if_else.c | 2 +-
> src/gallium/drivers/vc4/vc4_nir_lower_blend.c | 4 +-
> src/gallium/drivers/vc4/vc4_nir_lower_io.c | 6 +-
> src/gallium/drivers/vc4/vc4_nir_lower_txf_ms.c | 2 +-
> src/gallium/drivers/vc4/vc4_program.c | 7 +-
> src/mesa/drivers/dri/i965/brw_nir.c | 18 ++
> .../dri/i965/brw_nir_analyze_boolean_resolves.c | 2 +-
> .../drivers/dri/i965/brw_nir_opt_peephole_ffma.c | 7 +-
> src/mesa/program/prog_to_nir.c | 10 +-
> 37 files changed, 760 insertions(+), 265 deletions(-)
>
> --
> 2.7.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160314/74407606/attachment.html>
More information about the mesa-dev
mailing list