> 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

Reply via email to