X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Ftnl%2FNOTES;h=43c469201adc7ec2335a6c564acc77d74e2e855a;hb=cbdc1d53542b3ecca0085399c4bb3b3371f94809;hp=c39b43485eb4922126ef9cb5038d73d973776e78;hpb=bcc13b74443137043e8a34f8cb64a5add0d8af93;p=mesa.git diff --git a/src/mesa/tnl/NOTES b/src/mesa/tnl/NOTES index c39b43485eb..43c469201ad 100644 --- a/src/mesa/tnl/NOTES +++ b/src/mesa/tnl/NOTES @@ -8,25 +8,23 @@ This module provides an implementation of the routines required by the combinations of compile and execute modes. Most current drivers use the tnl module exclusively to provide this -functionality, though there is an experimental alternate -implementation provided by the tnl_dd/t_dd_imm_* files which can -handle a small subset of GL states in execute mode only. +functionality. STATE To create and destroy the module: - GLboolean _tnl_CreateContext( GLcontext *ctx ); - void _tnl_DestroyContext( GLcontext *ctx ); + GLboolean _tnl_CreateContext( struct gl_context *ctx ); + void _tnl_DestroyContext( struct gl_context *ctx ); The module is not active by default, and must be installed by calling _tnl_Wakeup(). This function installs internal tnl functions into all the vtxfmt dispatch hooks, thus taking over the task of transformation and lighting entirely: - void _tnl_wakeup_exec( GLcontext *ctx ); - void _tnl_wakeup_save_exec( GLcontext *ctx ); + void _tnl_wakeup_exec( struct gl_context *ctx ); + void _tnl_wakeup_save_exec( struct gl_context *ctx ); This module tracks state changes internally and maintains derived @@ -34,7 +32,7 @@ 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 _tnl_InvalidateState( GLcontext *ctx, GLuint new_state ); + void _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state ); There is no explicit call to put the tnl module to sleep. Simply install other function pointers into all the vtxfmt dispatch slots, @@ -50,21 +48,21 @@ rasterization hardware (or software). The default pipeline is specified in t_pipeline.c, and is usually a starting point for driver pipelines. Some drivers will remove a stage where hardware provides support for the implemented operation (for -instance fog where per-pixel hardware fog is available, as in the dri -tdfx driver), or add stages to shortcircuit latter operations (for +instance fog where per-pixel hardware fog is available), +or add stages to shortcircuit latter operations (for example taking advantage of hardware support for strips and other higher-level primitives (for example the radeon driver). In addition, the following functions provide further tweaks: extern void -_tnl_need_projected_coords( GLcontext *ctx, GLboolean flag ); +_tnl_need_projected_coords( struct gl_context *ctx, GLboolean flag ); - Direct the default vertex transformation stage to produce/not produce projected clip coordinates. extern void -_tnl_need_dlist_loopback( GLcontext *ctx, GLboolean flag ); +_tnl_need_dlist_loopback( struct gl_context *ctx, GLboolean flag ); - Direct the display list component of the tnl module to replay display lists as 'glVertex' type calls, rather than @@ -76,7 +74,7 @@ _tnl_need_dlist_loopback( GLcontext *ctx, GLboolean flag ); extern void -_tnl_need_dlist_norm_lengths( GLcontext *ctx, GLboolean flag ); +_tnl_need_dlist_norm_lengths( struct gl_context *ctx, GLboolean flag ); - Direct the display list component to enable/disable caching 1/length values for display list normals. Doing so is @@ -88,7 +86,7 @@ DRIVER INTERFACE The module itself offers a minimal driver interface: - void (*RunPipeline)( GLcontext *ctx ); + void (*RunPipeline)( struct gl_context *ctx ); Normally this is set to _tnl_RunPipeline(), however the driver can use this hook to wrap checks or other code around this call.