/*===========================================================================*/ /* */ /* Mesa-3.0 DirectX 6 Driver */ /* */ /* By Leigh McRae */ /* */ /* http://www.altsoftware.com/ */ /* */ /* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */ /*===========================================================================*/ #ifndef D3D_MESA_ALL_H #define D3D_MESA_ALL_H #ifdef __cplusplus extern "C" { #endif /*===========================================================================*/ /* Includes. */ /*===========================================================================*/ #include #include /*===========================================================================*/ /* Magic numbers. */ /*===========================================================================*/ #define TM_ACTION_LOAD 0x01 #define TM_ACTION_BIND 0x02 #define TM_ACTION_UPDATE 0x04 #define UM_FATALSHUTDOWN (WM_USER+42) /*===========================================================================*/ /* Macros defines. */ /*===========================================================================*/ #define ALLOC(cb) malloc( (cb) ) #define FREE(p) { free( (p) ); (p) = NULL; } /*===========================================================================*/ /* Type defines. */ /*===========================================================================*/ typedef struct _pixel_convert { int cb, /* Count in bytes of one pixel. */ rShift, /* Shift count that postions each componet. */ gShift, bShift, aShift; float rScale, /* Value that scales a color that ranges 0.0 -> 1.0 */ gScale, /* to this pixel format. */ bScale, aScale; DWORD dwRMask, /* Color mask per component. */ dwGMask, dwBMask, dwAMask; } PIXELINFO, *PPIXELINFO; typedef struct _d3d_shared_info { HWND hwnd; BOOL bWindow, bFlipable, bForceSW, bHardware; RECT rectW, /* Window size and postion in screen space. */ rectV; /* Viewport size and postion. */ DWORD dwWidth, /* Current render size for quick checks. */ dwHeight; PIXELINFO pixel; DWORD dwSrcBlendCaps[14], /* See D3DCAPS.CPP */ dwDestBlendCaps[14], dwTexFunc[4]; } MESAD3DSHARED, *PMESAD3DSHARED; typedef struct _render_options { BOOL bForceSoftware, /* TODO: Add user switches. */ bStretchtoPrimary; } USER_CTRL, *PUSER_CRTL; enum { s_zero = 0, s_one, s_dst_color, s_one_minus_dst_color, s_src_alpha, s_one_minus_src_alpha, s_dst_alpha, s_one_minus_dst_alpha, s_src_alpha_saturate, s_constant_color, s_one_minus_constant_color, s_constant_alpha, s_one_minus_constant_alpha }; enum { d_zero = 0, d_one, d_src_color, d_one_minus_src_color, d_src_alpha, d_one_minus_src_alpha, d_dst_alpha, d_one_minus_dst_alpha, d_constant_color, d_one_minus_constant_color, d_constant_alpha, d_one_minus_constant_alpha }; enum { d3dtblend_decal = 0, d3dtblend_decalalpha, d3dtblend_modulate, d3dtblend_modulatealpha }; /*===========================================================================*/ /* Function prototypes. */ /*===========================================================================*/ PMESAD3DSHARED InitHAL( HWND hwnd ); void TermHAL( PMESAD3DSHARED pShared ); BOOL CreateHAL( PMESAD3DSHARED pShared ); BOOL SetViewportHAL( PMESAD3DSHARED pShared, RECT *pRect, float minZ, float maxZ ); void ClearHAL( PMESAD3DSHARED pShared, DWORD dwFlags, BOOL bAll, int x, int y, int cx, int cy, DWORD dwColor, float zv, DWORD dwStencil ); void SetStateHAL( PMESAD3DSHARED pShared, DWORD dwType, DWORD dwState ); void DrawPrimitiveHAL( PMESAD3DSHARED pShared, D3DPRIMITIVETYPE dptPrimitiveType, D3DTLVERTEX *pVertices, DWORD dwCount ); void SwapBuffersHAL( PMESAD3DSHARED pShared ); DDSURFACEDESC2 *LockHAL( PMESAD3DSHARED pShared, BOOL bBack ); void UnlockHAL( PMESAD3DSHARED pShared, BOOL bBack ); void UpdateScreenPosHAL( PMESAD3DSHARED pShared ); void GetPixelInfoHAL( PMESAD3DSHARED pShared, PPIXELINFO pPixel ); BOOL CreateTMgrHAL( PMESAD3DSHARED pShared, DWORD dwName, int level, DWORD dwRequestFlags, RECT *rectDirty, DWORD dwWidth, DWORD dwHeight, DWORD dwAction, void *pPixels ); void DisableTMgrHAL( PMESAD3DSHARED pShared ); int SaveDIBitmap( char *filename, BITMAPINFO *info, void *bits ); int ARGB_SaveBitmap( char *filename, int width, int height, unsigned char *pARGB ); int BGRA_SaveBitmap( char *filename, int width, int height, unsigned char *pBGRA ); int BGR_SaveBitmap( char *filename, int width, int height, unsigned char *pBGR ); /*===========================================================================*/ /* Global variables. */ /*===========================================================================*/ extern float g_DepthScale, /* Mesa needs to scale Z in SW. The HAL */ g_MaxDepth; /* doesn't but I wanted SW still to work.*/ #ifdef __cplusplus } #endif #endif