git://people.freedesktop.org/~jljusten/mesa i965-get-program-binary-v2 v2: * GL_MESA_program_binary_formats published in Khronos OpenGL-Registry * Drop compression. (Tim)
v1: * https://lists.freedesktop.org/archives/mesa-dev/2017-November/176095.html This series adds i965 support for ARB_get_program_binary with one supported format. We make use of the glsl program serialization (introduced with shader cache) along with nir serialization. Later we can add support for saving the gen binary program as well. Reviews for patches: docs/specs: Add GL_MESA_program_binary_formats extension spec Cc: Ian Romanick <[email protected]> Cc: Timothy Arceri <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]> include: Add GL_MESA_program_binary_formats to GL/GLES2 ext.h files Reviewed-by: Nicolai Hähnle <[email protected]> glsl: Split out shader program serialization Reviewed-by: Timothy Arceri <[email protected]> main, glsl: Add UniformDataDefaults which stores uniform defaults Reviewed-by: Timothy Arceri <[email protected]> i965: Add brw_program_deserialize_nir Reviewed-by: Timothy Arceri <[email protected]> i965: Free serialized nir after deserializing Reviewed-by: Timothy Arceri <[email protected]> i965: Add brw_program_serialize_nir Reviewed-by: Timothy Arceri <[email protected]> i965: Fix memory leak when serializing nir Reviewed-by: Timothy Arceri <[email protected]> main: Allow non-zero NUM_PROGRAM_BINARY_FORMATS Reviewed-by: Nicolai Hähnle <[email protected]> main: Support 1 Mesa format with get for GL_PROGRAM_BINARY_FORMATS Reviewed-by: Nicolai Hähnle <[email protected]> main: Support calling driver for GL_PROGRAM_BINARY_LENGTH Reviewed-by: Nicolai Hähnle <[email protected]> main: Support calling driver for GetProgramBinary Reviewed-by: Nicolai Hähnle <[email protected]> main: Support calling driver for ProgramBinary Reviewed-by: Nicolai Hähnle <[email protected]> main: Clear shader program data whenever ProgramBinary is called Reviewed-by: Nicolai Hähnle <[email protected]> util: Add Mesa ARB_get_program_binary helper functions i965: Add ARB_get_program_binary support using nir_serialization docs: Update GL_ARB_get_program_binary docs to support 1 format Jordan Justen (17): docs/specs: Add GL_MESA_program_binary_formats extension spec include: Add GL_MESA_program_binary_formats to GL/GLES2 ext.h files glsl: Split out shader program serialization main, glsl: Add UniformDataDefaults which stores uniform defaults i965: Add brw_program_deserialize_nir i965: Free serialized nir after deserializing i965: Add brw_program_serialize_nir i965: Fix memory leak when serializing nir main: Allow non-zero NUM_PROGRAM_BINARY_FORMATS main: Support 1 Mesa format with get for GL_PROGRAM_BINARY_FORMATS main: Support calling driver for GL_PROGRAM_BINARY_LENGTH main: Support calling driver for GetProgramBinary main: Support calling driver for ProgramBinary main: Clear shader program data whenever ProgramBinary is called util: Add Mesa ARB_get_program_binary helper functions i965: Add ARB_get_program_binary support using nir_serialization docs: Update GL_ARB_get_program_binary docs to support 1 format docs/features.txt | 2 +- docs/relnotes/17.4.0.html | 1 + docs/specs/MESA_program_binary_formats.txt | 88 ++ docs/specs/enums.txt | 3 + include/GL/glext.h | 5 + include/GLES2/gl2ext.h | 5 + src/compiler/Makefile.sources | 2 + src/compiler/glsl/link_uniform_initializers.cpp | 2 + src/compiler/glsl/link_uniforms.cpp | 3 + src/compiler/glsl/meson.build | 2 + src/compiler/glsl/serialize.cpp | 1252 +++++++++++++++++++++++ src/compiler/glsl/serialize.h | 50 + src/compiler/glsl/shader_cache.cpp | 1185 +-------------------- src/compiler/shader_info.h | 1 + src/mapi/glapi/registry/gl.xml | 7 +- src/mesa/drivers/dri/i965/Makefile.sources | 1 + src/mesa/drivers/dri/i965/brw_context.c | 9 + src/mesa/drivers/dri/i965/brw_context.h | 16 + src/mesa/drivers/dri/i965/brw_disk_cache.c | 31 +- src/mesa/drivers/dri/i965/brw_link.cpp | 9 +- src/mesa/drivers/dri/i965/brw_program.c | 35 + src/mesa/drivers/dri/i965/brw_program.h | 7 + src/mesa/drivers/dri/i965/brw_program_binary.c | 187 ++++ src/mesa/drivers/dri/i965/meson.build | 1 + src/mesa/main/dd.h | 20 + src/mesa/main/get.c | 9 + src/mesa/main/get_hash_params.py | 4 +- src/mesa/main/mtypes.h | 14 + src/mesa/main/shaderapi.c | 64 +- src/util/Makefile.sources | 2 + src/util/meson.build | 2 + src/util/program_binary.c | 149 +++ src/util/program_binary.h | 70 ++ 33 files changed, 2000 insertions(+), 1238 deletions(-) create mode 100644 docs/specs/MESA_program_binary_formats.txt create mode 100644 src/compiler/glsl/serialize.cpp create mode 100644 src/compiler/glsl/serialize.h create mode 100644 src/mesa/drivers/dri/i965/brw_program_binary.c create mode 100644 src/util/program_binary.c create mode 100644 src/util/program_binary.h -- 2.14.1 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
