[Mesa-dev] Reducing get.c size (and get_es1.c and get_es2.c)

Kristian Høgsberg krh at bitplanet.net
Tue May 11 11:08:42 PDT 2010


2010/5/11 Brian Paul <brianp at vmware.com>:
> Kristian Høgsberg wrote:
>>
>> 2010/5/6 Kristian Høgsberg <krh at bitplanet.net>:
>>>
>>> Hi,
>>>
>>> Ok, I suppose this is not the most pressing issue in mesa, but I was
>>> toying with an idea of how to reduce get.c size and integrate
>>> get_es1.c and get_es2.c and I had to try it out.  Of course it ended
>>> up being a bigger project and took a couple of days, but in the end I
>>> think it turned out to be a worthwhile effort.  The result is the two
>>> patches on the get-optimagix branch in my personal mesa repo:
>>>
>>>  http://cgit.freedesktop.org/~krh/mesa/log/?h=get-optimagix
>>
>> I've updated the patch on the branch here, but I'm still not going to
>> send it to the list (it's 500k and most of which deletes generated
>> code).  But I've been going back and forth with Brian about the patch
>> a few times and we found a few bugs and made the code a little faster.
>>  Brian cooked up a small micro-benchmark for the glGet*v() functions
>> and it turned out that the code was actually slower than the old
>> generated code.  With a little tweaking of the table lookup and adding
>> a couple of likely() annotations, I got the code from 30s to 23s,
>> where the old code would take 15s.  That's still 17 million gets per
>> second, so I doubt the new code is going to be a bottleneck.
>
> It looks like piglit's texunits test is failing, compared to Mesa/master.
>  It may be an issue with flush-current when getting the curren texture
> coords.

Fixed, didn't initialize 'unit' in find_custom_value().

> I'd like to see comments on more of the internal functions, like
> find_value() to describe the parameters in/out.

Ok, done.

> Also, could you replace the #ifdef DEBUG stuff with a separate #ifdef
> GET_DEBUG or similar to avoid printing the hash table collision info all the
> time in debug builds?

Sure, done.

> There hasn't been any other feedback so I'd so go ahead and commit it to
> master when these things are fixed.

Done, and I updated the table with your recent feedback changes.

Kristian


More information about the mesa-dev mailing list