[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