The ImageRead operator exclusively uses read() to get data from the IIO plugin.
While this is appropriate in many circumstances (such as when the plugin does
not support tiling), it is not always so. IIO has also a readAsRenderedImage()
method. If this method is implemented well, then simply returning this
RenderedImage as the operator's result is likely to be significantly more
efficient than using read() to get each tile, because the RenderedImage created
by the plugin can know format-specific details and preserve state between calls,
while those are not possible when simply using read(). An example of this is
jpeg2000, where a smart reader (not currently implemented) could return an
algorithmic RenderedImage that retains all sorts of context and caching information.
In order for this to work, the ImageRead operator has to "know" that it should
use readAsRenderedImage() rather than read(), i.e. that the plugin implemented a
useful RenderedImage. Unfortunately there is nothing in the IIO plugin API that
can be used for such a query. While there are several ways to get around this,
a "tag interface" (a la Serializeable or Cloneable) implemented by the reader
could be used as a flag to indicate that readAsRenderedImage() should be used.