On 06/16/2013 11:57 AM, Frank Henigman wrote:
This works (has been in Chrome OS for a while) but only for vertex
shaders, not geometry shaders nor llvmpipe. I'm afraid I'm completely
ignorant about AMD drivers.
This applies on top of my recently posted memory saving patches.
Without them the cache would take up too much memory, ~1MB per item
compared to ~10KB.
If this is interesting to anyone maybe it can be pushed farther down
and leveraged by geometry shaders, llvmpipe, and more. I don't know
how much other apps care but it's a big win for Chrome because just
opening an empty tab recompiles some shaders and takes hundreds of
milliseconds on a low-end chromebook. Revisiting a page with a bunch
of shaders is seconds faster.
Only works with JIT right now, not MCJIT which is perhaps the future.
I see in LLVM 3.3 they've added some kind of caching to MCJIT. My
cache comes in before generating LLVM source however, thus should have
bigger savings than can be realized at the LLVM level.
Thanks in advance for any comments, and thanks to Jose Fonseca for
some earlier suggestions.
All shortcomings are purely my fault however.
I just took a quick look at the code for now (I might have time for a
closer review later).
1. I wonder if this new cache-related code should go into a new
draw_llvm_cache.c file.
2. We have a pipe_reference type for reference counting objects that you
might want to use.
3. The code looks a bit light on comments. You might want to scan the
code and put comments on anything that's not obvious. For example, what
does LLVM_CACHE_MAX_UNUSED mean?
Thanks.
-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev