home *** CD-ROM | disk | FTP | other *** search
- INTRODUCTION
-
- A helper module which provides glue to bind the software rasterizer to
- the software t&l module. The main task of this module is to build
- swrast vertices from the t&l vertex_buffer structs, and to use them to
- perform triangle setup functions not implemented in the software
- rasterizer.
-
- The module implements a full set of functions to plug into the
- t_vb_render.c driver interface (tnl->Driver.Render.*).
-
- There are strong advantages to decoupling the software rasterizer from
- the t&l module, primarily allowing hardware drivers better control
- over fallbacks, the removal of implicit knowledge about the software
- rasterizer in the t&l module, allowing the two modules to evolve
- independently and allowing either to be substituted with equivalent
- functionality from another codebase.
-
- This module implements triangle/quad setup for offset, unfilled and
- twoside-lit triangles. The software rasterizer doesn't handle these
- primitives directly.
-
- Hardware rasterization drivers typically use this module in situations
- where no hardware rasterization is possible, ie during total
- fallbacks.
-
- STATE
-
- To create and destroy the module:
-
- GLboolean _swsetup_CreateContext( GLcontext *ctx );
- void _swsetup_DestroyContext( GLcontext *ctx );
-
- The module is not active by default, and must be installed by calling
- _swrast_Wakeup(). This function installs internal swrast_setup
- functions into all the tnl->Driver.Render driver hooks, thus taking
- over the task of rasterization entirely:
-
- void _swrast_Wakeup( GLcontext *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 _swsetup_InvalidateState( GLcontext *ctx, GLuint new_state );
-
- There is no explicit call to put the swsetup module to sleep. Simply
- install other function pointers into all the tnl->Driver.Render.*
- hooks, and (optionally) cease calling _swsetup_InvalidateState().
-
- DRIVER INTERFACE
-
- The module offers a minimal driver interface:
-
- void (*Start)( GLcontext *ctx );
- void (*Finish)( GLcontext *ctx );
-
- These are called before and after the completion of all swrast drawing
- activity. As swrast doesn't call callbacks during triangle, line or
- point rasterization, these are necessary to provide locking hooks for
- some drivers. They may otherwise be left null.
-
-
-