[Mesa-dev] [PATCH 0/3] save about 1MB per llvm vertex shader

Frank Henigman fjhenigman at google.com
Wed Nov 27 15:00:14 PST 2013


So the LLVM project did not care for any of my suggestions about JIT
memory management.
Not a big surprise as they don't seem to want much to do with JIT
anymore, preferring MCJIT.
Some day mesa will probably have to abandon JIT too.  Until then I
think the cost of maintaining
the memory manager classes I've introduced in this patch set is far
outweighed by the benefit of
saving about 1MB per shader.

v3 of the set follows.  Patch 1 is updated to work with llvm 3.4-rc1.
2 and 3 just rebased.

As for the MCJIT-only future, apparently it has a friendlier memory
manager to work with.
I haven't tried it yet as I don't want to introduce more code to mesa
as long as we can get
away with one manager for both JIT and MCJIT, but I'll see about
setting up a branch for
for MCJIT-only stuff, to be pulled into mesa when the time is right.

On Tue, Oct 1, 2013 at 3:16 PM, Frank Henigman <fjhenigman at google.com> wrote:
> I've now tested with LLVM from 3.1 to 3.4, thus covering both JIT and MCJIT.
> I also factored out a generic delegating memory manager and sent it to
> the LLVM list: http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-October/066043.html
> Do you want to see that play out or could we add this to mesa now?
> v2 of this set has been sent to the mesa list.  Only patch 1 changed
> (refactored as mentioned above), 2-3 were just rebased.
> Thanks.  Sorry for the late response.
>
> On Tue, Jul 9, 2013 at 3:05 PM, Jose Fonseca <jfonseca at vmware.com> wrote:
>> Frank,
>>
>> Sorry for the long delay.  Lately I haven't been able to keep up with email, both internal or external.
>>
>> This series looks great.
>>
>> Two comments:
>>
>> - currently we prefer the old JIT to MCJIT. could you confirm that this series should work with the old JIT and MCJIT just as well?
>>
>> - we should probably consider upstreaming ShaderMemoryManager into LLVM (after renaming), as there might be other users interested, and also because it would reduce the burden of keeping this code up-to-date with LLVM
>>
>>
>> Jose
>>
>> ----- Original Message -----
>>> Patch 1 changes how llvm allocates memory to hold generated code, and will
>>> save memory for llvm vertex shaders, geometry shaders and llvmpipe. It's not
>>> so pretty but llvm makes life difficult for us: default memory manager is
>>> not accessible to derive from. I also tried generating relocatable code so
>>> it could just be copied out, but it would crash in that code. (Didn't dig
>>> into why.)
>>> Patch 3 saves additional memory but so far only for vertex shaders. At a
>>> glance it seems simple to do the same for geometry shaders and llvmpipe.
>>> I'll take a stab at those if there is interest.
>>>
>>> No piglit regressions on pineview with gallium driver. This code has also
>>> been in Chrome OS for a few months.
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>>


More information about the mesa-dev mailing list