Difference between revisions of "Hacking:Porting filters to GEGL"

From GIMP Developer Wiki
Jump to: navigation, search
(Processing, color grading and effects)
(Add columns for test results; update states)
Line 1: Line 1:
 +
Last updated: 24.05.2013
 +
 
= How to port =
 
= How to port =
  
Line 21: Line 23:
 
# Test your operation. You can use the gegl binary to run an xml file, or use the GEGL tool in GIMP.
 
# Test your operation. You can use the gegl binary to run an xml file, or use the GEGL tool in GIMP.
  
= Porting matrix (as of 14.05.2013) =
+
= Porting matrix =
  
 
You can sort the following tables by clicking the little arrow symbol in the column headers. If that doesn't work out of the box, please activate Javascript for this page.
 
You can sort the following tables by clicking the little arrow symbol in the column headers. If that doesn't work out of the box, please activate Javascript for this page.
Line 30: Line 32:
 
!'''GIMP filter'''
 
!'''GIMP filter'''
 
!style="text-align: center;"|[https://git.gnome.org/browse/gimp/log/plug-ins '''GEGL operation''']
 
!style="text-align: center;"|[https://git.gnome.org/browse/gimp/log/plug-ins '''GEGL operation''']
 +
! style="text-align: center;"| '''Test result'''
 
!style="text-align: center;"|[https://git.gnome.org/browse/gegl/log/opencl '''OpenCL version''']
 
!style="text-align: center;"|[https://git.gnome.org/browse/gegl/log/opencl '''OpenCL version''']
 +
! style="text-align: center;"| '''Test result'''
 
!'''Comment'''
 
!'''Comment'''
 
|-
 
|-
|Alien Map || {{no}} || {{no}} ||
+
|Alien Map || {{no}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||
 
|-
 
|-
|Align Visible Layers || {{no}} || {{no}} ||
+
|Align Visible Layers || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Antialias || {{unknown}} || {{no}} ||
+
|Antialias || {{unknown}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Apply Canvas || {{no}} || {{no}} ||
+
|Apply Canvas || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Apply Lens || {{no}} || {{no}} ||
+
|Apply Lens || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Assign Color Profile || {{no}} || {{no}} ||
+
|Assign Color Profile || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Autocrop Image || {{no}} || {{no}} ||
+
|Autocrop Image || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Autocrop Layer || {{no}} || {{no}} ||
+
|Autocrop Layer || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Border Average || {{no}} || {{no}} ||
+
|Border Average || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Bump Map || {{no}} || {{no}} ||
+
|Bump Map || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Cartoon ||{{yes}} || {{no}} ||
+
|Cartoon ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Channel Mixer || {{no}} || {{no}} ||
+
|Channel Mixer || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Checkerboard ||{{yes}} || {{no}} || Missing Psychobilly Option
+
|Checkerboard ||{{yes}} || {{no|failed}}||{{no}} || {{unknown|untested}}||Missing Psychobilly Option
 
|-
 
|-
|CML Explorer || {{no}} || {{no}} ||
+
|CML Explorer || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Color Enhance || {{no}} || {{no}} ||
+
|Color Enhance || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Color Exchange || {{no}} || {{no}} ||
+
|Color Exchange || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Color to Alpha ||{{yes}} || {{no}} ||
+
|Color to Alpha ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Colorcube Analysis || {{no}} || {{no}} ||
+
|Colorcube Analysis || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Compose || {{no}} || {{no}} ||
+
|Compose || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Convert to Color Profile || {{no}} || {{no}} ||
+
|Convert to Color Profile || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Convolution Matrix || {{wip}} || {{no}} ||  
+
|Convolution Matrix || {{wip}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||
 
|-
 
|-
|Crop Tool ||{{yes}} || {{no}} ||
+
|Crop Tool ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|CSS stylesheet || {{no}} || {{no}} ||
+
|CSS stylesheet || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Cubism || {{wip}} || {{no}} ||  
+
|Cubism || {{wip}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||
 
|-
 
|-
|Curve Bend || {{no}} || {{no}} ||
+
|Curve Bend || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Decompose || {{no}} || {{no}} ||
+
|Decompose || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Deinterlace || {{wip}} || {{no}} ||
+
|Deinterlace || {{wip}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Depth Merge || {{no}} || {{no}} ||
+
|Depth Merge || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Despeckle || {{no}} || {{no}} ||
+
|Despeckle || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Destripe || {{no}} || {{no}} ||
+
|Destripe || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Difference of Gaussians ||{{yes}} || {{no}} || The port is missing Normalize and Invert options
+
|Difference of Gaussians ||{{yes}} || {{no|failed}}||{{no}} || {{unknown|untested}}||The port is missing Normalize and Invert options
 
|-
 
|-
|Diffraction Patterns || {{no}} || {{no}} ||
+
|Diffraction Patterns || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Dilate || {{no}} || {{no}} ||
+
|Dilate || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Displace || {{no}} || {{no}} ||
+
|Displace || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Drop Shadow ||{{yes}} || {{no}} || The GEGL port doesn't have an option for the shadow color and doesn't seem to work in the Mac build.
+
|Drop Shadow ||{{yes}} || {{no|failed}}||{{no}} || {{unknown|untested}}||The GEGL port doesn't have an option for the shadow color and doesn't seem to work in the Mac build.
 
|-
 
|-
|Edge... || {{no}} || {{no}} ||  
+
|Edge... || {{no}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||
 
|-
 
|-
|Emboss || {{wip}} || {{no}} ||
+
|Emboss || {{wip}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Engrave || {{no}} || {{no}} ||
+
|Engrave || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Erode || {{no}} || {{no}} ||
+
|Erode || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Filmstrip || {{no}} || {{no}} ||
+
|Filmstrip || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Filterpack || {{no}} || {{no}} ||
+
|Filterpack || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Flame || {{no}} || {{no}} ||
+
|Flame || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Foreground Select Tool ||{{wip}} || {{no}} || See patches to bugs #699780 and #699834.
+
|Foreground Select Tool ||{{wip}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||See patches to bugs #699780 and #699834.
 
|-
 
|-
|Fractal Explorer ||{{yes}} || {{no}} ||
+
|Fractal Explorer ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Fractal Trace || {{wip}} || {{no}} ||
+
|Fractal Trace || {{wip}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|From Webpage || {{no}} || {{no}} || Probably doesn't need porting
+
|From Webpage || {{no}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||Probably doesn't need porting
 
|-
 
|-
|Gaussian blur ||{{yes}} ||{{yes}} || Needs abyss policy
+
|Gaussian blur ||{{yes}} ||{{unknown|untested}}||{{yes}} || {{unknown|untested}}||Needs abyss policy
 
|-
 
|-
|Gfig || {{no}} || {{no}} || Probably doesn't need porting
+
|Gfig || {{no}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||Probably doesn't need porting
 
|-
 
|-
|GIMPressionist || {{no}} || {{no}} ||
+
|GIMPressionist || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Glass Tile || {{no}} || {{no}} ||
+
|Glass Tile || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Gradient Flare || {{no}} || {{no}} ||
+
|Gradient Flare || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Gradient Map || {{no}} || {{no}} ||
+
|Gradient Map || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Grey ||{{yes}} ||{{yes}} ||
+
|Grey ||{{yes}} ||{{unknown|untested}}||{{yes}} ||{{unknown|untested}}||
 
|-
 
|-
|Grid ||{{yes}} || {{no}} || Missing intersection option, is it needed ?
+
|Grid ||{{yes}} || {{no|failed}}||{{no}} || {{unknown|untested}}||Missing intersection option, is it needed ?
 
|-
 
|-
|Hot || {{no}} || {{no}} ||
+
|Hot || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|HSV Noise ||{{yes}} || {{no}} ||
+
|HSV Noise ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Hurl ||{{yes}} || {{no}} ||
+
|Hurl ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|IFS Fractal || {{no}} || {{no}} ||
+
|IFS Fractal || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Illusion || {{no}} || {{no}} ||
+
|Illusion || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Image Map || {{no}} || {{no}} || Probably doesn't need porting
+
|Image Map || {{no}} ||{{unknown|untested}}|| {{no}} || {{unknown|untested}}||Probably doesn't need porting
 
|-
 
|-
|Invert ||{{yes}} ||{{yes}} ||
+
|Invert ||{{yes}} ||{{unknown|untested}}||{{yes}} ||{{unknown|untested}}||
 
|-
 
|-
|iWarp || {{no}} || {{no}} || To be replaced with Warp Transform tool
+
|iWarp || {{no}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||To be replaced with Warp Transform tool
 
|-
 
|-
|Java map || {{no}} || {{no}} || Probably doesn't need porting
+
|Java map || {{no}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||Probably doesn't need porting
 
|-
 
|-
|Jigsaw || {{no}} || {{no}} ||
+
|Jigsaw || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Laplace ||{{yes}} || {{no}} ||
+
|Laplace ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Lens Distortion ||{{yes}} || {{no}} ||
+
|Lens Distortion ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Lens Flare || {{no}} || {{no}} ||
+
|Lens Flare || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Levels Tool ||{{yes}} ||{{yes}} ||
+
|Levels Tool ||{{yes}} ||{{unknown|untested}}||{{yes}} ||{{unknown|untested}}||
 
|-
 
|-
|Lighting Effects || {{no}} || {{no}} ||
+
|Lighting Effects || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Make Seamless || {{no}} || {{no}} ||
+
|Make Seamless || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Maximum RGB || {{no}} || {{no}} ||  Will be removed without replacement
+
|Maximum RGB || {{no}} || {{unknown|untested}}||{{no}} ||  {{unknown|untested}}||Will be removed without replacement
 
|-
 
|-
|Maze || {{no}} || {{no}} ||
+
|Maze || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Mosaic || {{no}} || {{no}} ||
+
|Mosaic || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Motion Blur ||{{yes}} ||{{yes}} || The GEGL port is incomplete (no type and center selection)
+
|Motion Blur ||{{yes}} ||{{no|failed}}||{{yes}} || {{unknown|untested}}||The GEGL port is incomplete (no type and center selection)
 
|-
 
|-
|Neon || {{no}} || {{no}} ||
+
|Neon || {{no}} ||{{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Newsprint || {{no}} || {{no}} ||
+
|Newsprint || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|NL Filter || {{no}} || {{no}} ||
+
|NL Filter || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Normalize || {{no}} || {{no}} ||
+
|Normalize || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Noise Spread || {{wip}} || {{no}} ||
+
|Noise Spread || {{wip}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Oilify ||{{yes}} ||{{yes}} ||
+
|Oilify ||{{yes}} ||{{unknown|untested}}||{{yes}} ||{{unknown|untested}}||
 
|-
 
|-
|Optimize (Difference) || {{no}} || {{no}} ||
+
|Optimize (Difference) || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Optimize (for GIF) || {{no}} || {{no}} ||
+
|Optimize (for GIF) || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Pagecurl || {{no}} || {{no}} ||
+
|Pagecurl || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Palette Map || {{no}} || {{no}} ||
+
|Palette Map || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Paper Tile || {{no}} || {{no}} ||
+
|Paper Tile || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Photocopy ||{{yes}} || {{no}} ||
+
|Photocopy ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Pick ||{{yes}} || {{no}} ||
+
|Pick ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Pixelize ||{{yes}} ||{{yes}} || Needs abyss policy
+
|Pixelize ||{{wip}} ||{{unknown|untested}}||{{yes}} || {{unknown|untested}}||Needs abyss policy
 
|-
 
|-
|Plasma || {{wip}} || {{no}} ||
+
|Plasma || {{wip}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Playback || {{no}} || {{no}} || Probably doesn't have to be ported ?
+
|Playback || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}|| Probably doesn't have to be ported ?
 
|-
 
|-
|Polar Coordinates ||{{yes}} || {{no}} ||
+
|Polar Coordinates ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Posterize Tool ||{{yes}} || {{no}} ||
+
|Posterize Tool ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Qbist || {{no}} || {{no}} ||
+
|Qbist || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Recompose || {{no}} || {{no}} ||
+
|Recompose || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Red Eye Removal || {{wip}} || {{no}} ||
+
|Red Eye Removal || {{wip}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Retinex || {{no}} || {{no}} ||
+
|Retinex || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|RGB Noise ||{{yes}} || {{no}} ||
+
|RGB Noise ||{{yes}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Ripple ||{{yes}} || {{no}} || Complete in abyss branch
+
|Ripple ||{{yes}} || {{unknown|untested}}||{{no}} || {{unknown|untested}} || Complete in abyss branch
 
|-
 
|-
|Rotate Colors || {{wip}} || {{no}} ||
+
|Rotate Colors || {{wip}} || {{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Sample Colorize || {{no}} || {{no}} ||
+
|Sample Colorize || {{no}} ||  {{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Selective Gaussian Blur || {{no}} || {{no}} ||
+
|Selective Gaussian Blur || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Shift ||{{yes}} || {{no}} ||
+
|Shift ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Sinus || {{no}} || {{no}} ||
+
|Sinus || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Slur ||{{yes}} || {{no}} ||
+
|Slur ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Smooth Palette || {{no}} || {{no}} ||
+
|Smooth Palette || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Sobel ||{{yes}} ||{{yes}} ||
+
|Sobel ||{{yes}} ||{{unknown|untested}}||{{yes}} ||{{unknown|untested}}||
 
|-
 
|-
|Softglow ||{{yes}} || {{no}} ||
+
|Softglow ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Solid Noise || {{no}} || {{no}} ||
+
|Solid Noise || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Sparkle || {{no}} || {{no}} ||
+
|Sparkle || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Sphere Designer || {{no}} || {{no}} ||
+
|Sphere Designer || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Spread ||{{yes}} || {{no}} ||
+
|Spread ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Stretch Contrast ||{{yes}} || {{no}} || Not sure we need that with GEGL being the core of GIMP
+
|Stretch Contrast ||{{yes}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||Not sure we need that with GEGL being the core of GIMP
 
|-
 
|-
|Stretch HSV || {{no}} || {{no}} ||
+
|Stretch HSV || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Supernova || {{no}} || {{no}} ||
+
|Supernova || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Transform Tools (Rotate, Scale, Shear, Translate) ||{{yes}} || {{no}} ||
+
|Transform Tools (Rotate, Scale, Shear, Translate) ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Threshold Tool ||{{yes}} ||{{yes}} || The GEGL port misses setting the upper bound (=the right slider triangle in the GIMP tool).
+
|Threshold Tool ||{{yes}} ||{{no|failed}}||{{yes}} || {{unknown|untested}}||The GEGL port misses setting the upper bound (=the right slider triangle in the GIMP tool).
 
|-
 
|-
|Tile ||{{yes}} || {{no}} ||
+
|Tile ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Unoptimize || {{no}} || {{no}} ||
+
|Unoptimize || {{no}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Unsharp Mask ||{{yes}} || {{no}} ||
+
|Unsharp Mask ||{{yes}} ||{{unknown|untested}}|| {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Value Invert ||{{yes}} ||{{yes}} ||
+
|Value Invert ||{{yes}} ||{{unknown|untested}}||{{yes}} ||{{unknown|untested}}||
 
|-
 
|-
|Value Propagate || {{no}} || {{no}} ||
+
|Value Propagate || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Van Gogh (LIC) || {{no}} || {{no}} || The filter has nothing to do with van-Gogh-style art and has no obvious function. We should remove it.
+
|Van Gogh (LIC) || {{no}} || {{unknown|untested}}||{{no}} || {{unknown|untested}}||The filter has nothing to do with van-Gogh-style art and has no obvious function. We should remove it.
 
|-
 
|-
|Video || {{no}} || {{no}} ||
+
|Video || {{no}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Warp || {{wip}} || {{no}} ||
+
|Warp || {{wip}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Waves ||{{yes}} || {{no}} || Missing reflective option that produce strange result, I suggest dropping that.
+
|Waves ||{{yes}} ||{{no|failed}}|| {{no}} || {{unknown|untested}}||Missing reflective option that produce strange result, I suggest dropping that.
 
|-
 
|-
|Whirl and Pinch || {{wip}} || {{no}} ||
+
|Whirl and Pinch || {{wip}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Wind ||{{yes}} || {{no}} ||
+
|Wind ||{{yes}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Zealous Crop || {{unknown}} || {{no}} ||
+
|Zealous Crop || {{unknown}} || {{unknown|untested}}||{{no}} ||{{unknown|untested}}||
 
|}
 
|}
  
Line 295: Line 299:
 
! '''GIMP filter'''  
 
! '''GIMP filter'''  
 
! [https://git.gnome.org/browse/gimp/log/plug-ins '''GEGL version''']
 
! [https://git.gnome.org/browse/gimp/log/plug-ins '''GEGL version''']
 +
! style="text-align: center;"| '''Test result'''
 
! '''Comment'''
 
! '''Comment'''
 
|-
 
|-
| file-aa || {{yes}} ||  
+
| file-aa || {{yes}} || {{unknown|untested}}||
 
|-
 
|-
| file-bmp || {{yes}} ||
+
| file-bmp || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-cel || {{yes}} ||
+
| file-cel || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-csource || {{yes}} ||
+
| file-csource || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-desktop-link || {{yes|doesn't need to be ported}} ||  
+
| file-desktop-link || {{yes|doesn't need to be ported}} || {{yes|}}||
 
|-
 
|-
| file-dicom || {{yes}} ||
+
| file-dicom || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-exr-load || {{yes}} ||
+
| file-exr-load || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-exr-save || {{yes}} || -
+
| file-exr-save || {{yes}} || {{unknown|untested}}||
 
|-
 
|-
| file-faxg3 || {{yes}} ||
+
| file-faxg3 || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-fits || {{yes}} ||
+
| file-fits || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-fli || {{yes}} ||
+
| file-fli || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-gbr || {{yes}} ||
+
| file-gbr || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-gif-load || {{yes}} ||
+
| file-gif-load || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-gif-save || {{yes}} ||
+
| file-gif-save || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-gih || {{yes}} ||
+
| file-gih || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-glob || {{no}} || for file globbing -> is GEGL-port necessary?
+
| file-glob || {{no}} || {{unknown|untested}}||for file globbing -> is GEGL-port necessary?
 
|-
 
|-
| file-header || {{yes}} ||
+
| file-header || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-html-table || {{yes}} ||
+
| file-html-table || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-ico || {{yes}} ||
+
| file-ico || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-jp2-load || {{yes}} || -
+
| file-jp2-load || {{yes}} || {{unknown|untested}}||
 
|-
 
|-
| file-jpeg || {{yes}} || -
+
| file-jpeg || {{wip}} || {{wip}}||
 
|-
 
|-
| file-mng || {{yes}} ||
+
| file-mng || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-pat || {{yes}} ||
+
| file-pat || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-pcx || {{yes}} ||
+
| file-pcx || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-pdf-load || {{no}} || -
+
| file-pdf-load || {{no}} || {{unknown|untested}}||
 
|-
 
|-
| file-pdf-save || {{yes}} ||
+
| file-pdf-save || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-pix || {{yes}} ||
+
| file-pix || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-png || {{yes}} || -
+
| file-png || {{yes}} || {{wip}}||
 
|-
 
|-
| file-pnm || {{yes}} || -
+
| file-pnm || {{yes}} || {{unknown|untested}}||
 
|-
 
|-
| file-ps || {{wip}} || -
+
| file-ps || {{wip}} || {{wip}}||
 
|-
 
|-
| file-psd || {{no}} || -
+
| file-psd || {{no}} || {{unknown|untested}}||
 
|-
 
|-
| file-psp || {{yes}} ||
+
| file-psp || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-raw || {{no}} || see GEGL-op gegl:raw-load
+
| file-raw || {{no}} || {{unknown|untested}}||see GEGL-op gegl:raw-load
 
|-
 
|-
| file-sgi || {{yes}} ||
+
| file-sgi || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-sunras || {{no}} || -
+
| file-sunras || {{no}} || {{unknown|untested}}||
 
|-
 
|-
| file-svg || {{no}} || extra GEGL-op gegl:svg-load exists for loading SVG and SVGZ format
+
| file-svg || {{no}} || {{unknown|untested}}||extra GEGL-op gegl:svg-load exists for loading SVG and SVGZ format
 
|-
 
|-
| file-tga || {{yes}} ||
+
| file-tga || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-tiff-load || {{yes}} ||
+
| file-tiff-load || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-tiff-save || {{no}} ||
+
| file-tiff-save || {{wip}} ||{{wip}}||
 
|-
 
|-
| file-wmf || {{no}} || -
+
| file-wmf || {{no}} || {{unknown|untested}}||
 
|-
 
|-
| file-xbm || {{yes}} ||
+
| file-xbm || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-xmc || {{no}} || -
+
| file-xmc || {{no}} || {{unknown|untested}}||
 
|-
 
|-
| file-xpm || {{yes}} ||
+
| file-xpm || {{yes}} ||{{unknown|untested}}||
 
|-
 
|-
| file-xwd || {{no}} || -
+
| file-xwd || {{no}} || {{unknown|untested}}||
 
|}
 
|}
  
Line 394: Line 399:
 
!'''GEGL filter'''  
 
!'''GEGL filter'''  
 
! [https://git.gnome.org/browse/gimp/log/plug-ins '''GIMP filter''' ]
 
! [https://git.gnome.org/browse/gimp/log/plug-ins '''GIMP filter''' ]
 +
! style="text-align: center;"| '''Test result'''
 
! '''Comment'''
 
! '''Comment'''
 
|-
 
|-
|ff-load || {{no}} || FFmpeg video frame importer
+
|ff-load || {{no}} || {{unknown|untested}}||FFmpeg video frame importer
 
|-
 
|-
|ff-save || {{no}} || FFmpeg video frame output sink. GEGL op is work in progress.
+
|ff-save || {{no}} || {{unknown|untested}}||FFmpeg video frame output sink. GEGL op is work in progress.
 
|-
 
|-
|rawbayer-load || {{no}} || RAWBAYER and RAWBAYERS format. GEGL op is work in progress
+
|rawbayer-load || {{no}} || {{unknown|untested}}|| RAWBAYER and RAWBAYERS format. GEGL op is work in progress
 
|-
 
|-
|rgbe-load || {{no}} || for Radiance HDR format with extensions HDR and PIC
+
|rgbe-load || {{no}} || {{unknown|untested}}||for Radiance HDR format with extensions HDR and PIC
 
|-
 
|-
|rgbe-save || {{no}} || for Radiance HDR format with extensions HDR and PIC
+
|rgbe-save || {{no}} || {{unknown|untested}}||for Radiance HDR format with extensions HDR and PIC
 
|-
 
|-
|svg-load || {{no}} || for SVG and SVGZ format
+
|svg-load || {{no}} || {{unknown|untested}}||for SVG and SVGZ format
 
|}
 
|}
  
Line 414: Line 420:
 
!'''GEGL operation'''  
 
!'''GEGL operation'''  
 
! [https://git.gnome.org/browse/gegl/log/opencl '''OpenCL version''']  
 
! [https://git.gnome.org/browse/gegl/log/opencl '''OpenCL version''']  
 +
! style="text-align: center;"| '''Test result'''
 
!'''Comment'''
 
!'''Comment'''
 
|-
 
|-
|Bilateral filter ||{{yes}} ||  
+
|Bilateral filter ||{{yes}} || {{unknown|untested}}||
 
|-
 
|-
|Box blur ||{{yes}} ||  
+
|Box blur ||{{yes}} || {{unknown|untested}}||
 
|-
 
|-
|Box max || {{no}} ||  GEGL op is work in progress.
+
|Box max || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Box min || {{no}} ||  GEGL op is work in progress.
+
|Box min || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Box percentile || {{no}} ||  GEGL op is work in progress.
+
|Box percentile || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Brightness and Contrast ||{{yes}} ||  
+
|Brightness and Contrast ||{{yes}} || {{unknown|untested}}||
 
|-
 
|-
|Buffer cache  || {{no}} || GEGL op is work in progress. Does this need an OpenCL port?
+
|Buffer cache  || {{no}} || {{unknown|untested}}||GEGL op is work in progress. Does this need an OpenCL port?
 
|-
 
|-
|C2g ||{{yes}} ||  HDR related
+
|C2g ||{{yes}} ||  {{unknown|untested}}||HDR related
 
|-
 
|-
|Cielch Noise || {{no}} ||  
+
|Cielch Noise || {{no}} || {{unknown|untested}}||
 
|-
 
|-
|Color || {{no}} ||  
+
|Color || {{no}} || {{unknown|untested}}||
 
|-
 
|-
|Color Reduction || {{no}} ||  
+
|Color Reduction || {{no}} || {{unknown|untested}}||
 
|-
 
|-
|Color Temperature ||{{yes}} ||  
+
|Color Temperature ||{{yes}} || {{unknown|untested}}||
 
|-
 
|-
|Contrast Curve || {{no}} ||  
+
|Contrast Curve || {{no}} || {{unknown|untested}}||
 
|-
 
|-
|Demosaic (bimedian) || {{no}} || GEGL op is work in progress.
+
|Demosaic (bimedian) || {{no}} || {{unknown|untested}}|| GEGL op is work in progress.
 
|-
 
|-
|Demosaic (simple) || {{no}} ||  GEGL op is work in progress.
+
|Demosaic (simple) || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Disc percentile || {{no}} ||  GEGL op is work in progress.
+
|Disc percentile || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Display || {{no}} ||  Does this need an OpenCL port?
+
|Display || {{no}} ||  {{unknown|untested}}||Does this need an OpenCL port?
 
|-
 
|-
|Ditto || {{no}} ||  GEGL op is work in progress. Test op - does this need an OpenCL port?
+
|Ditto || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress. Test op - does this need an OpenCL port?
 
|-
 
|-
|Dot || {{no}} ||
+
|Dot || {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Exp combine || {{no}} ||  HDR related
+
|Exp combine || {{no}} ||  {{unknown|untested}}||HDR related
 
|-
 
|-
|Exposure || {{no}} || HDR related
+
|Exposure || {{no}} || {{unknown|untested}}|| HDR related
 
|-
 
|-
|Fattal02 || {{no}} ||  HDR related
+
|Fattal02 || {{no}} ||  {{unknown|untested}}||HDR related
 
|-
 
|-
|gluas || {{no}} ||  GEGL op is work in progress. Does this need an OpenCL port?
+
|gluas || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress. Does this need an OpenCL port?
 
|-
 
|-
|HStack || {{no}} ||  GEGL op is work in progress.
+
|HStack || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Image compare || {{no}} ||
+
|Image compare || {{no}} ||{{unknown|untested}}||
 
|-
 
|-
|Introspect || {{no}} ||  Does this need an OpenCL port?
+
|Introspect || {{no}} ||  {{unknown|untested}}||Does this need an OpenCL port?
 
|-
 
|-
|Kuwahara || {{no}} ||  GEGL op is work in progress.
+
|Kuwahara || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Lens correction || {{no}} ||  GEGL op is work in progress.
+
|Lens correction || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Line profile || {{no}} ||  GEGL op is work in progress.
+
|Line profile || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Linear gradient || {{no}} ||  GEGL op is work in progress.
+
|Linear gradient || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Mandelbrot || {{no}} ||  GEGL op is work in progress.
+
|Mandelbrot || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Mantiuk06 || {{no}} ||  HDR related
+
|Mantiuk06 || {{no}} ||  {{unknown|untested}}||HDR related
 
|-
 
|-
|Mirrors || {{no}} ||  
+
|Mirrors || {{no}} || {{unknown|untested}}||
 
|-
 
|-
|Mono mixer ||{{yes}} ||  
+
|Mono mixer ||{{yes}} || {{unknown|untested}}||
 
|-
 
|-
|Noise || {{no}} ||  Perlin noise generator
+
|Noise || {{no}} ||  {{unknown|untested}}||Perlin noise generator
 
|-
 
|-
|Noise Reduction ||{{yes}} ||  
+
|Noise Reduction ||{{yes}} || {{unknown|untested}}||
 
|-
 
|-
|Over || {{no}} ||  Porter Duff operation over (d = cA + cB * (1 - aA))
+
|Over || {{no}} ||  {{unknown|untested}}||Porter Duff operation over (d = cA + cB * (1 - aA))
 
|-
 
|-
|Radial gradient || {{no}} ||  GEGL op is work in progress.
+
|Radial gradient || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|Reinhard05 ||{{yes}} ||  HDR related
+
|Reinhard05 ||{{yes}} ||  {{unknown|untested}}||HDR related
 
|-
 
|-
|Remap || {{no}} ||  
+
|Remap || {{no}} || {{unknown|untested}}||
 
|-
 
|-
|SNN (mean) ||{{yes}} ||  
+
|SNN (mean) ||{{yes}} || {{unknown|untested}}||
 
|-
 
|-
|SNN (percentile) || {{no}} ||  GEGL op is work in progress.
+
|SNN (percentile) || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.
 
|-
 
|-
|SVG Hue rotate|| {{no}} ||  
+
|SVG Hue rotate|| {{no}} || {{unknown|untested}}||
 
|-
 
|-
|SVG Luminance to Alpha || {{no}} ||  
+
|SVG Luminance to Alpha || {{no}} || {{unknown|untested}}||
 
|-
 
|-
|SVG Matrix || {{no}} ||  
+
|SVG Matrix || {{no}} || {{unknown|untested}}||
 
|-
 
|-
|SVG Saturate || {{no}} ||  
+
|SVG Saturate || {{no}} || {{unknown|untested}}||
 
|-
 
|-
|Unpremul || {{no}} ||  GEGL op is work in progress.  
+
|Unpremul || {{no}} ||  {{unknown|untested}}||GEGL op is work in progress.  
 
|-
 
|-
|Vignette ||{{yes}} ||  
+
|Vignette ||{{yes}} || {{unknown|untested}}||
 
|-
 
|-
|Weighted Blend || {{no}} ||  
+
|Weighted Blend || {{no}} || {{unknown|untested}}||
 
|}
 
|}

Revision as of 17:54, 24 May 2013

Last updated: 24.05.2013

How to port

This is the general process to write a new GEGL operation:

  1. Gather information.
    1. Read the plugin you want to port, understand the algorithm hidden in it.
    2. Read carefully the GEGL website. There is lot of information here.
    3. Read the Babl website and understand the difference between color models.
    4. You may want to find a similar existing operation and get inspiration from it.
  2. Choose a base class. This is the general structure of your operation, the number of input/output, what kind of optimization GEGL can do.
  3. Create a new file for your operation. No need to register it in some Makefile, the build system will build every C file present in the operations directory. The exact directory where you should put your file is explained in the GEGL website.
  4. Copy another operation with the same base class and clean it to have your operation skeleton. GEGL use a macro system called GEGL chant, that avoid you to write all the GObject boilerplate, and register easily parameters for your op. Look other operation to see how it works.
  5. Use the prepare function to indicate what color model your op will operate, for each input/output.
  6. Create your op's parameter using the chant system. You can have integer, floats, string, color, curve, enum ... There is some predefined enum in the GEGL core, for instance GeglSamplerType. You can register your own, like in the ripple op.
  7. Write your operation in the process function. Some tips here:
    1. GEGL store data in tile, so it impose some restriction, especially for transform op. You usually need to write your algorithm backward, ie iterate over the output, compute where the data come from, use a sampler to get it and affect the output.
    2. ROI mean region of interest, it's the area your are currently working on.
    3. Sometimes you need to know the size of the full input, not just the roi. You can have it using gegl_operation_source_get_bounding_box.
    4. Rather than carry a lot of parameter in you different functions, you can register a custom structure in the chant system, like the WarpPrivate structure in the warp op.
    5. When you fetch data outside of the input buffer (in it's abyss) you get by default zeroed memory. The abyss policy allow you to chose what you want here, and in particular, you can choose to clamp to the border, loop in the buffer extent ... It allows to write more clever algorithm. For instance, see the ripple op. Setting the abyss policy to GEGL_ABYSS_LOOP add the tileability to the op for free.
  8. Test your operation. You can use the gegl binary to run an xml file, or use the GEGL tool in GIMP.

Porting matrix

You can sort the following tables by clicking the little arrow symbol in the column headers. If that doesn't work out of the box, please activate Javascript for this page.

Processing, color grading and effects

GIMP filter GEGL operation Test result OpenCL version Test result Comment
Alien Map No untested No untested
Align Visible Layers No untested No untested
Antialias unknown untested No untested
Apply Canvas No untested No untested
Apply Lens No untested No untested
Assign Color Profile No untested No untested
Autocrop Image No untested No untested
Autocrop Layer No untested No untested
Border Average No untested No untested
Bump Map No untested No untested
Cartoon Yes untested No untested
Channel Mixer No untested No untested
Checkerboard Yes failed No untested Missing Psychobilly Option
CML Explorer No untested No untested
Color Enhance No untested No untested
Color Exchange No untested No untested
Color to Alpha Yes untested No untested
Colorcube Analysis No untested No untested
Compose No untested No untested
Convert to Color Profile No untested No untested
Convolution Matrix work in progress untested No untested
Crop Tool Yes untested No untested
CSS stylesheet No untested No untested
Cubism work in progress untested No untested
Curve Bend No untested No untested
Decompose No untested No untested
Deinterlace work in progress untested No untested
Depth Merge No untested No untested
Despeckle No untested No untested
Destripe No untested No untested
Difference of Gaussians Yes failed No untested The port is missing Normalize and Invert options
Diffraction Patterns No untested No untested
Dilate No untested No untested
Displace No untested No untested
Drop Shadow Yes failed No untested The GEGL port doesn't have an option for the shadow color and doesn't seem to work in the Mac build.
Edge... No untested No untested
Emboss work in progress untested No untested
Engrave No untested No untested
Erode No untested No untested
Filmstrip No untested No untested
Filterpack No untested No untested
Flame No untested No untested
Foreground Select Tool work in progress untested No untested See patches to bugs #699780 and #699834.
Fractal Explorer Yes untested No untested
Fractal Trace work in progress untested No untested
From Webpage No untested No untested Probably doesn't need porting
Gaussian blur Yes untested Yes untested Needs abyss policy
Gfig No untested No untested Probably doesn't need porting
GIMPressionist No untested No untested
Glass Tile No untested No untested
Gradient Flare No untested No untested
Gradient Map No untested No untested
Grey Yes untested Yes untested
Grid Yes failed No untested Missing intersection option, is it needed ?
Hot No untested No untested
HSV Noise Yes untested No untested
Hurl Yes untested No untested
IFS Fractal No untested No untested
Illusion No untested No untested
Image Map No untested No untested Probably doesn't need porting
Invert Yes untested Yes untested
iWarp No untested No untested To be replaced with Warp Transform tool
Java map No untested No untested Probably doesn't need porting
Jigsaw No untested No untested
Laplace Yes untested No untested
Lens Distortion Yes untested No untested
Lens Flare No untested No untested
Levels Tool Yes untested Yes untested
Lighting Effects No untested No untested
Make Seamless No untested No untested
Maximum RGB No untested No untested Will be removed without replacement
Maze No untested No untested
Mosaic No untested No untested
Motion Blur Yes failed Yes untested The GEGL port is incomplete (no type and center selection)
Neon No untested No untested
Newsprint No untested No untested
NL Filter No untested No untested
Normalize No untested No untested
Noise Spread work in progress untested No untested
Oilify Yes untested Yes untested
Optimize (Difference) No untested No untested
Optimize (for GIF) No untested No untested
Pagecurl No untested No untested
Palette Map No untested No untested
Paper Tile No untested No untested
Photocopy Yes untested No untested
Pick Yes untested No untested
Pixelize work in progress untested Yes untested Needs abyss policy
Plasma work in progress untested No untested
Playback No untested No untested Probably doesn't have to be ported ?
Polar Coordinates Yes untested No untested
Posterize Tool Yes untested No untested
Qbist No untested No untested
Recompose No untested No untested
Red Eye Removal work in progress untested No untested
Retinex No untested No untested
RGB Noise Yes untested No untested
Ripple Yes untested No untested Complete in abyss branch
Rotate Colors work in progress untested No untested
Sample Colorize No untested No untested
Selective Gaussian Blur No untested No untested
Shift Yes untested No untested
Sinus No untested No untested
Slur Yes untested No untested
Smooth Palette No untested No untested
Sobel Yes untested Yes untested
Softglow Yes untested No untested
Solid Noise No untested No untested
Sparkle No untested No untested
Sphere Designer No untested No untested
Spread Yes untested No untested
Stretch Contrast Yes untested No untested Not sure we need that with GEGL being the core of GIMP
Stretch HSV No untested No untested
Supernova No untested No untested
Transform Tools (Rotate, Scale, Shear, Translate) Yes untested No untested
Threshold Tool Yes failed Yes untested The GEGL port misses setting the upper bound (=the right slider triangle in the GIMP tool).
Tile Yes untested No untested
Unoptimize No untested No untested
Unsharp Mask Yes untested No untested
Value Invert Yes untested Yes untested
Value Propagate No untested No untested
Van Gogh (LIC) No untested No untested The filter has nothing to do with van-Gogh-style art and has no obvious function. We should remove it.
Video No untested No untested
Warp work in progress untested No untested
Waves Yes failed No untested Missing reflective option that produce strange result, I suggest dropping that.
Whirl and Pinch work in progress untested No untested
Wind Yes untested No untested
Zealous Crop unknown untested No untested

File loaders/savers

GIMP filter GEGL version Test result Comment
file-aa Yes untested
file-bmp Yes untested
file-cel Yes untested
file-csource Yes untested
file-desktop-link doesn't need to be ported
file-dicom Yes untested
file-exr-load Yes untested
file-exr-save Yes untested
file-faxg3 Yes untested
file-fits Yes untested
file-fli Yes untested
file-gbr Yes untested
file-gif-load Yes untested
file-gif-save Yes untested
file-gih Yes untested
file-glob No untested for file globbing -> is GEGL-port necessary?
file-header Yes untested
file-html-table Yes untested
file-ico Yes untested
file-jp2-load Yes untested
file-jpeg work in progress work in progress
file-mng Yes untested
file-pat Yes untested
file-pcx Yes untested
file-pdf-load No untested
file-pdf-save Yes untested
file-pix Yes untested
file-png Yes work in progress
file-pnm Yes untested
file-ps work in progress work in progress
file-psd No untested
file-psp Yes untested
file-raw No untested see GEGL-op gegl:raw-load
file-sgi Yes untested
file-sunras No untested
file-svg No untested extra GEGL-op gegl:svg-load exists for loading SVG and SVGZ format
file-tga Yes untested
file-tiff-load Yes untested
file-tiff-save work in progress work in progress
file-wmf No untested
file-xbm Yes untested
file-xmc No untested
file-xpm Yes untested
file-xwd No untested

New File loaders/savers

These file loaders/savers are implemented in GEGL, but not part of GIMP (yet). Currently they are listed here for completeness.

GEGL filter GIMP filter Test result Comment
ff-load No untested FFmpeg video frame importer
ff-save No untested FFmpeg video frame output sink. GEGL op is work in progress.
rawbayer-load No untested RAWBAYER and RAWBAYERS format. GEGL op is work in progress
rgbe-load No untested for Radiance HDR format with extensions HDR and PIC
rgbe-save No untested for Radiance HDR format with extensions HDR and PIC
svg-load No untested for SVG and SVGZ format

Port of new GEGL ops to OpenCL

GEGL operation OpenCL version Test result Comment
Bilateral filter Yes untested
Box blur Yes untested
Box max No untested GEGL op is work in progress.
Box min No untested GEGL op is work in progress.
Box percentile No untested GEGL op is work in progress.
Brightness and Contrast Yes untested
Buffer cache No untested GEGL op is work in progress. Does this need an OpenCL port?
C2g Yes untested HDR related
Cielch Noise No untested
Color No untested
Color Reduction No untested
Color Temperature Yes untested
Contrast Curve No untested
Demosaic (bimedian) No untested GEGL op is work in progress.
Demosaic (simple) No untested GEGL op is work in progress.
Disc percentile No untested GEGL op is work in progress.
Display No untested Does this need an OpenCL port?
Ditto No untested GEGL op is work in progress. Test op - does this need an OpenCL port?
Dot No untested
Exp combine No untested HDR related
Exposure No untested HDR related
Fattal02 No untested HDR related
gluas No untested GEGL op is work in progress. Does this need an OpenCL port?
HStack No untested GEGL op is work in progress.
Image compare No untested
Introspect No untested Does this need an OpenCL port?
Kuwahara No untested GEGL op is work in progress.
Lens correction No untested GEGL op is work in progress.
Line profile No untested GEGL op is work in progress.
Linear gradient No untested GEGL op is work in progress.
Mandelbrot No untested GEGL op is work in progress.
Mantiuk06 No untested HDR related
Mirrors No untested
Mono mixer Yes untested
Noise No untested Perlin noise generator
Noise Reduction Yes untested
Over No untested Porter Duff operation over (d = cA + cB * (1 - aA))
Radial gradient No untested GEGL op is work in progress.
Reinhard05 Yes untested HDR related
Remap No untested
SNN (mean) Yes untested
SNN (percentile) No untested GEGL op is work in progress.
SVG Hue rotate No untested
SVG Luminance to Alpha No untested
SVG Matrix No untested
SVG Saturate No untested
Unpremul No untested GEGL op is work in progress.
Vignette Yes untested
Weighted Blend No untested