1 /*===========================================================================*/
3 /* Mesa-3.0 DirectX 6 Driver */
7 /* http://www.altsoftware.com/ */
9 /* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
10 /*===========================================================================*/
11 #ifndef D3D_MESA_ALL_H
12 #define D3D_MESA_ALL_H
18 /*===========================================================================*/
20 /*===========================================================================*/
23 /*===========================================================================*/
25 /*===========================================================================*/
26 #define TM_ACTION_LOAD 0x01
27 #define TM_ACTION_BIND 0x02
28 #define TM_ACTION_UPDATE 0x04
30 #define UM_FATALSHUTDOWN (WM_USER+42)
31 /*===========================================================================*/
33 /*===========================================================================*/
34 #define ALLOC(cb) malloc( (cb) )
35 #define FREE(p) { free( (p) ); (p) = NULL; }
36 /*===========================================================================*/
38 /*===========================================================================*/
39 typedef struct _pixel_convert
41 int cb
, /* Count in bytes of one pixel. */
42 rShift
, /* Shift count that postions each componet. */
46 float rScale
, /* Value that scales a color that ranges 0.0 -> 1.0 */
47 gScale
, /* to this pixel format. */
50 DWORD dwRMask
, /* Color mask per component. */
55 } PIXELINFO
, *PPIXELINFO
;
58 typedef struct _d3d_shared_info
65 RECT rectW
, /* Window size and postion in screen space. */
66 rectV
; /* Viewport size and postion. */
67 DWORD dwWidth
, /* Current render size for quick checks. */
71 DWORD dwSrcBlendCaps
[14], /* See D3DCAPS.CPP */
75 } MESAD3DSHARED
, *PMESAD3DSHARED
;
77 typedef struct _render_options
79 BOOL bForceSoftware
, /* TODO: Add user switches. */
82 } USER_CTRL
, *PUSER_CRTL
;
87 s_one_minus_dst_color
,
89 s_one_minus_src_alpha
,
91 s_one_minus_dst_alpha
,
94 s_one_minus_constant_color
,
96 s_one_minus_constant_alpha
};
101 d_one_minus_src_color
,
103 d_one_minus_src_alpha
,
105 d_one_minus_dst_alpha
,
107 d_one_minus_constant_color
,
109 d_one_minus_constant_alpha
};
111 enum { d3dtblend_decal
= 0,
112 d3dtblend_decalalpha
,
114 d3dtblend_modulatealpha
};
116 /*===========================================================================*/
117 /* Function prototypes. */
118 /*===========================================================================*/
119 PMESAD3DSHARED
InitHAL( HWND hwnd
);
120 void TermHAL( PMESAD3DSHARED pShared
);
121 BOOL
CreateHAL( PMESAD3DSHARED pShared
);
122 BOOL
SetViewportHAL( PMESAD3DSHARED pShared
, RECT
*pRect
, float minZ
, float maxZ
);
124 void ClearHAL( PMESAD3DSHARED pShared
, DWORD dwFlags
, BOOL bAll
, int x
, int y
, int cx
, int cy
, DWORD dwColor
, float zv
, DWORD dwStencil
);
125 void SetStateHAL( PMESAD3DSHARED pShared
, DWORD dwType
, DWORD dwState
);
126 void DrawPrimitiveHAL( PMESAD3DSHARED pShared
, D3DPRIMITIVETYPE dptPrimitiveType
, D3DTLVERTEX
*pVertices
, DWORD dwCount
);
128 void SwapBuffersHAL( PMESAD3DSHARED pShared
);
129 DDSURFACEDESC2
*LockHAL( PMESAD3DSHARED pShared
, BOOL bBack
);
130 void UnlockHAL( PMESAD3DSHARED pShared
, BOOL bBack
);
131 void UpdateScreenPosHAL( PMESAD3DSHARED pShared
);
132 void GetPixelInfoHAL( PMESAD3DSHARED pShared
, PPIXELINFO pPixel
);
133 BOOL
CreateTMgrHAL( PMESAD3DSHARED pShared
, DWORD dwName
, int level
, DWORD dwRequestFlags
, RECT
*rectDirty
, DWORD dwWidth
, DWORD dwHeight
, DWORD dwAction
, void *pPixels
);
134 void DisableTMgrHAL( PMESAD3DSHARED pShared
);
137 int SaveDIBitmap( char *filename
, BITMAPINFO
*info
, void *bits
);
138 int ARGB_SaveBitmap( char *filename
, int width
, int height
, unsigned char *pARGB
);
139 int BGRA_SaveBitmap( char *filename
, int width
, int height
, unsigned char *pBGRA
);
140 int BGR_SaveBitmap( char *filename
, int width
, int height
, unsigned char *pBGR
);
141 /*===========================================================================*/
142 /* Global variables. */
143 /*===========================================================================*/
144 extern float g_DepthScale
, /* Mesa needs to scale Z in SW. The HAL */
145 g_MaxDepth
; /* doesn't but I wanted SW still to work.*/