New graph processing code
I've created a branch for the new graph processing code so we can test it a
bit before I push it to master. It is immensely faster than the old code
(my simple 15 node benchmark graph went from 10% overhead to about 0.5%
overhead), but it has probably broken some assumptions about the old graph.
The known gotchas:
* get_cached_region is no longer used. The cache bounds are always the full
output bounds, but the request will not be expanded.
* The cache intersect is calculated after all requests to a node are
combined, so partial cache hits from multiple nodes may skip the cache.
* Meta nodes (nodes who's pads do not reference them) will never be visited.
* Prepare is called only once per node (at least until the node is
invalidated), and must not modify the connectivity of the graph.
I've fixed the issues I found in the included operations (load, save, and
layer were the only ones broken) and Gimp appears to work, but I'm sure
there are some new bugs lurking around after changing this much code. :)
https://git.gnome.org/browse/gegl/log/?h=newgraph-merge
Thanks,
- Daniel