[Mesa-dev] [PATCH 00/10] GL_OES_get_program_binary extension

Tapani Pälli tapani.palli at intel.com
Wed Jan 29 01:24:55 PST 2014


Hi;

Here's the binary shader patch-set, I've fixed issues Paul found 
in the review earlier. There are lots of little changes but mainly: 

- more validation done when reading, also a special validation structure 
is introduced to bail out early if things do not seem to match, reading 
checks that we are not attempting to read over the blob boundary
- smaller blob size, now uniform storage is not serialized but gets 
generated as zero and constant initializer values are set if needed
- each user glsl type is serialized only once (requested by Paul)
- no more LinkShader call, now there is enough post-link information 
(this tested for Intel driver, others might require more)

branch with changes:
http://cgit.freedesktop.org/~tpalli/mesa/log/?h=oes_get_program_binary

branch that automatically caches linked programs and loads them on link:
http://cgit.freedesktop.org/~tpalli/mesa/log/?h=automatic_cache
(experiment to validate the extension functionality with any app)

I've been testing this set with a particular gles2 engine that supports 
binary caching. Also I've run automatic_cache on glbenchmark and some other 
random applications. I'm planning to make changes for Piglit shaderrunner to 
support cache so that Piglit could be used for the validation.

I know that Paul is very busy ATM so I would appreciate if someone else has 
time to go through some of this, thanks!


Tapani Pälli (10):
  glsl: memory_writer helper class for data serialization
  glsl: serialize methods for IR instructions
  glsl: memory_map helper class for data deserialization
  glsl: add MESA_SHADER_CACHE_MAGIC string for shader binary cache
  glsl: export populate_symbol_table function
  glsl: add MAX_NUM_STATE_SLOTS and check against builtin uniform
    variables
  glsl: ir_deserializer class for the binary shader cache
  mesa: iterate method for string_to_uint_map
  glsl: functions to serialize gl_shader and gl_shader_program
  mesa: OES_get_program_binary extension functionality

 src/glsl/Makefile.sources      |   3 +
 src/glsl/builtin_variables.cpp |   3 +
 src/glsl/ir.h                  |  45 ++
 src/glsl/ir_deserializer.cpp   | 910 +++++++++++++++++++++++++++++++++++++++++
 src/glsl/ir_deserializer.h     | 133 ++++++
 src/glsl/ir_serialize.cpp      | 407 ++++++++++++++++++
 src/glsl/ir_serialize.h        |  36 ++
 src/glsl/linker.cpp            |   2 +-
 src/glsl/linker.h              |   3 +
 src/glsl/memory_map.h          | 171 ++++++++
 src/glsl/memory_writer.h       | 188 +++++++++
 src/glsl/shader_cache.cpp      | 734 +++++++++++++++++++++++++++++++++
 src/glsl/shader_cache.h        |  58 +++
 src/glsl/shader_cache_magic.h  |  36 ++
 src/mesa/main/config.h         |   4 +
 src/mesa/main/shaderapi.c      |  47 ++-
 src/mesa/program/hash_table.h  |   8 +
 17 files changed, 2781 insertions(+), 7 deletions(-)
 create mode 100644 src/glsl/ir_deserializer.cpp
 create mode 100644 src/glsl/ir_deserializer.h
 create mode 100644 src/glsl/ir_serialize.cpp
 create mode 100644 src/glsl/ir_serialize.h
 create mode 100644 src/glsl/memory_map.h
 create mode 100644 src/glsl/memory_writer.h
 create mode 100644 src/glsl/shader_cache.cpp
 create mode 100644 src/glsl/shader_cache.h
 create mode 100644 src/glsl/shader_cache_magic.h

-- 
1.8.5.3



More information about the mesa-dev mailing list