[Mesa-dev] [PATCH v2 00/21] ARB_gl_spirv: support for uniforms and some extras

Alejandro Piñeiro apinheiro at igalia.com
Sat May 12 09:40:38 UTC 2018


Hi, this is the second version for this series. The info for the
original one can be read here:

https://lists.freedesktop.org/archives/mesa-dev/2018-April/192512.html

Some of the patches are already reviewed (thanks to Timothy Arceri).

The main differences between v1 and v2 are:

 * The NIR linker was moved from compiler/nir to compiler/glsl as
   agreed with Timothy Arceri during the review of v1. Due this
   change, several methods were also renamed.

 * The patch "i965: account for NIR uniforms without name" changed
   too, due some issues we found since v1.

 * The patch "nir/linker: add some cross stage uniform validation" was
   dropped, as we found that was incomplete/wrong, and we would need
   to re-think this kind of validations. So this series doesn't
   include any cross-stage uniform validation. That it is ok for this
   series, as it is about the core of the uniform support, but not the
   full feature yet.

The tree for this series can be found on the following repository:

   * https://github.com/Igalia/mesa/tree/arb_gl_spirv-series2-uniforms-v1

And can be tested (although it would be needed to use
MESA_EXTENSION_OVERRIDE) with the following piglit series:

   * https://github.com/Igalia/piglit/tree/arb_gl_spirv-series1-uniforms-v1


Alejandro Piñeiro (4):
  i965: use gl_shader_program_data::spirv
  mesa/main: add NULL name check when searching for a resource name
  compiler/link: add linker_util.h, move linker_error/warning to it
  compiler/link: move add_program_resource to linker_util

Eduardo Lima Mitev (10):
  mesa/main: Add a 'spirv' flag to gl_shader_program_data
  nir/lower_samplers: Limit assert to GLSL shader programs
  nir/types: Add a glsl_get_component_slots() utility
  nir/types: Add a utility wrapper to glsl_type::sampler_index()
  anv/nir: Use nir_variable's type if interface_type is null
  nir/linker: Add gl_nir_link_uniforms()
  nir/linker: Add nir_build_program_resource_list()
  i965: Build SPIR-V programs' resource list using NIR
  i965: account for NIR uniforms without name
  i965: Link uniforms of SPIR-V programs using the NIR linker

Neil Roberts (6):
  nir: Add explicit_binding to nir_variable
  spirv: Get rid of vtn_variable_mode_image/sampler
  spirv: Set nir_variable->explicit_binding
  nir/linker: Set the uniform initial values
  i965: Update TexturesUsed after linking the shaders
  i965: Setup glsl uniforms by index rather than name matching

Nicolai Hähnle (1):
  spirv: translate default-block uniforms

 src/compiler/Makefile.sources                      |   6 +
 .../glsl/gl_nir_link_uniform_initializers.c        | 292 +++++++++++++
 src/compiler/glsl/gl_nir_link_uniforms.c           | 461 +++++++++++++++++++++
 src/compiler/glsl/gl_nir_linker.c                  |  93 +++++
 src/compiler/glsl/gl_nir_linker.h                  |  47 +++
 src/compiler/glsl/gl_nir_lower_samplers.c          |   3 +-
 src/compiler/glsl/glsl_to_nir.cpp                  |   1 +
 .../glsl/link_uniform_block_active_visitor.cpp     |   1 +
 src/compiler/glsl/linker.cpp                       |  76 +---
 src/compiler/glsl/linker.h                         |   8 +-
 src/compiler/glsl/linker_util.cpp                  |  64 +++
 src/compiler/glsl/linker_util.h                    |  48 +++
 src/compiler/glsl/meson.build                      |   6 +
 src/compiler/glsl/program.h                        |   8 -
 src/compiler/nir/nir.h                             |   5 +
 src/compiler/nir_types.cpp                         |  13 +
 src/compiler/nir_types.h                           |   2 +
 src/compiler/spirv/spirv_to_nir.c                  |   4 +-
 src/compiler/spirv/vtn_cfg.c                       |   4 +-
 src/compiler/spirv/vtn_private.h                   |   4 +-
 src/compiler/spirv/vtn_variables.c                 |  56 +--
 src/intel/vulkan/anv_nir_apply_pipeline_layout.c   |   7 +-
 src/mesa/drivers/dri/i965/brw_link.cpp             |  29 +-
 src/mesa/drivers/dri/i965/brw_nir_uniforms.cpp     |  52 ++-
 src/mesa/drivers/dri/i965/brw_program.c            |   2 +-
 src/mesa/main/mtypes.h                             |   6 +
 src/mesa/main/shader_query.cpp                     |   5 +
 src/mesa/program/ir_to_mesa.cpp                    |   1 +
 28 files changed, 1167 insertions(+), 137 deletions(-)
 create mode 100644 src/compiler/glsl/gl_nir_link_uniform_initializers.c
 create mode 100644 src/compiler/glsl/gl_nir_link_uniforms.c
 create mode 100644 src/compiler/glsl/gl_nir_linker.c
 create mode 100644 src/compiler/glsl/gl_nir_linker.h
 create mode 100644 src/compiler/glsl/linker_util.cpp
 create mode 100644 src/compiler/glsl/linker_util.h

-- 
2.14.1



More information about the mesa-dev mailing list