<?xml version="1.0" ?>

<kc>
<title>Gimp Traffic</title>
<author contact="mailto:cflagg@kdigital.com">Cris Flagg</author>
<issue num="39" date="16 Apr 2001 00:00:00 -0800" />

<headquote>
<a href="http://www.gimp.org">The GIMP Homepage</a> | 
<a href="http://www.xach.com/gimp/news/index.html">The GIMP News Archive</a> | 
<a href="http://www.gimp.org/mailing_list.html">The GIMP Mailing Lists</a> | 
<a href="http://www.rru.com/~meo/gimp/">The GIMP FAQ</a>
</headquote>



<stats posts="39" size="162" contrib="17" multiples="8" lastweek="5">

<person posts="7" size="24" who="Kelly Martin &lt;kmartin@pyrzqxgl.org&gt;" />
<person posts="5" size="24" who="Ernst Lippe &lt;ernstl@planet.nl&gt;" />
<person posts="4" size="26" who="Georg Acher &lt;acher@in.tum.de&gt;" />
<person posts="4" size="15" who="Austin Donnelly &lt;austin@gimp.org&gt;" />
<person posts="3" size="20" who="Ulrich Windl &lt;Ulrich.Windl@rz.uni-regensburg.de&gt;" />
<person posts="3" size="8" who="Sven Neumann &lt;sven@gimp.org&gt;" />
<person posts="2" size="7" who="Shlomi Fish &lt;shlomif@vipe.technion.ac.il&gt;" />
<person posts="2" size="5" who="Guillermo S. Romero / Familia Romero &lt;famrom@idecnet.com&gt;" />
<person posts="1" size="4" who="Robert L Krawitz &lt;rlk@alum.mit.edu&gt;" />
<person posts="1" size="4" who="Michael Natterer &lt;mitch@gimp.org&gt;" />
<person posts="1" size="3" who="David Baker &lt;dabaker@tripos.com&gt;" />
<person posts="1" size="3" who="Simon Budig &lt;Simon.Budig@unix-ag.org&gt;" />
<person posts="1" size="3" who="Nick Lamb &lt;njl98r@ecs.soton.ac.uk&gt;" />
<person posts="1" size="3" who="=?iso-8859-1?Q?Ville_P=E4tsi?= &lt;drc@gnu.org&gt;" />
<person posts="1" size="3" who="Tor Lillqvist &lt;tml@iki.fi&gt;" />
<person posts="1" size="2" who="egger@suse.de" />

</stats>




<section
  title="Speed-up for Bumpmap"
  author="Cris Flagg"
  contact="mailto:cflagg@kdigital.com"
  subject="[patch] unbelievable speedup for bumpmap..."
  archive="http://www.mail-archive.com/gimp-developer%40lists.xcf.berkeley.edu/msg00257.html"
  posts="12"
  startdate="05 Apr 2001 13:55:57 -0800"
  enddate="09 Apr 2001 11:20:24 -0800"
>

<mention>Kelly Martin</mention>
<mention></mention>
<mention>Austin Donnelly</mention>

<p>Georg Acher submitted a patch that greatly increased the speed
of bumpmapping by getting and writing 32 rows at a time.  Georg added
that the performance issue was with gimp_pixel_rgn_get/set_row-calls 
in Gimp 1.2.1.  Austin Donnelly suggested that most plugins should be using
gimp_pixel_rgns_register() and gimp_pixel_rgns_process() functions
instead, since they do blocking on a per tile basis. 
He suggested looking at whirl-pinch for examples of more
complex access patterns.  Ernst Lippe thought the speedup was caused by better caching,
since it looks like all tiles are read and written gimp_tile_height
(normally 64) times.  Ernst submitted a patch that was similar,
but allowed each tile to be read only once.  He suspected that
the algorithm could be rewritten so that only 3 tiles are needed at a time
by using 3 extra buffer columns instead of 3 extra buffer rows.
Kelly Martin noted that bumpmap.c calls gimp_tile_cahce_ntiles,
which my not be asking for enough cache (or it could be a problem in 
the tile caching code.)  Kelly also suggested using a pixel region 
iterator since the bumpmap need not be the same size on input and
output.
</p>
<p>Ernst Lippe offered to clean up some personal code that handled
neighborhoods without fetching tiles multiple times.
Austin Donnelly thought the core could use some tile convolution
code, since it currently copies data 
Actually, the core could do with a tile convolution, since currently
it copies data into a tempbuf before convolving it.  This makes some
tools more effificient (or incorrect) eg iscissors.
Ernst had several design considerations
<quote who="Ernst Lippe">
<ul>
<li>What data type for the convolution matrix? the current core only seems
to support integers, for my applications I found that floating points
are really necessary.</li>
<li>How to handle image boundaries? Treating pixels outside the image as
zero gives in many case undesirable results, my code also supports mirroring
but several other options are possible.</li>
<li>What sizes of convolution matrices must be supported? This is an
important issue. When you want to support larger matrices (e.g. 20x20)
the most efficient approach is to copy the tile that you are processing
and (parts of) neighboring tiles into a buffer and perform the
convolution on the contents of the buffer. In this way the inner loops
of the convolution can be much better optimized. When the size of the
matrix is small (say 3x3) it could be more efficient to use the data
from the tile directly (without copying) and to treat the boundaries of
the tile as a special case.</li>
</ul></quote>
Ernst offered to do a large part of the coding if there was support from the
"core" Gimp developers.  That means help with design decisions, too.
</p>
<p>There were no more posts in the thread</p>

</section>



<section
  title="Whirl and Pitch"
  author="Cris Flagg"
  contact="mailto:cflagg@kdigital.com"
  subject="[patch] Major speedup for whirl&amp;pinch plugin"
  archive="http://www.mail-archive.com/gimp-developer%40lists.xcf.berkeley.edu/msg00251.html"
  posts="10"
  startdate="05 Apr 2001 09:04:10 -0800"
  enddate="09 Apr 2001 13:02:41 -0800"
>

<mention></mention>

<p>Georg Acher posted a patch to whirl&amp;pitch to the list.  The patch uses
blocking to affect a 4.5x increase in performance without changing the 
main algorithm.  Kelly Martin thought whirl&amp;pitch used tile regions
for this, but later responded that this was not that case and thought
pixel regions might provide less of a loss due to locality.
Georg noted that the locality was good between the source and destination,
which was what really mattered.  
Ernst Lippe suggested that there were no major differences in CPU time
between Georg's method and the old way.  The differences lie in the
number of calls to gimp_tile_get and gimp_tile_put.
<quote who="Ernst Lippe">
Requesting tiles from the main Gimp process is pretty expensive, it
involves several context switches and a lot of copying. This is orders
of magnitude slower than copying data within the plugin process from the
tile cache to some other buffer. The whirlpinch plugin uses a cache size
that is only big enough to handle the output tiles, there is no room for
input tiles. This leads to a series of cache misses and horrible
performance. Your modifications improve the cache-hit ratio because it
</quote>[...]<quote who="Ernst Lippe">
The more fundamental solution is to rewrite the algorithm so that it
works on a tile by tile basis. In that case the minimum cache size is
only 2 (for the output tiles) plus the number of input tiles that are
needed to compute one output tile. Of course it is better to use a
somewhat larger cache size because adjacent output tiles can use the
same input tiles.
</quote>
</p>
<p>Georg also asked if there was a default tile
size that helped caching.  Kelly said the default tile size was
64x64, and that changing this made .xcf files non-transportable.
<quote who="Kelly Martin">
I tried to modify the XCF loader &amp; saver once to do reblocking, but it
gave me a headache and I moved on to other, more interesting things,
like feeding my cats. :)</quote>
</p>

</section>



<section
  title="CMYK Images"
  author="Cris Flagg"
  contact="mailto:cflagg@kdigital.com"
  subject="Problem with CMYK TIF"
  archive="http://www.mail-archive.com/gimp-developer%40lists.xcf.berkeley.edu/msg00271.html"
  posts="4"
  startdate="08 Apr 2001 21:57:06 -0800"
  enddate="09 Apr 2001 08:30:09 -0800"
>

<mention></mention>
<mention>Ulrich Windl</mention>

<p>Ulrich Windl had problems loading a .TIF image into the Gimp.
The image had no progress bar and ended up rotated 180&#176;.
Ulrich wondered if the .TIF used LAB colors, not CMYK.  He also
mentioned something about a dialog box he didn't read.
Ville P&#228;tsi pointed out that the Gimp didn't currently have
support for the CMYK colorspace, but it was planned for a 2.0.X 
release.  Nick Lamb added <quote who="Nick Lamb">
[t]he dialog box who's contents you don't remember warned you that this
would happen - read the warning dialogs!</quote>
</p>

</section>



<section
  title="PNG/Netscape Incompatibilities"
  author="Cris Flagg"
  contact="mailto:cflagg@kdigital.com"
  subject="PNG/Netscape incompatibilities?"
  archive="http://www.mail-archive.com/gimp-developer%40lists.xcf.berkeley.edu/msg00272.html"
  posts="2"
  startdate="09 Apr 2001 21:45:20 -0800"
  enddate="09 Apr 2001 01:19:53 -0800"
>

<mention></mention>
<mention>Simon Budig</mention>

<p>Ulrich Windl's problem with .PNG files was as follows:
<quote who="Ulrich Windl">The black pixels all appear white in Netscape, 
while in Amaya or xv the appear OK. I made PNGs the same way with older 
versions of GIMP, not having that problem.</quote>
Simon Budig responded that this was a Netscape bug.  The solution
was to select black as background-color and check the 
"save background color" button in the PNG-Save dialog.
</p>

</section>



<section
  title="Update Your Translations!"
  author="Cris Flagg"
  contact="mailto:cflagg@kdigital.com"
  subject="Update Your Translations!"
  archive="http://www.mail-archive.com/gimp-developer%40lists.xcf.berkeley.edu/msg00284.html"
  posts="1"
  startdate="10 Apr 2001 10:36:40 -0800"
  enddate="10 Apr 2001 10:36:40 -0800"
>

<mention>Sven Neumann </mention>
<mention></mention>

<p>Sven Neumann posted the following note to the developer's list:</p>
<p><quote who="Sven Neumann">
I have just committed a patch to the stable gimp branch that marks
a few leftover strings for translations. Translators that are 
interested in getting a full translation into 1.2.2, update your
po-files now!
</quote></p>

</section>



<section
  title="Gimp-Print 4.1.6"
  author="Cris Flagg"
  contact="mailto:cflagg@kdigital.com"
  subject="ANNOUNCE: Gimp-Print 4.1.6 release"
  archive="http://www.mail-archive.com/gimp-developer%40lists.xcf.berkeley.edu/msg00297.html"
  posts="1"
  startdate="15 Apr 2001 06:03:45 -0800"
  enddate="15 Apr 2001 06:03:45 -0800"
>

<mention></mention>

<p>Robert L Krawitz posted the following announcement about Gimp-Print 4.1.6:</p>
<quote who="Robert L Krawitz">
<p>This is gimp-print version 4.1.6, a development release on the 4.1 line.
</p>
<p>This software includes the Print plug-in for the Gimp, and GhostScript
and CUPS drivers.  The support for printers in GhostScript and CUPS is
identical to the support for these printers in the Print plugin --
they use the identical code base.  Please read src/ghost/README and
src/cups/README for more information on this.
</p>
<p>The Gimp Print plugin requires the Gimp 1.2.
</p>
<p>Gimp-Print 4.1.6 contains the following changes over 4.1.6:</p>

<p><ol>
<li>As of this release, the Gimp 1.0 is no longer supported.  You must
   use at least 1.1.21; 1.2 is strongly recommended.  In particular,
   we will not fix bugs in the Gimp plugin unless they can be
   reproduced with the Gimp 1.2.</li>
<li>Foomatic is now supported in the 4.1 line.  Please read the README
   for more information.  This requires a relatively recent version of
   Foomatic and is not compatible with the version bundled with
   Gimp-Print 4.0.</li>
<li>Significant improvements to the Canon driver for many printers,
   most notably the BJC-8200.  There may be some temporary new
   problems with 4-color printing on some Canon printers; feedback on
   this would be greatly appreciated.</li>
<li>Significant improvements to the Lexmark driver.</li>
<li>Further improvements to the Stylus Color 980.</li>
<li>Support for printing 720x360 DPI on many Epson Stylus printers.
   This mode offers a speed/quality tradeoff intermediate between 360
   and 720 DPI.  It does not work very well on photo-quality paper.</li>
<li>Improvements in the Fast dithering option on plain paper.</li>
<li>Some improvements to the Epson Stylus Photo 870/1270 and newer
   6-color printers.</li>
<li>Internal architectural changes: the library now operates internally
   in CMY rather than RGB space, and offers a raw CMYK input mode.
   The former is not visible outside of the library; the latter has no
   current uses and is untested.  Neither change should have any
   user-visible effects; this is strictly for programmer use.</li>
</ol>
</p>
</quote>

</section>

</kc>
