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

Currently we only save the nir program out when GetProgramBinary is
called.

It is likely that the program using ARB_get_program_binary will also
use the default gen program after loading a program with
ProgramBinary. Therefore, it is also likely to save significant time
if we save and restore the default gen program with
ARB_get_program_binary.

Since we use driver_cache_blob in gl_program for both the shader cache
and ARB_get_program_binary, I had to allow the shader cache and
ARB_get_program_binary to have separate paths to fill in different
binaries for driver_cache_blob.

We could also consider just saving the default gen program out with
the shader cache glsl serialized cache entry. Then the shader cache
and ARB_get_program_binary would still use the same format for
driver_cache_blob.

I tested this with DOTA 2 which uses ARB_get_program_binary. I also
tested in CI which runs the deqp/cts/piglit ARB_get_program_binary
tests.

Cc: Timothy Arceri <tarc...@itsqueeze.com>

Jordan Justen (19):
  mesa: Add disk shader cache driver blob callback
  st/mesa: Skip serializing driver_cache_blob if it exists
  st/mesa: i965: Use ShaderCacheSerializeDriverBlob driver function
  i965: Use ShaderCacheSerializeDriverBlob driver function
  mesa: Always call ProgramBinarySerializeDriverBlob
  i965: Move brw_program_*serialize_nir to brw_program_binary.c
  i965: Add brw_program_deserialize_driver_blob
  i965: Add brw_(read|write)_blob_program_data functions
  i965: Add brw_stage_cache_id to map gl stages to brw cache_ids
  i965: Add brw_prog_key_set_id helper to set the program id on any
    stage
  i965: Use brw_prog_key_set_id in disk cache load/store code
  i965: Add support for driver cache blob containing the gen program
  compiler/blob: Add blob_skip_bytes
  i965: Regenerate blob without gen program for shader cache
  i965: Replace brw_setup_tex_for_precompile brw with devinfo
  i965: Add brw_populate_default_key
  mesa: Add gl_shader_program param to ProgramBinarySerializeDriverBlob
  i965: Add flag_state param to brw_search_cache
  i965: Support saving the gen program with glGetProgramBinary

 src/compiler/blob.c                            |   7 +
 src/compiler/blob.h                            |   6 +
 src/compiler/glsl/shader_cache.cpp             |   8 +
 src/mesa/drivers/dri/i965/brw_blorp.c          |   4 +-
 src/mesa/drivers/dri/i965/brw_clip.c           |   5 +-
 src/mesa/drivers/dri/i965/brw_context.c        |   6 +-
 src/mesa/drivers/dri/i965/brw_context.h        |   8 +-
 src/mesa/drivers/dri/i965/brw_cs.c             |  22 +-
 src/mesa/drivers/dri/i965/brw_cs.h             |   4 +
 src/mesa/drivers/dri/i965/brw_disk_cache.c     |  73 ++-----
 src/mesa/drivers/dri/i965/brw_ff_gs.c          |   6 +-
 src/mesa/drivers/dri/i965/brw_gs.c             |  23 +-
 src/mesa/drivers/dri/i965/brw_gs.h             |   4 +
 src/mesa/drivers/dri/i965/brw_link.cpp         |  11 -
 src/mesa/drivers/dri/i965/brw_program.c        |  70 +++---
 src/mesa/drivers/dri/i965/brw_program.h        |  30 ++-
 src/mesa/drivers/dri/i965/brw_program_binary.c | 283 ++++++++++++++++++++++++-
 src/mesa/drivers/dri/i965/brw_program_cache.c  |  26 ++-
 src/mesa/drivers/dri/i965/brw_sf.c             |   5 +-
 src/mesa/drivers/dri/i965/brw_state.h          |  10 +-
 src/mesa/drivers/dri/i965/brw_tcs.c            |  64 +++---
 src/mesa/drivers/dri/i965/brw_tes.c            |  47 ++--
 src/mesa/drivers/dri/i965/brw_vs.c             |  32 ++-
 src/mesa/drivers/dri/i965/brw_vs.h             |   4 +
 src/mesa/drivers/dri/i965/brw_wm.c             |  55 +++--
 src/mesa/drivers/dri/i965/brw_wm.h             |   4 +
 src/mesa/main/dd.h                             |  16 ++
 src/mesa/main/program_binary.c                 |  21 +-
 src/mesa/state_tracker/st_context.c            |   8 +-
 src/mesa/state_tracker/st_shader_cache.c       |  19 ++
 src/mesa/state_tracker/st_shader_cache.h       |  10 +
 31 files changed, 658 insertions(+), 233 deletions(-)

-- 
2.16.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to