[Mesa-dev] [PATCH 0/2] Enable shader cache for ARB_get_program_binary

Emil Velikov emil.l.velikov at gmail.com
Mon Mar 12 17:31:49 UTC 2018


On 12 March 2018 at 00:25, Jordan Justen <jordan.l.justen at intel.com> wrote:
> 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 <tarceri at 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(-)
>
Jordan, Timothy,

Can you please add the respective Fixes tags before pushing these or
equivalent fixes.

Thanks
Emil


More information about the mesa-dev mailing list