[Mesa-dev] [PATCH 00/18] nir/spirv: Rework UBOs, SSBOs, and pointers

Jason Ekstrand jason at jlekstrand.net
Thu Jun 29 17:33:22 UTC 2017


This rework has been on my ToDo list for a long time.  The real crowning
patch is patch 12 which makes us compute offsets to UBOs and SSBOs on the
fly instead of waiting until we have the full access chain.  In theory, we
could do something similar for images and textures where we pass around the
resource index instead using derefs.

Along with the change for UBOs and SSBOs are advances to the vtn type
system which make it much easier to handle pointers.  One example of this
improvement is patch 18 where we rework function handling a bit.  Before,
we had a bunch of magic to make SSA and pointer parameters work.  For SSA
parameters, We would make everything pointers (because that's what they are
in NIR) and then vtn_ssa_value would automatically do a load when called on
a pointer value.  Instead of that, we now handle the two cases explicitly
so it's a lot more clear exactly what's going on.

Jason Ekstrand (18):
  nir/spirv: Move a "}"
  nir/spirv: Use the type from the deref for atomics
  nir/spirv: Add a storage_class_to_mode helper
  nir/spirv: Split up Uniform and UniformConstant storage classes
  nir/spirv: Rename some things from access_chain to pointer
  nir/spirv: Wrap access chains in a new vtn_pointer data structure
  nir/spirv: Use the correct stride for non-32-bit vectors
  nir/spirv: Simplify matrix loads/stores
  nir/spirv: Remove unneeded parameters from pointer_to_offset
  nir/spirv: Break variable creation out into a helper
  nir/spirv: Rework the way pointers get dereferenced
  nir/spirv: Compute offsets for UBOs and SSBOs up-front
  nir/spirv: Simplify type copying
  nir/spirv: Compact vtn_type
  nir/spirv: Beef up the type system a bit
  nir/spirv: Stop using glsl_type for function types
  nir/spirv: Use real pointer types
  nir/spirv: Rework function argument setup

 src/compiler/spirv/spirv_to_nir.c  |  230 ++++----
 src/compiler/spirv/vtn_cfg.c       |   84 +--
 src/compiler/spirv/vtn_private.h   |  175 ++++--
 src/compiler/spirv/vtn_variables.c | 1085 ++++++++++++++++++++----------------
 4 files changed, 916 insertions(+), 658 deletions(-)

-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list