"Derek Fountain" wrote in message
[re tiles, Photoshop, and multiple processors]
That's how the GIMP works too. But how does it handle the requirement for data, or worse, intermediate processing results, that are in a different tile? I was thinking of, say, motion blur, where the results in one tile are heavily dependent on what's in another potentially distant tile.
Each processor gathers the necessary tile data adjacent to the tile it is processing. This is the advantage of tile basedover scan line based processing .
There must be some seriously optimised pixel shifting between CPUs, and carefully implemented algorithms that appreciate that what they're doing on each tile is part of the whole, not a discrete piece of work.
In general, input tiles are kept distinct from output tiles, as well as tiles in each step of a pipelined operation, for example a blur that is followed by another operation. Photoshop may do all or part of this.
Or, just possibly, they copped out and made the hard stuff single threaded.
Yes, and there are a lot of single threaded corners in Photoshop. For example, all plugins are single threaded, because Adobe's API does not support multi-threaded plugins, and tiles cannot be accessed in a multi-threaded fashion.
I've never yet found a document that describes exactly what has been written as multi threaded. Know you of any such sources?
No - Adobe is very quiet about the internals of Photoshop, however I am familiar with libpixar, on which version 1 of Photoshop was based. I bet a nickel that Adobe, and others, have borrowed heavily as well from the Pixar Image Computer, which used tiles in a SIMD architecture that is well documented in SIGGRAPH and other publications.
BTW - your earlier point about hardware not automatically bestowing multi processor capability on a program is correct. Although separate processes in the OS can run concurrently, tasks within a single program require special handling at the application level to get maximum benefit from multiple processors.
--
Mike Russell
www.curvemeister.com/forum/