Shader program caching at the driver level


It is a common practice for applications to sort by shader (and other states) before rendering. In order to implement this, I keep a cache of shader programs so I never call glCreateProgram for one that already exists.

My question is do drivers cache shader programs and objects under the hood? I imagine they do, at the least to avoid redundant compile and link steps. If so, is there still a cost associated with “switching shader programs” that are actually the same program under the hood (but different external IDs)?

I suppose this is more of a “just curious” question since I imagine it is a best practice for an application to do caching to minimize the number of GL objects created.


This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.