On Thu, Apr 05, 2001 at 12:45:52PM -0500, Kelly Martin wrote:
> Hm, it does not.  The issue with whirlpinch is that there's only a
> weak locality relationship between destionation pixels (which are
> iterated across the image) and source pixels (which are fetched with
> the pixel fetcher).  I haven't looked too closely at your blocking

That is right, but destination and source for themselves have good locality
(ie. the next pixel isn't 500 pixels away from the last).
I have tried whirl&pinch with huge distortion values, and the worst case was
8s instead of 6.5s, still better than 30s ;-)

> patch, but I suspect that much the same improvement would be had by
> using a pixel region (which respects tiles) to iterate across the
> destination region.  

That is possible... Is there a filter that definitely uses the pixel region
stuff? Most filters I have seen only use one row, which may not be enough
"locally", since it uses only one pixel but has to fill a whole cacheline
(4/8 pixel). I will try whether I can speed up bumpmap also, since this
takes also the magical 30s and is much more often used in scripts than the
whirl&pinch module.

I don't know how large a tile is, but since IMHO the major impact of
blocking seems to come from the CPU cache, I suspect that is too big for
older CPUs. I have done the whirl&pinch blocking thing about three years ago
(and forgot to send the patch), and tried it on an Alpha21164 and a P5. 

Both have only very small L1-caches (Alpha has 8K) and relatively slow L2
caches (+L3 for Alpha). The best blocking factor for those CPUs was between
64 and 128. My Athlon now also tolerates 512, 32 only is only slightly (2%)
slower, but should work for all CPUs fairly good.

         Georg Acher, [EMAIL PROTECTED]         
          "Oh no, not again !" The bowl of petunias          
Gimp-developer mailing list

Reply via email to