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

Jordan Justen jordan.l.justen at intel.com
Mon Nov 20 22:27:26 UTC 2017


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 <idr at freedesktop.org>
    Cc: Timothy Arceri <tarceri at itsqueeze.com>
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

include: Add GL_MESA_program_binary_formats to GL/GLES2 ext.h files
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

glsl: Split out shader program serialization
    Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

main, glsl: Add UniformDataDefaults which stores uniform defaults
    Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

i965: Add brw_program_deserialize_nir
    Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

i965: Free serialized nir after deserializing
    Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

i965: Add brw_program_serialize_nir
    Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

i965: Fix memory leak when serializing nir
    Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

main: Allow non-zero NUM_PROGRAM_BINARY_FORMATS
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

main: Support 1 Mesa format with get for GL_PROGRAM_BINARY_FORMATS
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

main: Support calling driver for GL_PROGRAM_BINARY_LENGTH
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

main: Support calling driver for GetProgramBinary
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

main: Support calling driver for ProgramBinary
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

main: Clear shader program data whenever ProgramBinary is called
    Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

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



More information about the mesa-dev mailing list