[Mesa-dev] [PATCH 00/17] i965 ARB_get_program_binary support

Jordan Justen jordan.l.justen at intel.com
Thu Nov 9 06:42:12 UTC 2017


git://people.freedesktop.org/~jljusten/mesa i965-get-program-binary-v1

This series adds i965 support for ARB_get_program_binary with greater
than 0 supported formats. Today we support this extension, but
advertise support for 0 formats. This series allows i965 to advertise
support for 1 format.

This series defines a common Mesa format for ARB_get_program_binary,
along with helper functions to read and write the format. We also
define an OpenGL Mesa spec to be used with this binary format. The
binary saved can only be reloaded on the exact same Mesa build using
the exact same hardware.

The i965 implementation saves out a serialize nir represenation of the
program. Later we can add support for saving the gen binary program as
well. (We will still need the nir program for state based recompiles.)

This implementation passes piglit, deqp and glcts functions. It also
works with Dota 2, which appears to make use of the extension.

Jordan Justen (17):
  docs/specs: Add GL_MESA_program_binary_formats extension spec
  include/GL: Add GL_MESA_program_binary_formats
  compiler: Fold shader_cache in with libglsl sources
  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/specs/MESA_program_binary_formats.txt      |   59 ++
 docs/specs/enums.txt                            |    3 +
 include/GL/gl.h                                 |    8 +
 src/compiler/Android.glsl.mk                    |    3 +-
 src/compiler/Makefile.glsl.am                   |    3 +-
 src/compiler/Makefile.sources                   |    8 +-
 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                  |    2 +-
 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  |  200 ++++
 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                          |    4 +
 src/mesa/main/shaderapi.c                       |   63 +-
 src/util/Makefile.sources                       |    2 +
 src/util/meson.build                            |    2 +
 src/util/program_binary.c                       |  322 ++++++
 src/util/program_binary.h                       |   91 ++
 32 files changed, 2162 insertions(+), 1245 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



More information about the mesa-dev mailing list