> Nifty! I'll try playing around with it. How difficult was it to go from > single-threaded to multi-threaded code? In my experience, if you want to > do properly synchronous code, it's almost a requirement that you > consider it in your design from the very beginning.
Some things were very easy, if there are no spatial dependencies, then you just split the image in vertical slices and have each thread process each slice, very easy and scales very well. The sharpen/denoiser required a job/workqueue to be efficient. The only operation that cannot be multithreaded is image decoding (Lossless JPEG decoding to be specific), as it is a strictly linear process, where every pixel in the image is depending on the previous. Currently these filters are multithreaded: Basic render (color correct), demosaic, denoise/sharpen, lensfun (the processing done outside of liblensfun), resample (image resize), rotate. Furthermore the RawSpeed loader is multithreaded when possible (DNG images). > Martin Regards, Klaus Post http://www.klauspost.com _______________________________________________ Rawstudio-dev mailing list [email protected] http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-dev
