softpipe: change TEX_TILE_SIZE and NUM_TEX_TILE_ENTRIES
authorRoland Scheidegger <sroland@vmware.com>
Wed, 22 May 2013 20:55:21 +0000 (22:55 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 22 May 2013 20:57:27 +0000 (22:57 +0200)
commit2b291eaa90b3aa44cafd28c21855a3808b60bc68
tree5e864b6d5278676b878e4df829a499562f774f22
parent2f567fb7b50e39aef20f0a0cd9b2eba184ed6441
softpipe: change TEX_TILE_SIZE and NUM_TEX_TILE_ENTRIES

Initially we had NUM_TEX_TILE_ENTRIES of 50, however this was using too much
memory (mostly because the tile cache is operating on fixed max current
sampler views which could be fixed but that's another topic). So it was
decreased to 4. However this is a ridiculously low number which can't
actually really work (the number of tiles needed for as little as
a single quad with linear_mipmap_linear is 2 to 8 for a 2d texture, and
4 to 16 for a 3d texture), as it just about guarantees there will be
cache thrashing sometimes (just about always for 3d textures in fact, since
while there are 4 entries the cache is direct mapped).
So increase that number to 16 (which is still on the low side for direct
mapped cache though I guess using something like 4-way associativity would
be more effective than increasing this further) which has at least some good
chance to avoid thrashing. Since we don't want to increase memory requirements
however in turn decrease the tile size accordingly from 64 to 32 (as a bonus
point this also decreases the cost of texture thrashing which might still
happen sometimes).
I've seen performance improvement in the order of factor ~200 (specifically,
drawing the first frame from the replay from bug 41787 needs "only" ~10s
instead of ~30min, meaning I can actually compare the output with other
drivers...) with this.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/drivers/softpipe/sp_tex_tile_cache.h