[Mesa-dev] [PATCH 0/8] nir: Require numbers of components to always match
Jason Ekstrand
jason at jlekstrand.net
Sat Mar 4 01:12:24 UTC 2017
When NIR was first created, we were a bit lazy about numbers of components.
The rule was that a source couldn't consume more components than the thing
it was reading from. However, this leads to a lot of confusion because you
now have a thing sourcing from a vec4 but only reading two of the
components.
The solution to this is to disallow that case and require that the number
of components always match. The one exception is ALU instructions because
they're designed to naturally swizzle things around like mad. We already
require this restriction for phi instructions. This series adds it for
intrinsics, texture instructions, and deref indirects.
Cc: Kenneth Graunke <kenneth at whitecape.org>
Cc: Connor Abbott <cwabbott0 at gmaial.com>
Jason Ekstrand (8):
nir/intrinsics: Make load_barycentric_input take a 2-component coor
nir/copy_prop: Respect the source's number of components
nir/spirv: Restrict the number of channels in texture coordinates
nir/lower_tex: Use tex_instr_dest_size for txs destinations
anv/apply_dynamic_offsets: Only use one channel for computed offsets
i965/fs: Use num_components from the SSA def in image intrinsics
nir: Make image_size a variable-width intrinsic
nir/validate: Validate that bit sizes and components always match
src/compiler/glsl/glsl_to_nir.cpp | 7 +-
src/compiler/nir/nir_intrinsics.h | 6 +-
src/compiler/nir/nir_lower_tex.c | 3 +-
src/compiler/nir/nir_opt_copy_propagate.c | 129 +++++++++++++++++------
src/compiler/nir/nir_validate.c | 101 +++++++++++-------
src/compiler/spirv/spirv_to_nir.c | 21 ++--
src/intel/vulkan/anv_nir_apply_dynamic_offsets.c | 3 +-
src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 3 +-
8 files changed, 185 insertions(+), 88 deletions(-)
--
2.5.0.400.gff86faf
More information about the mesa-dev
mailing list