git://people.freedesktop.org/~jljusten/mesa program-binary-shader-cache I found that when running DOTA2, most programs were skipping the shader cache. It appears that since DOTA2 uses ARB_get_program_binary, the programs loaded with ProgramBinary set the LinkStatus to LINKING_SUCCESS.
Currently we never look in the shader cache when the LinkStatus is set to LINKING_SUCCESS, so we would always fallback to generating the i965 gen program from NIR. We would still save the program to the shader cache, but the next time DOTA2 ran, it would still use ProgramBinary, and once again we would regenerate the program from NIR. I also looked into whether we could also check the shader cache for programs that have a LinkStatus of LINKING_SUCCESS. I think this might be possible, but given that we skip the shader cache for programs using transform feedback, and they set LinkStatus to LINKING_SUCCESS, it was a bit more difficult to ensure things would always behave correctly. Cc: Timothy Arceri <tarc...@itsqueeze.com> Jordan Justen (2): glsl/serialize: Save shader program metadata sha1 main/program_binary: In ProgramBinary set link status as LINKING_SKIPPED src/compiler/glsl/serialize.cpp | 4 ++++ src/mesa/main/program_binary.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) -- 2.16.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev