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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev