HP SVA V2.0 Parallel Compositing Reference Guide
requests the channel be supplied in the output. When set to true (non-zero), the
PC_OUTPUT_DEPTH context property requests the Library to provide the PC_CHANNEL_DEPTH
for all outputs.
A result is a sub-rectangle of an output. This means it is also represented by the same
two-dimensional arrays.
Although four entities are defined (frame, framelet, output, result), the frame functions only deal
with two of these directly. Each host may present zero or more framelets to the Library to be
composited. Each host may request zero or more results.
The memory used for framelets is allocated and freed by the program calling the Library. The
memory used for results is allocated and freed by the Library. Access to results is enabled by the
Library through a special PC type called a PCchannel.
pcFrameResultChannel has parameters that specify a result and a channel. It then returns
the requested channel of the result using the PCchannel structure described Section 2.1.1. This
structure includes the address of the channel array, the size of elements, and the number of array
elements in a row. This information makes it possible to navigate the elements of the array or
use the channel as input to a graphic function, such as the OpenGL function, glDrawPixels.
2.6.2 Sequencing Frame Functions
The purpose of the Library is to create a sequence of frames. Producing frames involves a number
Library entities (see Section 1.3):
• Frame
• Framelets
• Outputs
• Results
• Channels
Using the Library typically involves each host carrying out the sequence of steps described in
Table 1-2 (page 15). The Library frame functions execute the steps under For each frame....
All hosts must call pcFrameBegin for each frame. pcFrameBegin ends in an implicit call to
pcContextSync to synchronize any changes to the frame’s properties.
Those hosts producing framelets call pcFrameAddFramelet.
All hosts must call pcFrameEnd for each frame to indicate that all framelets are ready to be
composited.
There are two points of synchronization among the hosts:
• The pcFrameBegin function.
Changes to context parameters, such as the height and width of frame, need to be shared
with all hosts.
• Request for a result.
A host cannot proceed until the pixels are available.
Other than these two points, the individual hosts progress independently and in parallel.
Many of the frame functions take a frameId as a parameter. This parameter identifies which of
the series of frames generated by a program the function call is referencing. frameIds are
generated by pcFrameBegin and then referenced by the remaining functions.
Each frame (and thus corresponding frameId) has a limited lifetime during which it can be
referenced. Without using any of the Library extensions, a frame’s lifetime is between the
pcFrameBegin call when it is generated and the next pcFrameBegin call when the next frame
is generated. Referencing the frame outside this period results in an error.
2.6 Summary of Frame Functions 37