[Mesa-dev] [PATCH 2/2] glsl: Eliminate unused built-in variables after compilation

Ian Romanick idr at freedesktop.org
Thu May 29 14:26:53 PDT 2014


On 05/29/2014 02:20 PM, Matt Turner wrote:
> On Wed, May 28, 2014 at 6:35 PM, Ian Romanick <idr at freedesktop.org> wrote:
>> From: Ian Romanick <ian.d.romanick at intel.com>
>>
>> After compilation (and before linking) we can eliminate quite a few
>> built-in variables.  Basically, any uniform or constant (e.g.,
>> gl_MaxVertexTextureImageUnits) that isn't used (with one exception) can
>> be eliminated.  System values, vertex shader inputs (with one
>> exception), and fragment shader outputs that are not used and not
>> re-declared in the shader text can also be removed.
>>
>> gl_ModelViewProjectMatrix and gl_Vertex are used by the built-in
>> function ftransform.  There are some complications with eliminating
>> these variables (see the comment in the patch), so they are not
>> eliminated.
>>
>> Reduces the peak ir_variable memory usage in a trimmed apitrace of dota2
>> by 3.5MB on 64-bit.
> 
> What was the total memory usage of ir_variable? It's been hard for me
> to make sense of reductions without percentages.

Before: IR MEM: variable usage / name / total: 4118280 644100 4762380
After:  IR MEM: variable usage / name / total: 1473408 256871 1730279

Before the change, the ir_memory_usage visitor added up 4762380 bytes of
memory allocated for ir_variable, ir_variable::name, and
ir_variable::state_slots.  After the change it added up 1730279 bytes.
So... 63.7% reduction?



More information about the mesa-dev mailing list