/*===========================================================================*/ /* */ /* Mesa-3.0 DirectX 6 Driver */ /* */ /* By Leigh McRae */ /* */ /* http://www.altsoftware.com/ */ /* */ /* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */ /*===========================================================================*/ #include "Debug.h" /*===========================================================================*/ /* Global variables. */ /*===========================================================================*/ DWORD g_DBGMask = DBG_ALL_ERROR; /*===========================================================================*/ /* This is your basic DPF function with printf like support. The function */ /* also works with a global debug mask variable. I have written support that*/ /* allows for the user's enviroment variable space to be read and set the */ /* masks. This is done when the dll starts and is only in the debug version.*/ /*===========================================================================*/ /* RETURN: */ /*===========================================================================*/ void _cdecl DebugPrint( int mask, char *pszFormat, ... ) { char buffer[512]; va_list args; /* A mask of 0 will always pass. Easy to remeber. */ if ( (mask == 0) || (mask & g_DBGMask) ) { va_start( args, pszFormat ); if ( mask & DBG_ALL_ERROR ) OutputDebugString( "MesaD3D: (ERROR)" ); else OutputDebugString( "MesaD3D: " ); vsprintf( buffer, pszFormat, args ); strcat( buffer, "\n" ); OutputDebugString( buffer ); va_end( args ); } } /*===========================================================================*/ /* This call reads the users enviroment variables and sets any debug mask */ /* that they have set to TRUE. Now the value must be "TRUE". */ /*===========================================================================*/ /* RETURN: */ /*===========================================================================*/ void ReadDBGEnv( void ) { g_DBGMask = DBG_ALL_ERROR; #define IS_VAR_SET(v) if ( getenv( # v ) && !strcmp(getenv( # v ),"TRUE") ) g_DBGMask |= v; IS_VAR_SET( DBG_FUNC ); IS_VAR_SET( DBG_STATES ); IS_VAR_SET( DBG_CNTX_INFO ); IS_VAR_SET( DBG_CNTX_WARN ); IS_VAR_SET( DBG_CNTX_PROFILE ); IS_VAR_SET( DBG_CNTX_ERROR ); IS_VAR_SET( DBG_CNTX_ALL ); IS_VAR_SET( DBG_PRIM_INFO ); IS_VAR_SET( DBG_PRIM_WARN ); IS_VAR_SET( DBG_PRIM_PROFILE ); IS_VAR_SET( DBG_PRIM_ERROR ); IS_VAR_SET( DBG_PRIM_ALL ); IS_VAR_SET( DBG_TXT_INFO ); IS_VAR_SET( DBG_TXT_WARN ); IS_VAR_SET( DBG_TXT_PROFILE ); IS_VAR_SET( DBG_TXT_ERROR ); IS_VAR_SET( DBG_TXT_ALL ); IS_VAR_SET( DBG_ALL_INFO ); IS_VAR_SET( DBG_ALL_WARN ); IS_VAR_SET( DBG_ALL_PROFILE ); IS_VAR_SET( DBG_ALL_ERROR ); IS_VAR_SET( DBG_ALL ); #undef IS_VAR_SET } /*===========================================================================*/ /* This function will take a pointer to a DDSURFACEDESC2 structure & display*/ /* the parsed information using a DPF call. */ /*===========================================================================*/ /* RETURN: */ /*===========================================================================*/ void DebugPixelFormat( char *pszSurfaceName, DDPIXELFORMAT *pddpf ) { char buffer[256]; /* Parse the flag type and write the string equivalent. */ if ( pddpf->dwFlags & DDPF_ALPHA ) strcat( buffer, "DDPF_ALPHA " ); if ( pddpf->dwFlags & DDPF_ALPHAPIXELS ) strcat( buffer, "DDPF_ALPHAPIXELS " ); if ( pddpf->dwFlags & DDPF_ALPHAPREMULT ) strcat( buffer, "DDPF_ALPHAPREMULT " ); if ( pddpf->dwFlags & DDPF_BUMPLUMINANCE ) strcat( buffer, "DDPF_BUMPLUMINANCE " ); if ( pddpf->dwFlags & DDPF_BUMPDUDV ) strcat( buffer, "DDPF_BUMPDUDV " ); if ( pddpf->dwFlags & DDPF_COMPRESSED ) strcat( buffer, "DDPF_COMPRESSED " ); if ( pddpf->dwFlags & DDPF_FOURCC ) strcat( buffer, "DDPF_FOURCC " ); if ( pddpf->dwFlags & DDPF_LUMINANCE ) strcat( buffer, "DDPF_LUMINANCE " ); if ( pddpf->dwFlags & DDPF_PALETTEINDEXED1 ) strcat( buffer, "DDPF_PALETTEINDEXED1 " ); if ( pddpf->dwFlags & DDPF_PALETTEINDEXED2 ) strcat( buffer, "DDPF_PALETTEINDEXED2 " ); if ( pddpf->dwFlags & DDPF_PALETTEINDEXED4 ) strcat( buffer, "DDPF_PALETTEINDEXED4 " ); if ( pddpf->dwFlags & DDPF_PALETTEINDEXED8 ) strcat( buffer, "DDPF_PALETTEINDEXED8 " ); if ( pddpf->dwFlags & DDPF_PALETTEINDEXEDTO8 ) strcat( buffer, "DDPF_PALETTEINDEXEDTO8 " ); if ( pddpf->dwFlags & DDPF_RGB ) strcat( buffer, "DDPF_RGB " ); if ( pddpf->dwFlags & DDPF_RGBTOYUV ) strcat( buffer, "DDPF_RGBTOYUV " ); if ( pddpf->dwFlags & DDPF_STENCILBUFFER ) strcat( buffer, "DDPF_STENCILBUFFER " ); if ( pddpf->dwFlags & DDPF_YUV ) strcat( buffer, "DDPF_YUV " ); if ( pddpf->dwFlags & DDPF_ZBUFFER ) strcat( buffer, "DDPF_ZBUFFER " ); if ( pddpf->dwFlags & DDPF_ZPIXELS ) strcat( buffer, "DDPF_ZPIXELS " ); DPF(( (DBG_TXT_INFO|DBG_CNTX_INFO),"%s", buffer )); }