0,0 → 1,55 |
INTRODUCTION |
|
Mesa's native software rasterizer. This module provides the fallback |
paths for rasterization operations and states that aren't accelerated |
in hardware drivers, and as the full rasterization engine in software |
drivers. |
|
The swrast module 'stands alone', relying only on interfaces to core |
mesa and it's own driver interface. It knows nothing about the tnl or |
other modules, allowing it to be used for fallback paths in future tnl |
schemes without modification. |
|
As well as providing triangle/line/point rasterization functionality, |
the module provides implementations of the pixel operations |
(ReadPixels, etc), and texture operations (CopyTexSubImage) which may |
be plugged in to the core Mesa driver interface where accelerated |
versions of these operations are unavailable. |
|
|
STATE |
|
To create and destroy the module: |
|
GLboolean _swrast_CreateContext( struct gl_context *ctx ); |
void _swrast_DestroyContext( struct gl_context *ctx ); |
|
This module tracks state changes internally and maintains derived |
values based on the current state. For this to work, the driver |
ensure the following funciton is called whenever the state changes and |
the swsetup module is 'awake': |
|
void _swrast_InvalidateState( struct gl_context *ctx, GLuint new_state ); |
|
There is no explicit call to put the swrast module to sleep. |
|
|
CUSTOMIZATION |
|
void (*choose_point)( struct gl_context * ); |
void (*choose_line)( struct gl_context * ); |
void (*choose_triangle)( struct gl_context * ); |
|
Drivers may add additional triangle/line/point functions to swrast by |
overriding these functions. It is necessary for the driver to be very |
careful that it doesn't return an inappropriate function, eg a |
rasterization function in feedback mode. See the X11 driver for |
examples. |
|
DRIVER INTERFACE |
|
The swrast device driver provides swrast primarily with span- and |
pixel- level interfaces to a framebuffer, with a few additional hooks |
for locking and setting the read buffer. |
|
See the definition of struct swrast_device_driver in swrast.h. |