NAME
icetStrategy -- set the strategy used to composite images.
Synopsis
#include <GL/ice-t.h>
void icetStrategy( IceTStrategy strategy );
Description
The IceT API comes packaged with several algorithms for compositing
images. The algorithm to use is determined by selecting a strategy.
The strategy is selected with icetStrategy. A strategy must be
selected before icetDrawFrame is called.
The strategy is of type IceTStrategy. This is an opaque type. There
are no conventions to create or change an IceTStrategy, but there are
several predefined strategies to select from. They are:
ICET_STRATEGY_SERIAL
Basically applies a ``traditional'' single tile composition
(such as binary swap) to each tile in the order they were
defined. Because each process must take part in the composition
of each tile regardless of whether they draw into it, this
strategy is usually very inefficient when compositing for more
than tile. It is provided mostly for comparative purposes.
ICET_STRATEGY_DIRECT
As each process renders an image for a tile, that image is sent
directly to the process that will display that tile. This
usually results in a few processes receiving and processing the
majority of the data, and is therefore usually an inefficient
strategy.
ICET_STRATEGY_SPLIT
Like ICET_STRATEGY_DIRECT, except that the tiles are split up,
and each process is assigned a piece of a tile in such a way
that each process receives and handles about the same amount of
data. This strategy is often very efficient, but due to the
large amount of messages passed, it has not proven to be very
scalable or robust.
ICET_STRATEGY_REDUCE
A two phase algorithm. In the first phase, tile images are
redistributed such that each process has one image for one tile.
In the second phase, a ``traditional'' single tile composition
is performed for each tile. Since each process contains an image
for only one tile, all these compositions may happen
simultaneously. This is a well rounded strategy that seems to
perform well in a wide variety of applications.
ICET_STRATEGY_VTREE
An extension to the binary tree algorithm for image
composition. Sets up a `virtual' composition tree for each tile
image. Processes that belong to multiple trees (because they
render to more than one tile) are allowed to float between
trees. This strategy is not quite as well load balanced as
ICET_STRATEGY_REDUCE or ICET_STRATEGY_SPLIT, but has very well
behaved network communication.
Not all of the strategies support ordered image composition.
ICET_STRATEGY_SERIAL, ICET_STRATEGY_DIRECT, and ICET_STRATEGY_REDUCE do
support ordered image composition. ICET_STRATEGY_SPLIT and
ICET_STRATEGY_VTREE do not support ordered image composition and will
ignore ICET_ORDERED_COMPOSITE if it is enabled.
Errors
None.
Warnings
None.
Bugs
Use the ICET_STRATEGY_SPLIT strategy with care. It has proven to be
unreliable on several high-speed interconnects. Avoid using it at all
in a production application.
Copyright
Copyright (C)2003 Sandia Corporation
Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
license for use of this work by or on behalf of the U.S. Government.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that this Notice and any statement
of authorship are reproduced on all copies.
See Also
icetDrawFrame(3), icetGetStrategyName(3)
IceT Reference February 13, 2008 icetStrategy(3)