
Bt2166
Graphics/Video Controller
Brooktree
232
3D GRAPHICS ACCELERATOR
PRE Programming Model
L2166_A
FIFO Update of Registers PRE conceptually has a register set writable and one register that is readable. How-
ever the write interface is different to the read interface in that data sent to a register
in PRE is buffered up via the edge interpolator and the command FIFO.
The read interface of PRE will return the current value of the STATUS register.
The embedded processor sets up the triangle parameters and then writes to the
S_BOT register. PRE will then perform the edge interpolation and span interpola-
tion processes to draw that triangle.
Double Buffering
If the PRE registers were to be modied directly, it would be necessary to synchro-
nize the communication of parameters between the TSC and PRE by waiting until
an operation is nished, transfer parameters, and then restart. The overhead in-
volved is likely to be high when performing short runs of complex rendering op-
erations. PRE registers are therefore double buffered, so that transfer of parameters
may take place in one operation. When the embedded processor writes to the
S_BOT register, and PRE accepts that register value, the new register values are
transferred to the working registers.
Command FIFO Depth
The depth of the command buffer (FIFO) is system dependent but typically 8 or
more.
The Register Set The register set comprises of 3 basic types:
Control Registers: Turns sections on and off, set up base values and pro-
vide limiting values.
Working Registers: Values that PRE uses for rendering.
Increment Registers:Values which update the working registers per pixel
write.
Control Registers
This set of registers covers the registers that impose limits on the rendering of a tri-
angle or a scene. Typically these are registers like vertex x co-ordinate values,
number of spans per triangle, CLUT data, xed color for blending operations, tex-
ture base address, mode register and the S_BOT register.
Working Registers
These values are usually set up on a per span basis and are “current” values used
for rendering. For example the RED alpha value is the weighting applied by the
RGB ALU to the red component of the pixel.
Increment Registers
These values are set up both edge interpolation and span interpolation processes
and are the increment values added to the working registers per rendering cycle.
During forward rendering the increment value is added (post-increment) to the
working register. During reverse rendering (where the pixel count is negative) the
increment value is taken away from (pre-decrement) from the working register. For
example, during forward rendering, the RED increment value is the value that is
added to the RED alpha value, after the pixel has been written to the screen.
Synchronization with the
TSC
Synchronization is provided by reading the STATUS register.