from sigsev
I have some additional information about the fix from emailing Eric Smith and John Schoenick about it just now:
Eric:
We were leaking gl memory. JohnS (cc’d) can explain in more detail if you’re curious.
John:
More specifically, in some cases, especially in multi-threaded mode, we would release GL textures on the thread without the context. GL will happily accept, and ignore, the request to do so, at which point the texture memory (and video and shadow system memory) is lost.
Me:
I see. So from some quick sleuthing, it looks like:
- GLMContext now has a CTSQueue<CGLMTex *>
- GLMContext:elTex now pushes to that call queue
- GLMContext:resent now calls GLMContext:rocessTextureDeletes to process the calls in the queue
Since this is a libtogl fix, I assume we'll see this fix in CS:GO and other games soon? (Or perhaps that's even already happened?)
John:
This fix actually was discovered in CS:GO, it should ship shortly there as well.
(For the uninitiated,
libtogl is the name of Valve's DirectX-to-OpenGL translation layer library that allows Source engine to run on OS X and Linux.)
source