Move the GetDeviceCaps into the wined3d library and call from d3d9.
[wine/multimedia.git] / dlls / wined3d / wined3d_private.h
blob6191541ec5f281795035e5ce7ee91f42a99a783a
1 /*
2 * Direct3D wine internal private include file
4 * Copyright 2002-2003 The wine-d3d team
5 * Copyright 2002-2003 Raphael Junqueira
6 * Copyright 2004 Jason Edmeades
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #ifndef __WINE_WINED3D_PRIVATE_H
24 #define __WINE_WINED3D_PRIVATE_H
26 #include <stdarg.h>
27 #define NONAMELESSUNION
28 #define NONAMELESSSTRUCT
29 #include "windef.h"
30 #include "winbase.h"
31 #include "winreg.h"
32 #include "wingdi.h"
33 #include "winuser.h"
34 #include "wine/debug.h"
36 #include "d3d9.h"
37 #include "d3d9types.h"
38 #include "wine/wined3d_interface.h"
39 #include "wine/wined3d_gl.h"
41 extern int vs_mode;
42 #define VS_NONE 0
43 #define VS_HW 1
44 #define VS_SW 2
46 extern int ps_mode;
47 #define PS_NONE 0
48 #define PS_HW 1
50 /* X11 locking */
52 extern void (*wine_tsx11_lock_ptr)(void);
53 extern void (*wine_tsx11_unlock_ptr)(void);
55 /* As GLX relies on X, this is needed */
56 extern int num_lock;
58 #if 0
59 #define ENTER_GL() ++num_lock; if (num_lock > 1) FIXME("Recursive use of GL lock to: %d\n", num_lock); wine_tsx11_lock_ptr()
60 #define LEAVE_GL() if (num_lock != 1) FIXME("Recursive use of GL lock: %d\n", num_lock); --num_lock; wine_tsx11_unlock_ptr()
61 #else
62 #define ENTER_GL() wine_tsx11_lock_ptr()
63 #define LEAVE_GL() wine_tsx11_unlock_ptr()
64 #endif
66 /*****************************************************************************
67 * Defines
69 #define GL_SUPPORT(ExtName) (This->gl_info.supported[ExtName] != 0)
72 #define MAX_STREAMS 16 /* Maximum possible streams - used for fixed size arrays
73 See MaxStreams in MSDN under GetDeviceCaps */
75 #define WINED3D_VSHADER_MAX_CONSTANTS 96
76 /* Maximum number of constants provided to the shaders */
78 /*****************************************************************************
79 * IWineD3D implementation structure
81 typedef struct IWineD3DImpl
83 /* IUnknown fields */
84 IWineD3DVtbl *lpVtbl;
85 DWORD ref; /* Note: Ref counting not required */
87 /* WineD3D Information */
88 UINT dxVersion;
90 /* GL Information */
91 BOOL isGLInfoValid;
92 WineD3D_GL_Info gl_info;
93 } IWineD3DImpl;
95 extern IWineD3DVtbl IWineD3D_Vtbl;
97 /* Utility function prototypes */
98 const char* debug_d3dformat(D3DFORMAT fmt);
99 const char* debug_d3ddevicetype(D3DDEVTYPE devtype);
100 const char* debug_d3dresourcetype(D3DRESOURCETYPE res);
101 const char* debug_d3dusage(DWORD usage);
105 #if 0 /* Needs fixing during rework */
106 /*****************************************************************************
107 * IDirect3DVertexShaderDeclaration implementation structure
109 struct IDirect3DVertexShaderDeclarationImpl {
110 /* The device */
111 /*IDirect3DDeviceImpl* device;*/
113 /** precomputed fvf if simple declaration */
114 DWORD fvf[MAX_STREAMS];
115 DWORD allFVF;
117 /** dx8 compatible Declaration fields */
118 DWORD* pDeclaration8;
119 DWORD declaration8Length;
123 /*****************************************************************************
124 * IDirect3DVertexShader implementation structure
126 struct IDirect3DVertexShaderImpl {
127 /* The device */
128 /*IDirect3DDeviceImpl* device;*/
130 DWORD* function;
131 UINT functionLength;
132 DWORD usage;
133 DWORD version;
134 /* run time datas */
135 VSHADERDATA* data;
136 VSHADERINPUTDATA input;
137 VSHADEROUTPUTDATA output;
141 /*****************************************************************************
142 * IDirect3DPixelShader implementation structure
144 struct IDirect3DPixelShaderImpl {
145 /* The device */
146 /*IDirect3DDeviceImpl* device;*/
148 DWORD* function;
149 UINT functionLength;
150 DWORD version;
151 /* run time datas */
152 PSHADERDATA* data;
153 PSHADERINPUTDATA input;
154 PSHADEROUTPUTDATA output;
157 #endif /* Needs fixing during rework */
158 #endif