aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/drivers/windows/gldirect/dglglobals.h
blob: 995f1cd5e48c852ade926c83c34c358e587fef11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
/****************************************************************************
*
*                        Mesa 3-D graphics library
*                        Direct3D Driver Interface
*
*  ========================================================================
*
*   Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
*
*   Permission is hereby granted, free of charge, to any person obtaining a
*   copy of this software and associated documentation files (the "Software"),
*   to deal in the Software without restriction, including without limitation
*   the rights to use, copy, modify, merge, publish, distribute, sublicense,
*   and/or sell copies of the Software, and to permit persons to whom the
*   Software is furnished to do so, subject to the following conditions:
*
*   The above copyright notice and this permission notice shall be included
*   in all copies or substantial portions of the Software.
*
*   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
*   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
*   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
*   SCITECH SOFTWARE INC BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
*   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
*   OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
*   SOFTWARE.
*
*  ======================================================================
*
* Language:     ANSI C
* Environment:  Windows 9x (Win32)
*
* Description:  Globals.
*
****************************************************************************/

#ifndef __DGLGLOBALS_H
#define __DGLGLOBALS_H

#include "dglcontext.h"
#include "dglpf.h"		// Pixel format
#ifndef _USE_GLD3_WGL
#include "d3dtexture.h"
#endif

/*---------------------- Macros and type definitions ----------------------*/

typedef enum {
	DGL_RENDER_MESASW		= 0,
	DGL_RENDER_D3D			= 1,
	DGL_RENDER_FORCE_DWORD	= 0x7ffffff,
} DGL_renderType;

#ifdef _USE_GLD3_WGL

// Same as DGL_renderType? KeithH
typedef enum {
	GLDS_DRIVER_MESA_SW			= 0,	// Mesa SW rendering
	GLDS_DRIVER_REF				= 1,	// Direct3D Reference Rasteriser
	GLDS_DRIVER_HAL				= 2,	// Direct3D HW rendering
} GLDS_DRIVER;

typedef enum {
	GLDS_TNL_DEFAULT			= 0,	// Choose best TnL method
	GLDS_TNL_MESA				= 1,	// Mesa TnL
	GLDS_TNL_D3DSW				= 2,	// D3D Software TnL
	GLDS_TNL_D3DHW				= 3,	// D3D Hardware TnL
} GLDS_TNL;

typedef enum {
	GLDS_MULTISAMPLE_NONE		= 0,
	GLDS_MULTISAMPLE_FASTEST	= 1,
	GLDS_MULTISAMPLE_NICEST		= 2,
} GLDS_MULTISAMPLE;
#endif

typedef struct {
	// Registry settings
	char				szDDName[MAX_DDDEVICEID_STRING]; // DirectDraw device name
	char				szD3DName[MAX_DDDEVICEID_STRING]; // Direct3D driver name
	BOOL				bPrimary; // Is ddraw device the Primary device?
	BOOL				bHardware; // Is the d3d driver a Hardware driver?
#ifndef _USE_GLD3_WGL
	GUID				ddGuid; // GUID of the ddraw device 
	GUID				d3dGuid; // GUID of the direct3d driver
#endif // _USE_GLD3_WGL
//	BOOL				bFullscreen; // Force fullscreen - only useful for primary adaptors.
	BOOL				bSquareTextures; // Does this driver require square textures?
	DWORD               dwRendering; // Type of rendering required

	BOOL				bWaitForRetrace; // Sync to vertical retrace
	BOOL				bFullscreenBlit; // Use Blt instead of Flip in fullscreen modes

	// Multitexture
	BOOL				bMultitexture;

	BOOL				bUseMipmaps;

	DWORD				dwMemoryType; // Sysmem or Vidmem

	// Global palette
	BOOL				bPAL8;
	DDPIXELFORMAT		ddpfPAL8;

	// Multitexture
	WORD				wMaxSimultaneousTextures;

	// Win32 internals
	BOOL				bAppActive; // Keep track of Alt-Tab
	LONG				lpfnWndProc; // WndProc of calling app

	// Pixel Format Descriptior list.
	int					nPixelFormatCount;
	DGL_pixelFormat		*lpPF;
#ifndef _USE_GLD3_WGL
	// ZBuffer pixel formats
	int					nZBufferPFCount; // Count of Zbuffer pixel formats
	DDPIXELFORMAT		*lpZBufferPF; // ZBuffer pixel formats

	// Display modes (for secondary devices)
	int					nDisplayModeCount;
	DDSURFACEDESC2		*lpDisplayModes;

	// Texture pixel formats
	int					nTextureFormatCount;
	DGL_textureFormat	*lpTextureFormat;
#endif // _USE_GLD3_WGL
	// Alpha emulation via chroma key
	BOOL				bEmulateAlphaTest;

	// Geom pipeline override.
	// If this is set TRUE then the D3D pipeline will never be used,
	// and the Mesa pipline will always be used.
	BOOL				bForceMesaPipeline;

#ifdef _USE_GLD3_WGL
	BOOL				bPixelformatsDirty;	// Signal a list rebuild
#endif

	// Additional globals to support multiple GL rendering contexts, GLRCs
	BOOL				bDirectDraw;			// DirectDraw interface exists ?
	BOOL				bDirectDrawPrimary;		// DirectDraw primary surface exists ?
	BOOL				bDirect3D;				// Direct3D interface exists ?
	BOOL				bDirect3DDevice;		// Direct3D device exists ?

	BOOL 				bDirectDrawStereo;		// DirectDraw Stereo driver started ?
	int 				iDirectDrawStereo;		// DirectDraw Stereo driver reference count
	HWND				hWndActive;				// copy of active window

    // Copies of DirectX COM interfaces for re-referencing across multiple GLRCs
//	IDirectDraw4			*lpDD4;				// copy of DirectDraw interface
//	IDirectDrawSurface4		*lpPrimary4;		// copy of DirectDraw primary surface
//	IDirectDrawSurface4		*lpBack4;
//	IDirectDrawSurface4		*lpDepth4;
//	IDirectDrawPalette		*lpGlobalPalette;

	// Aids for heavy-duty MFC-windowed OGL apps, like AutoCAD
	BOOL				bMessageBoxWarnings;	// popup message box warning
	BOOL				bDirectDrawPersistant;  // DirectDraw is persisitant
	BOOL				bPersistantBuffers;  	// DirectDraw buffers persisitant

	// FPU setup option for CAD precision (AutoCAD) vs GAME speed (Quake)
	BOOL				bFastFPU;				// single-precision-only FPU ?

	// Hot-Key support, like for real-time stereo parallax adjustments
	BOOL				bHotKeySupport;			// hot-key support ?

	// Multi-threaded support, for apps like 3DStudio
	BOOL				bMultiThreaded;			// multi-threaded ?

	// Detect and use app-specific customizations for apps like 3DStudio
	BOOL				bAppCustomizations;		// app customizations ?

#ifdef _USE_GLD3_WGL
	DWORD				dwAdapter;				// Primary DX8 adapter
	DWORD				dwTnL;					// MesaSW TnL
	DWORD				dwMultisample;			// Multisample Off
	DWORD				dwDriver;				// Direct3D HW
	void				*pDrvPrivate;			// Driver-specific data
#endif

} DGL_globals;

/*------------------------- Function Prototypes ---------------------------*/

#ifdef  __cplusplus
extern "C" {
#endif

DGL_globals	glb;

void		dglInitGlobals();

#ifdef  __cplusplus
}
#endif

#endif