[Mesa-dev] [PATCH 00/22] nir/spirv: support for CL kernel

Karol Herbst kherbst at redhat.com
Tue Nov 13 15:48:04 UTC 2018


some of those patches are already reviewed, but not pushed. Just wanted to
post the patches to show the most current approach and to start discussion
on what we might want to handle differently.

There are some things I am not so happy about as well, like that bit_size
handling for system values or how the derefs for pointers are created.

But overall it feels we require less changes overall with my new approach
to support physical pointers inside nir and vtn.

Karol Herbst (18):
  nir: add const_index parameters to system value builder function
  nir: replace nir_load_system_value calls with appropiate builder
    functions
  nir/spirv: initial handling of OpenCL.std extension opcodes
  nir/spirv: cast shift operand to u32
  vtn: handle SpvExecutionModelKernel
  glsl: add packed for struct types
  glsl: add glsl_base_get_byte_size
  glsl: add cl_size and cl_alignment
  nir/spirv: parse memory model
  nir: add legal bit_sizes to intrinsics
  nir: add support for address bit sized system values
  nir+vtn: vec8+vec16 support
  nir: rename global to private memory
  nir/spirv: handle SpvStorageClassCrossWorkgroup
  nir/spirv: handle kernel function parameters
  nir/spirv: physical pointer support
  spirv/cl: support vload/vstore
  nir/spirv: handle OpBitcasts for pointers

Rob Clark (4):
  nir/spirv: add OpIsFinite and OpIsNormal
  nir/vtn: add caps for some cl related capabilities
  nir: simplify get_io_offset() parameters
  nir: add type alignment support to lower_io

 src/amd/vulkan/radv_meta_buffer.c             |   8 +-
 src/amd/vulkan/radv_meta_bufimage.c           |  16 +-
 src/amd/vulkan/radv_meta_clear.c              |   8 +-
 src/amd/vulkan/radv_meta_fast_clear.c         |   4 +-
 src/amd/vulkan/radv_meta_resolve_cs.c         |   4 +-
 src/amd/vulkan/radv_query.c                   |   8 +-
 src/compiler/glsl/glsl_to_nir.cpp             |   4 +-
 src/compiler/glsl_types.cpp                   |  65 +++-
 src/compiler/glsl_types.h                     |  56 ++-
 src/compiler/nir/meson.build                  |   1 +
 src/compiler/nir/nir.c                        |   8 +-
 src/compiler/nir/nir.h                        |  37 +-
 src/compiler/nir/nir_builder.h                |  95 ++++-
 src/compiler/nir/nir_builder_opcodes_h.py     |  41 ++-
 src/compiler/nir/nir_builtin_builder.c        | 249 ++++++++++++-
 src/compiler/nir/nir_builtin_builder.h        | 150 +++++++-
 src/compiler/nir/nir_clone.c                  |   2 +
 src/compiler/nir/nir_constant_expressions.py  |  33 +-
 src/compiler/nir/nir_deref.c                  |  26 +-
 src/compiler/nir/nir_instr_set.c              |   2 +
 src/compiler/nir/nir_intrinsics.py            |  32 +-
 src/compiler/nir/nir_intrinsics_c.py          |   6 +-
 src/compiler/nir/nir_linking_helpers.c        |   2 +-
 src/compiler/nir/nir_loop_analyze.c           |   2 +-
 src/compiler/nir/nir_lower_alu_to_scalar.c    |   2 +
 src/compiler/nir/nir_lower_clip.c             |   3 +-
 .../nir/nir_lower_constant_initializers.c     |   2 +-
 .../nir/nir_lower_global_vars_to_local.c      |   4 +-
 src/compiler/nir/nir_lower_indirect_derefs.c  |   6 +-
 src/compiler/nir/nir_lower_io.c               | 141 +++++--
 .../nir/nir_lower_io_arrays_to_elements.c     |   4 +-
 .../nir/nir_lower_io_to_temporaries.c         |   2 +-
 src/compiler/nir/nir_lower_locals_to_regs.c   |   9 +-
 src/compiler/nir/nir_lower_system_values.c    |  40 +-
 src/compiler/nir/nir_lower_var_copies.c       |   3 +-
 src/compiler/nir/nir_lower_vars_to_ssa.c      |  12 +-
 src/compiler/nir/nir_lower_wpos_center.c      |   3 +-
 src/compiler/nir/nir_opcodes.py               |  39 +-
 src/compiler/nir/nir_opt_copy_prop_vars.c     |   4 +-
 src/compiler/nir/nir_opt_copy_propagate.c     |   2 +-
 src/compiler/nir/nir_opt_dead_write_vars.c    |   6 +-
 src/compiler/nir/nir_print.c                  |  29 +-
 src/compiler/nir/nir_propagate_invariant.c    |   2 +
 src/compiler/nir/nir_remove_dead_variables.c  |   6 +-
 src/compiler/nir/nir_search.c                 |   8 +-
 src/compiler/nir/nir_serialize.c              |   4 +
 src/compiler/nir/nir_split_vars.c             |  20 +-
 src/compiler/nir/nir_validate.c               |  17 +-
 src/compiler/nir/tests/vars_tests.cpp         |   2 +-
 src/compiler/nir_types.cpp                    |  17 +-
 src/compiler/nir_types.h                      |  37 +-
 src/compiler/shader_info.h                    |   3 +
 src/compiler/spirv/spirv_to_nir.c             | 131 ++++++-
 src/compiler/spirv/vtn_alu.c                  | 245 +++++++++----
 src/compiler/spirv/vtn_cfg.c                  |   3 +-
 src/compiler/spirv/vtn_glsl450.c              |   2 +-
 src/compiler/spirv/vtn_opencl.c               | 343 ++++++++++++++++++
 src/compiler/spirv/vtn_private.h              |  19 +-
 src/compiler/spirv/vtn_variables.c            | 106 ++++--
 src/gallium/auxiliary/nir/tgsi_to_nir.c       |   4 +-
 src/gallium/drivers/vc4/vc4_nir_lower_blend.c |   4 +-
 src/intel/compiler/brw_nir.c                  |   2 +-
 .../vulkan/anv_nir_lower_input_attachments.c  |   3 +-
 src/mesa/state_tracker/st_glsl_to_nir.cpp     |   2 +-
 src/nouveau/meson.build                       |  25 ++
 65 files changed, 1836 insertions(+), 339 deletions(-)
 create mode 100644 src/compiler/spirv/vtn_opencl.c
 create mode 100644 src/nouveau/meson.build

-- 
2.19.1



More information about the mesa-dev mailing list