Subject: [Gimp-gui] Remove 64-bit floating point Image/Precision options, make them import/export options

From: Elle Stone <[email-masked]>
Date: Fri, 16 Oct 2015 12:02:51 -0400

The GIMP 2.9 "Image/Precision" menu has too many options. GIMP users are 
going to find all these options confusing.

Internally babl/GEGL/GIMP operates at 32-bit floating point, regardless 
of the image precision the user happens to choose.

The reason GIMP allows the user to choose the precision isn't to dictate 
the precision of the internal operations, but rather only to set the 
precision of the results of editing operations as stored in memory and 
in the XCF layer stack. This is for the benefit of users with lower-RAM 
systems (and this is a very nice feature to have, given test results 
shown below).

The 64f precision options apparently are mostly for the benefit of 
scientists who might want to import and export 64-bit FITS files. These 
options should be removed from the Image/Precision menu and moved to the 
import and export dialogs.

The 64f import dialog should make it clear that the original 64-bit 
precision image will be reduced to 32-bit floating point precision upon 
import. Likewise the 64f export dialog should make it clear that the 
exported image really only has 32-bit floating point precision.

GIMP's 64-bit floating point precision is only of use when importing and 
exporting from/to a file format (like FITS) that supports 64-bit 
floating point precision. GIMP can't actually process the image using 
64-bit precision. So allowing the user to choose 64-bit precision while 
editing is misleading and also a waste of the user's sytem resources.

RAM and disk space comparison for GIMP's various Image/Precision options:

I opened a 32-bit floating point XCF layer stack. The image itself was 
2820 x 2116 pixels (small compared to the size of images saved by 
today's cameras). The XCF file had 15 layers and 8 masks. I saved the 
XCF file at various bit depths, and checked the size on disk of the 
resulting file:

  8i  68 MB
16i 286 MB
32i 753 MB

16f 297 MB
32f 754 MB
64f 844 MB (this seems too small, but I checked twice)

Then I did a series of 9 editing operations on each XCF file. I used 
htop to keep track of RAM usage, each time closing the XCF file and also 
closing GIMP, before restarting GIMP and opening the next XCF file.

Here's how much system RAM was used just to open the XCF files:

  8i 0.5 GB
16i 1.3 GB
16f 1.3 GB
32f 2.4 GB
32i 2.4 GB
64f 4.7 GB

Here's how much system RAM was used for each XCF file at step 9:

  8i  1.8 GB
16i  3.3 GB
16f  3.4 GB
32f  6.2 GB
32i  6.4 GB
64f 12.0 GB

During editing, the 64f XCF file maxed out at 12 GB somewhere between 
editing operations 6 and 7, so maybe after that it was swapping to a tmp 
RAM "disk" that I set up (the actual physical disk swap space was never 
used).

GIMP's 64f "Image/Precision" options use a whole lot of RAM during 
processing, for absolutely *zero* precision gain in the results, as all 
GIMP internal processing is done at 32f. Having these precisions 
available in the "Image/Precision" menu is confusing and misleading.

Even if GIMP actually could operate internally at 64-bit precision, for 
photographic editing, digital painting, and VFX editing purposes (or so 
I've been told, I'm not a VFX person), 32-bit floating point is more 
than enough.

Best,
Elle