Merge branch 'master' into gallium-texture-transfer
[mesa.git] / src / mesa / drivers / windows / gldirect / gld_driver.h
1 /****************************************************************************
2 *
3 * Mesa 3-D graphics library
4 * Direct3D Driver Interface
5 *
6 * ========================================================================
7 *
8 * Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining a
11 * copy of this software and associated documentation files (the "Software"),
12 * to deal in the Software without restriction, including without limitation
13 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 * and/or sell copies of the Software, and to permit persons to whom the
15 * Software is furnished to do so, subject to the following conditions:
16 *
17 * The above copyright notice and this permission notice shall be included
18 * in all copies or substantial portions of the Software.
19 *
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23 * SCITECH SOFTWARE INC BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
24 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
25 * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26 * SOFTWARE.
27 *
28 * ======================================================================
29 *
30 * Language: ANSI C
31 * Environment: Windows 9x/2000/XP/XBox (Win32)
32 *
33 * Description: Driver functions and interfaces
34 *
35 ****************************************************************************/
36
37 #ifndef _GLD_DRIVER_H
38 #define _GLD_DRIVER_H
39
40 // This file is only useful is we're using the new GLD3 WGL code.
41 #ifdef _USE_GLD3_WGL
42
43 #include "dglcontext.h"
44
45 // Same as DX8 D3DDISPLAYMODE
46 typedef struct {
47 DWORD Width;
48 DWORD Height;
49 DWORD Refresh;
50 DWORD BPP;
51 } GLD_displayMode;
52
53 typedef struct {
54 // Returns a string for a given HRESULT error code.
55 BOOL (*GetDXErrorString)(HRESULT hr, char *buf, int nBufSize);
56
57 // Driver functions for managing drawables.
58 // Functions must respect persistant buffers / persistant interface.
59 // NOTE: Persistant interface is: DirectDraw, pre-DX8; Direct3D, DX8 and above.
60 BOOL (*CreateDrawable)(DGL_ctx *ctx, BOOL bPersistantInterface, BOOL bPersistantBuffers);
61 BOOL (*ResizeDrawable)(DGL_ctx *ctx, BOOL bDefaultDriver, BOOL bPersistantInterface, BOOL bPersistantBuffers);
62 BOOL (*DestroyDrawable)(DGL_ctx *ctx);
63
64 // Create/Destroy private globals belonging to driver
65 BOOL (*CreatePrivateGlobals)(void);
66 BOOL (*DestroyPrivateGlobals)(void);
67
68 // Build pixelformat list
69 BOOL (*BuildPixelformatList)(void);
70
71 // Initialise Mesa's driver pointers
72 BOOL (*InitialiseMesa)(DGL_ctx *ctx);
73
74 // Swap buffers
75 BOOL (*SwapBuffers)(DGL_ctx *ctx, HDC hDC, HWND hWnd);
76
77 // wglGetProcAddress()
78 PROC (*wglGetProcAddress)(LPCSTR a);
79
80 BOOL (*GetDisplayMode)(DGL_ctx *ctx, GLD_displayMode *glddm);
81 } GLD_driver;
82
83 extern GLD_driver _gldDriver;
84
85 BOOL gldInitDriverPointers(DWORD dwDriver);
86 const GLubyte* _gldGetStringGeneric(GLcontext *ctx, GLenum name);
87
88 #endif // _USE_GLD3_WGL
89
90 #endif // _GLD_DRIVER_H