Hi Mathias,

Thanks for doing this.

Patch 2 looks great.

For patch 1 I'd prefer that instead of keeping a global list of contexts, these are passed by the caller as argument to gallivm_create() . It will be a more invasive change, but it will be cleaner. And in particular it will garantee that when llvmpipe contexts are destroyed there will be no lingering llvm contexts neither.

Jose    


On 13/07/14 17:13, Mathias Fröhlich wrote:
Hi Jose,

This makes llvmpipe thread safe as mandated by the OpenGL standard.
The changes replace the use of two global data structures with
non global ones.
The changes pass piglit as of today without regressions.
The patchset deviates form your last suggestion. But lacking sufficient time
I just went ahead and implemented something that fixes this problem
preserving hopefully enough of the memory savings the shared
ShaderMemoryManager initially provided. The more extended solution
with a single jit memory manager per GL context could be implemented
on top of this change.

Please review!
Mathias

Mathias Fröhlich (2):
   llvmpipe: Pool the LLVMContexts in use.
   llvmpipe: Make a llvmpipe OpenGL context thread safe.

  src/gallium/auxiliary/gallivm/lp_bld_init.c   | 87 ++++++++++++++++++++++++---
  src/gallium/auxiliary/gallivm/lp_bld_init.h   |  1 +
  src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 38 ++++++------
  src/gallium/auxiliary/gallivm/lp_bld_misc.h   |  3 +
  4 files changed, 100 insertions(+), 29 deletions(-)


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

Reply via email to