GNOME Bugzilla – Bug 759339
processor: Setting a non-zero level to do mipmapped processing leads to invalid output
Last modified: 2017-02-28 15:06:06 UTC
Try the attached test case with 10240x10240 PNG. The problem is that while gegl_node_blit expects to be passed a scaled ROI, GeglProcessor doesn't scale its rectangle according to the level before blitting.
Created attachment 317192 [details] Test case - try it with a 10240x10240 PNG
Created attachment 317193 [details] [review] processor: Fix rendering at non-zero levels This probably incomplete because I don't whether GeglOperationContext, gegl_buffer_set, etc. expect a scaled rectangle or unscaled, but it works with the attached test case.
The affine-with-negative composition test in GEGL produces a different output with this patch applied.
More composition ops failing: checkerboard, noise-cell, noise-simplex, reflect, reflect2 and rotate, It seems like quite a few of them get a border of 100% transparency - losing their content.
The trouble came from how the scaling of the rectangle was done, what other parts of GEGL do is >> level, doing that here as well removed the problems raised in comments 3 and 4. commit 339d07c75a134cb7772959d2d541acfe229f5cac Author: Øyvind Kolås <pippin@gimp.org> Date: Mon Feb 27 23:25:13 2017 +0100 processor: make using non-zero levels for processing work gegl_node_blit expects to be passed a scaled ROI, GeglProcessor didn't use to scale its rectangle according to the level before blitting. Based on an initial patch by Debarshi Ray
Nice! Thanks.