On 11/06/2017 02:54 PM, Brian Paul wrote:
> On 11/06/2017 02:27 PM, Ian Romanick wrote:
>> On 11/06/2017 01:00 PM, Brian Paul wrote:
>>> Declare glsl_type::sampled_type as glsl_base_type as we do for the
>>> base_type field.  And make base_type a bitfield to save a few bytes.
>>
>> Hmm... I have mixed feelings about this.  I made a conscious decision to
>> have base_type be "full size" because it's used a lot.  I suspect there
>> will be some increase in code size across this change.  There's probably
>> also some performance difference, but it may not be enough to be
>> measurable.  I do like actually using type names. :)
>>
>> As new base types were added, sampled_type remained 2 bits because GLSL
>> only allows float, int and uint.  This is the reason GLSL_TYPE_UINT64
>> and GLSL_TYPE_INT64 are not grouped with GLSL_TYPE_UINT and
>> GLSL_TYPE_INT.
>>
>> I wonder if it might be more compact (in terms of generated code) to
>> make both fields 8 bits and group them together.
> 
> Probably.  I can do that in a v2.  Otherwise, I'm fine with leaving
> base_type unchanged.  Your call.

I tried my original suggestion, and I also tried using
__attribute__((__packed__)) on the glsl_base_type enum.  Is there an
equivalent to this for Visual Studio?

Here are the results I got for an optimized release build:

   text    data     bss     dec     hex filename
10339299 345184  549312 11233795 ab6a03 lib64/i965_dri.so before
10346970 345184  549312 11241466 ab87fa lib64/i965_dri.so this patch
10340979 345184  549312 11235475 ab7093 lib64/i965_dri.so :8 for both
10339963 345184  549312 11234459 ab6c9b lib64/i965_dri.so packed enum

This patch adds about 7.5k, and using :8 for sampled_type and
glsl_base_type adds only 1.5k.  The packed enum is the clear winner.  It
only adds ~600 bytes.

The results for 32-bit are similar.

   text    data     bss     dec     hex filename
11599089 270876  422916 12292881 bb9311 lib/i965_dri.so before
11608245 270876  422916 12302037 bbb6d5 lib/i965_dri.so this patch
11600549 270876  422916 12294341 bb98c5 lib/i965_dri.so :8 for both
11600780 270876  422916 12294572 bb99ac lib/i965_dri.so packed enum

Here, :8 and packed enum are about the same.  Which, honestly, is what I
would have expected.  8 bits is 8 bits... it really shouldn't matter how
you declare them. *shrug*

> -Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to