| /*===========================================================================*/ |
| /* */ |
| /* 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 <stdio.h> |
| #include <string.h> |
| /*===========================================================================*/ |
| /* 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 |
| |
| |
| |