[Mesa-dev] [PATCH 00/28 v3] ARB_gl_spirv: v3 ubo/ssbo support, plus CTS goodness

Alejandro Piñeiro apinheiro at igalia.com
Mon Oct 22 12:24:22 UTC 2018


This is the third version of the ubo/ssbo support for ARB_gl_spirv. It
is mostly a v2 resend, rebased against master, and small tweaks to fix
minor rebase conflicts.

Just to remember:

   * AOA of ubo/ssbo not included. Will be supported on a future
     series.

   * This series include two patches at the end, not really related
     with ubo/ssbo support. Just included on this series to get all
     the ARB_gl_spirv CTS tests passing.

Patches can be found here:
  https://github.com/Igalia/mesa/tree/arb_gl_spirv-series6-ubo-ssbo-v3

And can be tested with:
  https://github.com/Igalia/piglit/tree/arb_gl_spirv-series5-ubo-ssbo-v3

Thanks in advance.

Alejandro Piñeiro (23):
  spirv/nir: translate uniform blocks
  spirv/nir: translate ssbo
  spirv/nir: setting interface type for ubos/ssbos
  spirv/nir: fill up nir variable info for ubos and ssbo
  spirv/nir: include SPIR-V explicit offset on the glsl struct type
  spirv/nir: include row major coming from SPIR-V on the glsl type
  spirv/nir: don't set interface_type if it is not a struct
  nir/types: add three new wrapper helpers
  glsl_types/nir: add matrix_stride plus nir wrapper helpers
  spirv/nir: fill glsl_struct_field explicit_matrix_stride
  glsl_types/nir: add explicit_array_stride plus nir wrapper helpers
  spirv/nir: fill glsl_type array stride
  nir: add is_in_ubo/ssbo/block helpers
  nir/linker: add gl_nir_link_uniform_blocks.c
  nir/linker: fill is_shader_storage for uniforms
  nir/linker: use only the array element type for array of ssbo/ubo
  nir/linker: fill up uniform_storage with explicit data
  nir/linker: update already processed uniforms search for UBOs/SSBOs
  nir/linker: add program ubo/ssbo at the resource list
  i965: use GLboolean for all brw_link_shader returns
  i965: call to gl_nir_link_uniform_blocks
  mesa: add NULL name check for NUM_ACTIVE_VARIABLES query
  mesa: add NULL name check for several length queries

Antia Puentes (2):
  nir/linker: Set the uniform's block_index
  nir/linker: Add inputs/outputs to the program resource list

Neil Roberts (3):
  spirv/nir: Handle location decorations on block interface members
  nir/linker/i965: Lower vulkan_resource_index during linking
  nir/linker: handle non-ubo uses of vulkan_resource_index

 src/compiler/Makefile.sources                      |   2 +
 src/compiler/glsl/gl_nir.h                         |   4 +
 src/compiler/glsl/gl_nir_link_uniform_blocks.c     | 713 +++++++++++++++++++++
 src/compiler/glsl/gl_nir_link_uniforms.c           | 178 ++++-
 src/compiler/glsl/gl_nir_linker.c                  |  93 +++
 src/compiler/glsl/gl_nir_linker.h                  |   3 +
 src/compiler/glsl/gl_nir_lower_samplers_as_deref.c |   2 +-
 .../glsl/gl_nir_lower_vulkan_resource_index.c      | 163 +++++
 src/compiler/glsl/meson.build                      |   2 +
 src/compiler/glsl_types.cpp                        |  31 +-
 src/compiler/glsl_types.h                          |  23 +-
 src/compiler/nir/nir.h                             |  22 +
 src/compiler/nir/nir_lower_io_arrays_to_elements.c |   3 +-
 src/compiler/nir/nir_split_per_member_structs.c    |   3 +-
 src/compiler/nir/nir_split_vars.c                  |   7 +-
 src/compiler/nir_types.cpp                         |  47 +-
 src/compiler/nir_types.h                           |  20 +-
 src/compiler/spirv/spirv_to_nir.c                  |  24 +-
 src/compiler/spirv/vtn_private.h                   |   6 +
 src/compiler/spirv/vtn_variables.c                 |  90 ++-
 src/mesa/drivers/dri/i965/brw_link.cpp             |  12 +-
 src/mesa/main/shader_query.cpp                     |  42 +-
 src/mesa/main/shaderapi.c                          |  26 +-
 23 files changed, 1433 insertions(+), 83 deletions(-)
 create mode 100644 src/compiler/glsl/gl_nir_link_uniform_blocks.c
 create mode 100644 src/compiler/glsl/gl_nir_lower_vulkan_resource_index.c

-- 
2.14.1



More information about the mesa-dev mailing list