[Mesa-dev] [PATCH v2 00/25] Initial gl_spirv and spirv_extensions support in Mesa and i965

Eduardo Lima Mitev elima at igalia.com
Thu Nov 30 17:28:13 UTC 2017


Hello,

This is the second version of the series providing initial support for ARB_gl_spirv and ARB_spirv_extensions in Mesa and i965.

First version of the series can be found at <https://lists.freedesktop.org/archives/mesa-dev/2017-November/177004.html>.

In this series we hope we have addressed all issues detected during the initial review. Thank you all who participated!

Taking the nitpicks and minor fixes apart, most important changes compared to the first version are:

* A dedicated 'spirv' flag was removed from gl_shader struct. Now we use the nulness of 'spirv_data' member for the same purpose.

* The per-program 'spirv' flag was moved out of this series, but will likely be re-introduced in the next delivery, because it will become necessary.

* We enforce one SPIR-V shader per stage, and fail linking if this condition is not met.

* 'SpirVCapabilities' struct of GL context constants is no longer a pointer but a static struct.

As usual, a tree of this series can be found at <https://github.com/Igalia/mesa/commits/arb_gl_spirv-series1-v2>.

A tree of the larger WIP branch from which this series is taken: <https://github.com/Igalia/mesa/commits/wip/igalia/arb_gl_spirv>.

Thanks in advance for the reviews!

cheers,
Eduardo

Alejandro Piñeiro (9):
  spirv_extensions: rename nir_spirv_supported_extensions
  mesa: move nir_spirv_supported_capabilities definition
  i965: initialize SPIR-V capabilities
  spirv_extensions: add GL_ARB_spirv_extensions boilerplate
  spirv_extensions: add list of extensions and to_string method
  spirv_extensions: define spirv_extensions_supported
  spirv_extensions: add spirv_supported_extensions on gl_constants
  spirv_extensions: i965: initialize SPIR-V extensions
  nir/spirv: add gl_spirv_validation method

Eduardo Lima Mitev (8):
  mesa/glspirv: Add struct gl_shader_spirv_data
  mesa/glspirv: Add a _mesa_spirv_link_shaders() placeholder
  mesa/program: Link SPIR-V shaders using the SPIR-V code-path
  mesa: Add a reference to gl_shader_spirv_data to gl_linked_shader
  mesa/glspirv: Create gl_linked_shader objects for a SPIR-V program
  mesa/glspirv: Add a _mesa_spirv_to_nir() function
  i965: Call spirv_to_nir() instead of glsl_to_nir() for SPIR-V shaders
  i965: Don't call process_glsl_ir() for SPIR-V shaders

Neil Roberts (1):
  mesa: Add boilerplate for the GL 4.6 alias of glSpecializeShaderARB

Nicolai Hähnle (7):
  mesa: add GL_ARB_gl_spirv boilerplate
  mesa/glspirv: Add struct gl_spirv_module
  mesa: implement SPIR-V loading in glShaderBinary
  mesa/shaderapi: add a getter for GL_SPIR_V_BINARY_ARB
  mesa: refuse to compile SPIR-V shaders or link mixed shaders
  mesa: add gl_constants::SpirVCapabilities
  mesa: Implement glSpecializeShaderARB

 src/amd/vulkan/radv_shader.c                |   4 +-
 src/compiler/Makefile.sources               |   2 +
 src/compiler/spirv/nir_spirv.h              |  21 +-
 src/compiler/spirv/spirv_extensions.c       |  77 +++++++
 src/compiler/spirv/spirv_extensions.h       |  63 ++++++
 src/compiler/spirv/spirv_to_nir.c           | 160 +++++++++++++-
 src/compiler/spirv/vtn_private.h            |   2 +-
 src/intel/vulkan/anv_pipeline.c             |   4 +-
 src/mapi/glapi/gen/ARB_gl_spirv.xml         |  21 ++
 src/mapi/glapi/gen/ARB_spirv_extensions.xml |  13 ++
 src/mapi/glapi/gen/GL4x.xml                 |  11 +
 src/mapi/glapi/gen/Makefile.am              |   2 +
 src/mapi/glapi/gen/gl_API.xml               |   8 +
 src/mapi/glapi/gen/gl_genexec.py            |   1 +
 src/mapi/glapi/gen/meson.build              |   2 +
 src/mesa/Makefile.sources                   |   4 +
 src/mesa/drivers/dri/i965/brw_context.c     |  26 +++
 src/mesa/drivers/dri/i965/brw_link.cpp      |   3 +-
 src/mesa/drivers/dri/i965/brw_program.c     |  14 +-
 src/mesa/main/context.c                     |   2 +
 src/mesa/main/extensions_table.h            |   2 +
 src/mesa/main/get.c                         |   7 +
 src/mesa/main/get_hash_params.py            |   3 +
 src/mesa/main/getstring.c                   |  12 +
 src/mesa/main/glspirv.c                     | 331 ++++++++++++++++++++++++++++
 src/mesa/main/glspirv.h                     | 108 +++++++++
 src/mesa/main/mtypes.h                      |  31 +++
 src/mesa/main/shaderapi.c                   |  60 ++++-
 src/mesa/main/shaderobj.c                   |   3 +
 src/mesa/main/spirv_extensions.c            |  60 +++++
 src/mesa/main/spirv_extensions.h            |  49 ++++
 src/mesa/main/tests/dispatch_sanity.cpp     |   3 +
 src/mesa/meson.build                        |   4 +
 src/mesa/program/ir_to_mesa.cpp             |  23 +-
 34 files changed, 1098 insertions(+), 38 deletions(-)
 create mode 100644 src/compiler/spirv/spirv_extensions.c
 create mode 100644 src/compiler/spirv/spirv_extensions.h
 create mode 100644 src/mapi/glapi/gen/ARB_gl_spirv.xml
 create mode 100644 src/mapi/glapi/gen/ARB_spirv_extensions.xml
 create mode 100644 src/mesa/main/glspirv.c
 create mode 100644 src/mesa/main/glspirv.h
 create mode 100644 src/mesa/main/spirv_extensions.c
 create mode 100644 src/mesa/main/spirv_extensions.h

-- 
2.15.0



More information about the mesa-dev mailing list