ReactOS  0.4.14-dev-52-g6116262
ddraw_private.h
Go to the documentation of this file.
1 /*
2  * Copyright 2006 Stefan Dösinger
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 #ifndef __WINE_DLLS_DDRAW_DDRAW_PRIVATE_H
20 #define __WINE_DLLS_DDRAW_DDRAW_PRIVATE_H
21 
22 #include <assert.h>
23 #include <limits.h>
24 #define COBJMACROS
25 #define NONAMELESSSTRUCT
26 #define NONAMELESSUNION
27 #include "wine/debug.h"
28 #include "wine/heap.h"
29 
30 #include "winbase.h"
31 #include "wingdi.h"
32 #include "winuser.h"
33 
34 #include "d3d.h"
35 #include "ddraw.h"
36 #ifdef DDRAW_INIT_GUID
37 #include "initguid.h"
38 #endif
39 #include "wine/list.h"
40 #include "wine/wined3d.h"
41 
44 
45 /*****************************************************************************
46  * IDirectDraw implementation structure
47  *****************************************************************************/
48 struct FvfToDecl
49 {
50  DWORD fvf;
52 };
53 
54 #define DDRAW_INITIALIZED 0x00000001
55 #define DDRAW_D3D_INITIALIZED 0x00000002
56 #define DDRAW_RESTORE_MODE 0x00000004
57 #define DDRAW_NO3D 0x00000008
58 #define DDRAW_SCL_DDRAW1 0x00000010
59 #define DDRAW_SCL_RECURSIVE 0x00000020
60 #define DDRAW_GDI_FLIP 0x00000040
61 
62 #define DDRAW_STRIDE_ALIGNMENT 8
63 
64 #define DDRAW_WINED3D_FLAGS (WINED3D_LEGACY_DEPTH_BIAS | WINED3D_VIDMEM_ACCOUNTING \
65  | WINED3D_RESTORE_MODE_ON_ACTIVATE | WINED3D_FOCUS_MESSAGES | WINED3D_PIXEL_CENTER_INTEGER \
66  | WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR | WINED3D_NO_PRIMITIVE_RESTART \
67  | WINED3D_LEGACY_CUBEMAP_FILTERING | WINED3D_LIMIT_VIEWPORT)
68 
70 {
74 };
75 
76 struct ddraw
77 {
78  /* Interfaces */
80  IDirectDraw4 IDirectDraw4_iface;
81  IDirectDraw2 IDirectDraw2_iface;
82  IDirectDraw IDirectDraw_iface;
83  IDirect3D7 IDirect3D7_iface;
84  IDirect3D3 IDirect3D3_iface;
85  IDirect3D2 IDirect3D2_iface;
86  IDirect3D IDirect3D_iface;
88 
89  /* See comment in IDirectDraw::AddRef */
91 
92  struct wined3d *wined3d;
96 
102 
103  /* DirectDraw things, which are not handled by WineD3D */
105 
106  /* D3D things */
110 
111  /* Various HWNDs */
115 
116  /* For the dll unload cleanup code */
118  /* The surface list - can't relay this to WineD3D
119  * because of IParent
120  */
122 
123  /* FVF management */
124  struct FvfToDecl *decls;
126 };
127 
128 #define DDRAW_WINDOW_CLASS_NAME "DirectDrawDeviceWnd"
129 
134 
135 static inline void ddraw_set_swapchain_window(struct ddraw *ddraw, HWND window)
136 {
137  if (window == GetDesktopWindow())
138  window = NULL;
140 }
141 
142 /* Utility functions */
146 
148 {
149  /* IUnknown fields */
151  IDirectDrawSurface4 IDirectDrawSurface4_iface;
152  IDirectDrawSurface3 IDirectDrawSurface3_iface;
153  IDirectDrawSurface2 IDirectDrawSurface2_iface;
154  IDirectDrawSurface IDirectDrawSurface_iface;
155  IDirectDrawGammaControl IDirectDrawGammaControl_iface;
156  IDirect3DTexture2 IDirect3DTexture2_iface;
157  IDirect3DTexture IDirect3DTexture_iface;
158 
162 
163  int version;
164 
165  /* Connections to other Objects */
166  struct ddraw *ddraw;
168  unsigned int sub_resource_idx;
172 
173  /* This implementation handles attaching surfaces to other surfaces */
177 
178  /* Complex surfaces are organized in a tree, although the tree is degenerated to a list in most cases.
179  * In mipmap and primary surfaces each level has only one attachment, which is the next surface level.
180  * Only the cube texture root has 6 surfaces attached, which then have a normal mipmap chain attached
181  * to them. So hardcode the array to 6, a dynamic array or a list would be an overkill.
182  */
183 #define MAX_COMPLEX_ATTACHED 6
185  /* You can't traverse the tree upwards. Only a flag for Surface::Release because it's needed there,
186  * but no pointer to prevent temptations to traverse it in the wrong direction.
187  */
190 
191  /* Surface description, for GetAttachedSurface */
193 
194  /* Clipper objects */
197 
198  /* For the ddraw surface list */
200 
203 };
204 
206 {
207  unsigned int version;
209 
212 };
213 
214 HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_desc,
215  struct ddraw_surface **surface, IUnknown *outer_unknown, unsigned int version) DECLSPEC_HIDDEN;
217 void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw,
218  struct wined3d_texture *wined3d_texture, unsigned int sub_resource_idx,
221  const RECT *rect, BOOL read) DECLSPEC_HIDDEN;
222 
223 static inline struct ddraw_surface *impl_from_IDirect3DTexture(IDirect3DTexture *iface)
224 {
226 }
227 
228 static inline struct ddraw_surface *impl_from_IDirect3DTexture2(IDirect3DTexture2 *iface)
229 {
231 }
232 
233 static inline struct ddraw_surface *impl_from_IDirectDrawSurface(IDirectDrawSurface *iface)
234 {
236 }
237 
238 static inline struct ddraw_surface *impl_from_IDirectDrawSurface2(IDirectDrawSurface2 *iface)
239 {
241 }
242 
243 static inline struct ddraw_surface *impl_from_IDirectDrawSurface3(IDirectDrawSurface3 *iface)
244 {
246 }
247 
248 static inline struct ddraw_surface *impl_from_IDirectDrawSurface4(IDirectDrawSurface4 *iface)
249 {
251 }
252 
254 {
256 }
257 
258 struct ddraw_surface *unsafe_impl_from_IDirectDrawSurface(IDirectDrawSurface *iface) DECLSPEC_HIDDEN;
259 struct ddraw_surface *unsafe_impl_from_IDirectDrawSurface4(IDirectDrawSurface4 *iface) DECLSPEC_HIDDEN;
261 
262 struct ddraw_surface *unsafe_impl_from_IDirect3DTexture(IDirect3DTexture *iface) DECLSPEC_HIDDEN;
263 struct ddraw_surface *unsafe_impl_from_IDirect3DTexture2(IDirect3DTexture2 *iface) DECLSPEC_HIDDEN;
264 
265 #define DDRAW_INVALID_HANDLE ~0U
266 
268 {
274 };
275 
277 {
278  void *object;
280 };
281 
283 {
288 };
289 
295 
297 {
298  /* IUnknown */
299  IDirect3DDevice7 IDirect3DDevice7_iface;
300  IDirect3DDevice3 IDirect3DDevice3_iface;
301  IDirect3DDevice2 IDirect3DDevice2_iface;
302  IDirect3DDevice IDirect3DDevice_iface;
307 
310  struct ddraw *ddraw;
312 
316 
320 
321  /* Viewport management */
325 
326  /* Required to keep track which of two available texture blending modes in d3ddevice3 is used */
328 
331 
332  /* Light state */
334 
335  /* Rendering functions to wrap D3D(1-3) to D3D7 */
343 
344  /* Handle management */
347 
349 };
350 
351 HRESULT d3d_device_create(struct ddraw *ddraw, const GUID *guid, struct ddraw_surface *target, IUnknown *rt_iface,
352  UINT version, struct d3d_device **device, IUnknown *outer_unknown) DECLSPEC_HIDDEN;
354 
355 /* The IID */
357 
358 static inline struct d3d_device *impl_from_IDirect3DDevice(IDirect3DDevice *iface)
359 {
360  return CONTAINING_RECORD(iface, struct d3d_device, IDirect3DDevice_iface);
361 }
362 
363 static inline struct d3d_device *impl_from_IDirect3DDevice2(IDirect3DDevice2 *iface)
364 {
365  return CONTAINING_RECORD(iface, struct d3d_device, IDirect3DDevice2_iface);
366 }
367 
368 static inline struct d3d_device *impl_from_IDirect3DDevice3(IDirect3DDevice3 *iface)
369 {
370  return CONTAINING_RECORD(iface, struct d3d_device, IDirect3DDevice3_iface);
371 }
372 
373 static inline struct d3d_device *impl_from_IDirect3DDevice7(IDirect3DDevice7 *iface)
374 {
375  return CONTAINING_RECORD(iface, struct d3d_device, IDirect3DDevice7_iface);
376 }
377 
378 struct d3d_device *unsafe_impl_from_IDirect3DDevice(IDirect3DDevice *iface) DECLSPEC_HIDDEN;
379 struct d3d_device *unsafe_impl_from_IDirect3DDevice2(IDirect3DDevice2 *iface) DECLSPEC_HIDDEN;
380 struct d3d_device *unsafe_impl_from_IDirect3DDevice3(IDirect3DDevice3 *iface) DECLSPEC_HIDDEN;
381 struct d3d_device *unsafe_impl_from_IDirect3DDevice7(IDirect3DDevice7 *iface) DECLSPEC_HIDDEN;
382 
384 {
385  IDirectDrawClipper IDirectDrawClipper_iface;
388  HRGN region;
390 };
391 
393 struct ddraw_clipper *unsafe_impl_from_IDirectDrawClipper(IDirectDrawClipper *iface) DECLSPEC_HIDDEN;
394 
395 /*****************************************************************************
396  * IDirectDrawPalette implementation structure
397  *****************************************************************************/
399 {
400  /* IUnknown fields */
401  IDirectDrawPalette IDirectDrawPalette_iface;
403 
405  struct ddraw *ddraw;
408 };
409 
410 static inline struct ddraw_palette *impl_from_IDirectDrawPalette(IDirectDrawPalette *iface)
411 {
413 }
414 
415 struct ddraw_palette *unsafe_impl_from_IDirectDrawPalette(IDirectDrawPalette *iface) DECLSPEC_HIDDEN;
416 
418  struct ddraw *ddraw, DWORD flags, PALETTEENTRY *entries) DECLSPEC_HIDDEN;
419 
420 /* Helper structures */
422 {
423  const CLSID *clsid;
425  void **ppObj);
426 };
427 
428 /******************************************************************************
429  * IDirect3DLight implementation structure - Wraps to D3D7
430  ******************************************************************************/
431 struct d3d_light
432 {
433  IDirect3DLight IDirect3DLight_iface;
435 
436  /* IDirect3DLight fields */
437  struct ddraw *ddraw;
438 
439  /* If this light is active for one viewport, put the viewport here */
441 
444 
446 
447  struct list entry;
448 };
449 
450 /* Helper functions */
454 struct d3d_light *unsafe_impl_from_IDirect3DLight(IDirect3DLight *iface) DECLSPEC_HIDDEN;
455 
456 /******************************************************************************
457  * IDirect3DMaterial implementation structure - Wraps to D3D7
458  ******************************************************************************/
460 {
461  IDirect3DMaterial3 IDirect3DMaterial3_iface;
462  IDirect3DMaterial2 IDirect3DMaterial2_iface;
463  IDirect3DMaterial IDirect3DMaterial_iface;
465 
466  /* IDirect3DMaterial2 fields */
467  struct ddraw *ddraw;
469 
472 };
473 
474 /* Helper functions */
477 
478 /*****************************************************************************
479  * IDirect3DViewport - Wraps to D3D7
480  *****************************************************************************/
482 {
483  IDirect3DViewport3 IDirect3DViewport3_iface;
485 
486  /* IDirect3DViewport fields */
487  struct ddraw *ddraw;
488 
489  /* If this viewport is active for one device, put the device here */
491 
494 
495  int use_vp2;
496 
497  union
498  {
501  } viewports;
502 
503  struct list entry;
504  struct list light_list;
506 };
507 
508 struct d3d_viewport *unsafe_impl_from_IDirect3DViewport3(IDirect3DViewport3 *iface) DECLSPEC_HIDDEN;
509 struct d3d_viewport *unsafe_impl_from_IDirect3DViewport2(IDirect3DViewport2 *iface) DECLSPEC_HIDDEN;
510 struct d3d_viewport *unsafe_impl_from_IDirect3DViewport(IDirect3DViewport *iface) DECLSPEC_HIDDEN;
511 
512 /* Helper functions */
513 void viewport_activate(struct d3d_viewport *viewport, BOOL ignore_lights) DECLSPEC_HIDDEN;
514 void d3d_viewport_init(struct d3d_viewport *viewport, struct ddraw *ddraw) DECLSPEC_HIDDEN;
515 
516 /*****************************************************************************
517  * IDirect3DExecuteBuffer - Wraps to D3D7
518  *****************************************************************************/
520 {
521  IDirect3DExecuteBuffer IDirect3DExecuteBuffer_iface;
523  /* IDirect3DExecuteBuffer fields */
524  struct ddraw *ddraw;
526 
529 
530  /* This buffer will store the transformed vertices */
531  unsigned int index_size, index_pos;
534 
535  /* This flags is set to TRUE if we allocated ourselves the
536  * data buffer
537  */
539 };
540 
541 HRESULT d3d_execute_buffer_init(struct d3d_execute_buffer *execute_buffer,
543 struct d3d_execute_buffer *unsafe_impl_from_IDirect3DExecuteBuffer(IDirect3DExecuteBuffer *iface) DECLSPEC_HIDDEN;
544 
545 /* The execute function */
547  struct d3d_device *device, struct d3d_viewport *viewport) DECLSPEC_HIDDEN;
548 
549 /*****************************************************************************
550  * IDirect3DVertexBuffer
551  *****************************************************************************/
553 {
554  IDirect3DVertexBuffer7 IDirect3DVertexBuffer7_iface;
556  unsigned int version;
557 
558  /*** WineD3D and ddraw links ***/
561  struct ddraw *ddraw;
562 
563  /*** Storage for D3D7 specific things ***/
568 };
569 
572 struct d3d_vertex_buffer *unsafe_impl_from_IDirect3DVertexBuffer(IDirect3DVertexBuffer *iface) DECLSPEC_HIDDEN;
573 struct d3d_vertex_buffer *unsafe_impl_from_IDirect3DVertexBuffer7(IDirect3DVertexBuffer7 *iface) DECLSPEC_HIDDEN;
574 
575 /*****************************************************************************
576  * Helper functions from utils.c
577  *****************************************************************************/
578 
579 #define GET_TEXCOUNT_FROM_FVF(d3dvtVertexType) \
580  (((d3dvtVertexType) & D3DFVF_TEXCOUNT_MASK) >> D3DFVF_TEXCOUNT_SHIFT)
581 
582 #define GET_TEXCOORD_SIZE_FROM_FVF(d3dvtVertexType, tex_num) \
583  (((((d3dvtVertexType) >> (16 + (2 * (tex_num)))) + 1) & 0x03) + 1)
584 
588  DWORD colour, struct wined3d_color *wined3d_colour) DECLSPEC_HIDDEN;
590 unsigned int wined3dmapflags_from_ddrawmapflags(unsigned int flags) DECLSPEC_HIDDEN;
593 void DDRAW_dump_DDCAPS(const DDCAPS *lpcaps) DECLSPEC_HIDDEN;
599 
600 void multiply_matrix(D3DMATRIX *dst, const D3DMATRIX *src1, const D3DMATRIX *src2) DECLSPEC_HIDDEN;
601 
603 {
604  return (format->dwFlags & DDPF_FOURCC) && (format->dwFourCC == WINED3DFMT_DXT1
605  || format->dwFourCC == WINED3DFMT_DXT2 || format->dwFourCC == WINED3DFMT_DXT3
606  || format->dwFourCC == WINED3DFMT_DXT4 || format->dwFourCC == WINED3DFMT_DXT5);
607 }
608 
610 {
613  return !!(fmt->dwFlags & flags);
614 }
615 
616 /* Used for generic dumping */
617 struct flag_info
618 {
620  const char *name;
621 };
622 
623 #define FE(x) { x, #x }
624 
626 {
628  const char *name;
629  void (*func)(const void *);
631 };
632 
633 /* Structure copy */
634 #define ME(x,f,e) { x, #x, (void (*)(const void *))(f), offsetof(STRUCT, e) }
635 
636 #define DD_STRUCT_COPY_BYSIZE_(to,from,to_size,from_size) \
637  do { \
638  DWORD __size = (to)->dwSize; \
639  DWORD __resetsize = min(to_size, sizeof(*to)); \
640  DWORD __copysize = min(__resetsize, from_size); \
641  assert(to != from); \
642  memcpy(to, from, __copysize); \
643  memset((char*)(to) + __copysize, 0, __resetsize - __copysize); \
644  (to)->dwSize = __size; /* restore size */ \
645  } while (0)
646 
647 #define DD_STRUCT_COPY_BYSIZE(to,from) DD_STRUCT_COPY_BYSIZE_(to,from,(to)->dwSize,(from)->dwSize)
648 
650 
651 #endif
void d3d_viewport_init(struct d3d_viewport *viewport, struct ddraw *ddraw) DECLSPEC_HIDDEN
Definition: viewport.c:1146
enum wined3d_format_id wined3dformat_from_ddrawformat(const DDPIXELFORMAT *format) DECLSPEC_HIDDEN
Definition: utils.c:333
struct d3d_viewport * unsafe_impl_from_IDirect3DViewport(IDirect3DViewport *iface) DECLSPEC_HIDDEN
Definition: viewport.c:1138
GLenum func
Definition: glext.h:6028
static struct d3d_device * impl_from_IDirect3DDevice(IDirect3DDevice *iface)
static void ddraw_set_swapchain_window(struct ddraw *ddraw, HWND window)
#define HRESULT
Definition: msvc.h:9
struct FvfToDecl * decls
struct d3d_material * background
void DDSD_to_DDSD2(const DDSURFACEDESC *in, DDSURFACEDESC2 *out) DECLSPEC_HIDDEN
Definition: utils.c:1218
#define REFIID
Definition: guiddef.h:118
HWND swapchain_window
struct ddraw_surface * unsafe_impl_from_IDirectDrawSurface(IDirectDrawSurface *iface) DECLSPEC_HIDDEN
Definition: surface.c:5705
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
struct wined3d_buffer * dst_vertex_buffer
static struct ddraw_surface * impl_from_IDirectDrawSurface2(IDirectDrawSurface2 *iface)
void ddraw_handle_table_destroy(struct ddraw_handle_table *t) DECLSPEC_HIDDEN
Definition: main.c:107
static BOOL format_is_compressed(const DDPIXELFORMAT *format)
IUnknown * ifaceToRelease
unsigned int vertex_size
struct d3d_viewport * unsafe_impl_from_IDirect3DViewport3(IDirect3DViewport3 *iface) DECLSPEC_HIDDEN
Definition: viewport.c:1123
IDirect3DVertexBuffer7 IDirect3DVertexBuffer7_iface
struct d3d_viewport * unsafe_impl_from_IDirect3DViewport2(IDirect3DViewport2 *iface) DECLSPEC_HIDDEN
Definition: viewport.c:1130
HRESULT hr
Definition: shlfolder.c:183
void DDRAW_dump_DDSCAPS2(const DDSCAPS2 *in) DECLSPEC_HIDDEN
Definition: utils.c:713
struct d3d_vertex_buffer * unsafe_impl_from_IDirect3DVertexBuffer(IDirect3DVertexBuffer *iface) DECLSPEC_HIDDEN
D3DVIEWPORT2 vp2
static struct d3d_device * impl_from_IDirect3DDevice3(IDirect3DDevice3 *iface)
struct ddraw_clipper * unsafe_impl_from_IDirectDrawClipper(IDirectDrawClipper *iface) DECLSPEC_HIDDEN
Definition: clipper.c:329
void ddraw_d3dcaps1_from_7(D3DDEVICEDESC *caps1, D3DDEVICEDESC7 *caps7) DECLSPEC_HIDDEN
Definition: ddraw.c:1192
struct list ddraw_list_entry
struct wined3d_buffer * wined3d_buffer
IUnknown * rt_iface
REFIID riid
Definition: precomp.h:44
IDirect3DTexture2 IDirect3DTexture2_iface
struct ddraw_handle_entry * free_entries
struct list light_list
struct ddraw_surface * unsafe_impl_from_IDirect3DTexture2(IDirect3DTexture2 *iface) DECLSPEC_HIDDEN
Definition: surface.c:5721
struct d3d_device * unsafe_impl_from_IDirect3DDevice7(IDirect3DDevice7 *iface) DECLSPEC_HIDDEN
Definition: device.c:6850
struct wined3d * wined3d
Definition: ddraw_private.h:92
device_type
static HDC
Definition: imagelist.c:92
IDirect3D7 IDirect3D7_iface
Definition: ddraw_private.h:83
BYTE * sysmem_vertex_buffer
HRESULT ddraw_init(struct ddraw *ddraw, DWORD flags, enum wined3d_device_type device_type) DECLSPEC_HIDDEN
Definition: ddraw.c:5032
HWND d3d_window
DWORD nb_vertices
int d3dversion
RECT primary_lock
Definition: ddraw_private.h:98
GLdouble GLdouble t
Definition: gl.h:2047
LONG ref4
Definition: ddraw_private.h:90
void material_activate(struct d3d_material *material) DECLSPEC_HIDDEN
Definition: material.c:447
struct wined3d_buffer * src_vertex_buffer
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
D3DVIEWPORT vp1
DWORD vertex_type
void light_deactivate(struct d3d_light *light) DECLSPEC_HIDDEN
Definition: light.c:75
struct ddraw_surface * unsafe_impl_from_IDirectDrawSurface7(IDirectDrawSurface7 *iface) DECLSPEC_HIDDEN
Definition: surface.c:5641
GLuint buffer
Definition: glext.h:5915
DWORD vertex_size
static struct ddraw_surface * impl_from_IDirectDrawSurface7(IDirectDrawSurface7 *iface)
IDirect3DMaterial2 IDirect3DMaterial2_iface
static const MAT2 mat
Definition: font.c:66
void viewport_activate(struct d3d_viewport *viewport, BOOL ignore_lights) DECLSPEC_HIDDEN
Definition: viewport.c:55
struct ddraw * ddraw
struct ddraw_surface * unsafe_impl_from_IDirectDrawSurface4(IDirectDrawSurface4 *iface) DECLSPEC_HIDDEN
Definition: surface.c:5657
struct d3d_device * unsafe_impl_from_IDirect3DDevice(IDirect3DDevice *iface) DECLSPEC_HIDDEN
Definition: device.c:6871
IDirectDraw2 IDirectDraw2_iface
Definition: ddraw_private.h:81
IUnknown IUnknown_inner
static struct ddraw_surface * impl_from_IDirectDrawSurface4(IDirectDrawSurface4 *iface)
IDirectDrawGammaControl IDirectDrawGammaControl_iface
static struct ddraw_surface * impl_from_IDirectDrawSurface3(IDirectDrawSurface3 *iface)
unsigned int wined3dmapflags_from_ddrawmapflags(unsigned int flags) DECLSPEC_HIDDEN
Definition: utils.c:564
struct wined3d_buffer * index_buffer
struct wined3d_texture * wined3d_texture
D3DLIGHT2 light
struct wined3d_device * wined3d_device
struct ddraw_palette * unsafe_impl_from_IDirectDrawPalette(IDirectDrawPalette *iface) DECLSPEC_HIDDEN
Definition: palette.c:234
struct ddraw_clipper * clipper
const CLSID * clsid
Definition: main.c:70
D3DMATRIXHANDLE view
const GUID IID_D3DDEVICE_WineD3D
Definition: device.c:39
wined3d_depth_buffer_type
Definition: wined3d.h:462
struct wined3d_vertex_declaration * decl
Definition: ddraw_private.h:51
& rect
Definition: startmenu.cpp:1413
struct ddraw_surface * complex_array[MAX_COMPLEX_ATTACHED]
BOOL wined3d_colour_from_ddraw_colour(const DDPIXELFORMAT *pf, const struct ddraw_palette *palette, DWORD colour, struct wined3d_color *wined3d_colour) DECLSPEC_HIDDEN
Definition: utils.c:596
struct wined3d_texture * wined3d_frontbuffer
Definition: ddraw_private.h:99
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
IDirect3D2 IDirect3D2_iface
Definition: ddraw_private.h:85
static struct ddraw_surface * impl_from_IDirectDrawSurface(IDirectDrawSurface *iface)
struct wined3d_palette * wined3d_palette
UINT index_buffer_size
DDSURFACEDESC2 surface_desc
struct ddraw * ddraw
HRESULT(* pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj)
Definition: main.c:71
struct ddraw_surface * next_attached
struct d3d_device * active_device
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum light
Definition: glfuncs.h:170
UINT declArraySize
IUnknown * texture_outer
const GUID * guid
const char * name
struct ddraw * ddraw
HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_desc, struct ddraw_surface **surface, IUnknown *outer_unknown, unsigned int version) DECLSPEC_HIDDEN
Definition: surface.c:5791
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
union d3d_viewport::@245 viewports
Definition: devices.h:37
IDirect3DExecuteBuffer IDirect3DExecuteBuffer_iface
unsigned int version
HRESULT d3d_execute_buffer_init(struct d3d_execute_buffer *execute_buffer, struct d3d_device *device, D3DEXECUTEBUFFERDESC *desc) DECLSPEC_HIDDEN
struct wined3d_vertex_declaration * wined3d_declaration
struct d3d_device * unsafe_impl_from_IDirect3DDevice2(IDirect3DDevice2 *iface) DECLSPEC_HIDDEN
Definition: device.c:6864
struct ddraw_surface * root
DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) DECLSPEC_HIDDEN
Definition: utils.c:923
HRESULT ddraw_palette_init(struct ddraw_palette *palette, struct ddraw *ddraw, DWORD flags, PALETTEENTRY *entries) DECLSPEC_HIDDEN
Definition: palette.c:258
const struct builtin_class_descr * desc
Definition: regcontrol.c:48
DWORD material
enum ddraw_handle_type type
smooth NULL
Definition: ftsmooth.c:416
IDirectDrawSurface IDirectDrawSurface_iface
static const WCHAR version[]
Definition: asmname.c:64
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:652
ddraw_handle_type
void * ddraw_get_object(struct ddraw_handle_table *t, DWORD handle, enum ddraw_handle_type type) DECLSPEC_HIDDEN
Definition: main.c:182
void d3d_light_init(struct d3d_light *light, struct ddraw *ddraw) DECLSPEC_HIDDEN
Definition: light.c:247
#define DDPF_FOURCC
Definition: ddraw.h:503
void DDRAW_Convert_DDSCAPS_1_To_2(const DDSCAPS *pIn, DDSCAPS2 *pOut) DECLSPEC_HIDDEN
Definition: utils.c:951
enum wined3d_depth_buffer_type d3d_device_update_depth_stencil(struct d3d_device *device) DECLSPEC_HIDDEN
Definition: device.c:6878
IDirectDrawSurface4 IDirectDrawSurface4_iface
IDirect3DDevice3 IDirect3DDevice3_iface
HRESULT d3d_device_create(struct ddraw *ddraw, const GUID *guid, struct ddraw_surface *target, IUnknown *rt_iface, UINT version, struct d3d_device **device, IUnknown *outer_unknown) DECLSPEC_HIDDEN
Definition: device.c:6980
struct d3d_device * d3ddev
void DDRAW_Convert_DDDEVICEIDENTIFIER_2_To_1(const DDDEVICEIDENTIFIER2 *pIn, DDDEVICEIDENTIFIER *pOut) DECLSPEC_HIDDEN
Definition: utils.c:961
BOOL ddraw_handle_table_init(struct ddraw_handle_table *t, UINT initial_size) DECLSPEC_HIDDEN
Definition: main.c:93
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
struct list surface_list_entry
DWORD IDirectDrawSurface7
Definition: vmrender.idl:20
UINT index_buffer_pos
HRESULT d3d_vertex_buffer_create(struct d3d_vertex_buffer **buffer, struct ddraw *ddraw, D3DVERTEXBUFFERDESC *desc) DECLSPEC_HIDDEN
Definition: vertexbuffer.c:432
struct list entry
static struct ddraw_surface * impl_from_IDirect3DTexture2(IDirect3DTexture2 *iface)
DWORD D3DMATRIXHANDLE
Definition: d3dtypes.h:156
DWORD dwLightIndex
struct wined3d_vertex_declaration * ddraw_find_decl(struct ddraw *ddraw, DWORD fvf) DECLSPEC_HIDDEN
Definition: ddraw.c:4781
struct ddraw_surface * primary
Definition: ddraw_private.h:97
IUnknown * attached_iface
IDirectDraw IDirectDraw_iface
Definition: ddraw_private.h:82
DDSURFACEDESC2 surface_desc
#define MAX_COMPLEX_ATTACHED
struct d3d_light * unsafe_impl_from_IDirect3DLight(IDirect3DLight *iface) DECLSPEC_HIDDEN
Definition: light.c:254
#define DDPF_PALETTEINDEXED4
Definition: ddraw.h:504
DWORD force_refresh_rate
Definition: main.c:41
DWORD buffer_size
struct ddraw * ddraw
DWORD ddraw_allocate_handle(struct ddraw_handle_table *t, void *object, enum ddraw_handle_type type) DECLSPEC_HIDDEN
Definition: main.c:113
struct ddraw * ddraw
#define DDPF_PALETTEINDEXED2
Definition: ddraw.h:513
struct d3d_device * d3ddevice
IDirect3DTexture IDirect3DTexture_iface
D3DEXECUTEDATA data
LONG HRESULT
Definition: typedefs.h:77
struct ddraw_handle_entry * entries
D3DMATRIX legacy_projection
HRESULT hr_ddraw_from_wined3d(HRESULT hr) DECLSPEC_HIDDEN
Definition: utils.c:1206
const struct wined3d_parent_ops * parent_ops
static FILE * out
Definition: regtests2xml.c:44
struct d3d_device * active_device
unsigned long DWORD
Definition: ntddk_ex.h:95
struct d3d_device * unsafe_impl_from_IDirect3DDevice3(IDirect3DDevice3 *iface) DECLSPEC_HIDDEN
Definition: device.c:6857
struct list entry
struct wined3d_device * wined3d_device
struct wined3d_buffer * index_buffer
void * object
struct wined3d_device_parent device_parent
Definition: ddraw_private.h:87
GLbitfield flags
Definition: glext.h:7161
struct d3d_vertex_buffer * unsafe_impl_from_IDirect3DVertexBuffer7(IDirect3DVertexBuffer7 *iface) DECLSPEC_HIDDEN
Definition: vertexbuffer.c:486
D3DVIEWPORT7 active_viewport
unsigned int sub_resource_idx
#define DDPF_PALETTEINDEXED8
Definition: ddraw.h:506
struct ddraw_surface * first_attached
D3DLIGHT7 light7
struct list surface_list
unsigned int version
struct d3d_viewport * current_viewport
IDirectDrawClipper IDirectDrawClipper_iface
void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw, struct wined3d_texture *wined3d_texture, unsigned int sub_resource_idx, const struct wined3d_parent_ops **parent_ops) DECLSPEC_HIDDEN
Definition: surface.c:6432
const struct wined3d_parent_ops ddraw_null_wined3d_parent_ops DECLSPEC_HIDDEN
Definition: ddraw_private.h:43
void light_activate(struct d3d_light *light) DECLSPEC_HIDDEN
Definition: light.c:51
IDirect3DLight IDirect3DLight_iface
IDirectDraw4 IDirectDraw4_iface
Definition: ddraw_private.h:80
unsigned char BYTE
Definition: mem.h:68
Definition: _list.h:228
IDirectDrawPalette IDirectDrawPalette_iface
IDirectDrawSurface2 IDirectDrawSurface2_iface
static IHTMLWindow2 * window
Definition: events.c:77
ptrdiff_t offset
LONG numIfaces
Definition: ddraw_private.h:90
void DDRAW_dump_surface_desc(const DDSURFACEDESC2 *lpddsd) DECLSPEC_HIDDEN
Definition: utils.c:864
static HPALETTE palette
Definition: clipboard.c:1345
IDirectDrawSurface3 IDirectDrawSurface3_iface
void ddraw_update_lost_surfaces(struct ddraw *ddraw) DECLSPEC_HIDDEN
Definition: ddraw.c:4898
struct wined3d_private_store private_store
IUnknown * outer_unknown
UINT vertex_buffer_pos
static BOOL format_is_paletteindexed(const DDPIXELFORMAT *fmt)
IDirect3DViewport3 IDirect3DViewport3_iface
wined3d_format_id
Definition: wined3d.h:105
struct wined3d_vec4 user_clip_planes[D3DMAXUSERCLIPPLANES]
struct d3d_device * device1
#define D3DMAXUSERCLIPPLANES
Definition: d3d8types.h:75
DWORD flags
Definition: ddraw_private.h:94
IDirectDrawSurface7 IDirectDrawSurface7_iface
IDirect3DMaterial IDirect3DMaterial_iface
void DDSD2_to_DDSD(const DDSURFACEDESC2 *in, DDSURFACEDESC *out) DECLSPEC_HIDDEN
Definition: utils.c:1262
static struct d3d_device * impl_from_IDirect3DDevice2(IDirect3DDevice2 *iface)
IDirect3DMaterial3 IDirect3DMaterial3_iface
struct ddraw * ddraw
GLuint in
Definition: glext.h:9616
struct wined3d_rendertarget_view * wined3d_rtv
static struct d3d_device * impl_from_IDirect3DDevice7(IDirect3DDevice7 *iface)
wined3d_device_type
Definition: wined3d.h:85
LONG ref2
Definition: ddraw_private.h:90
IDirect3D IDirect3D_iface
Definition: ddraw_private.h:86
static struct ddraw_surface * impl_from_IDirect3DTexture(IDirect3DTexture *iface)
DWORD IDirectDraw7
Definition: vmrender.idl:21
UINT numConvertedDecls
GLenum GLenum dst
Definition: glext.h:6340
unsigned int src_vertex_pos
HWND dest_window
struct list viewport_list
D3DMATERIAL mat
unsigned int UINT
Definition: ndis.h:50
DWORD render_flags
__kernel_ptrdiff_t ptrdiff_t
Definition: linux.h:247
D3DPRIMITIVETYPE
Definition: d3dtypes.h:822
void DDRAW_dump_cooperativelevel(DWORD cooplevel) DECLSPEC_HIDDEN
Definition: utils.c:968
#define DDPF_PALETTEINDEXED1
Definition: ddraw.h:512
void multiply_matrix(D3DMATRIX *dst, const D3DMATRIX *src1, const D3DMATRIX *src2) DECLSPEC_HIDDEN
Definition: utils.c:1173
IDirect3DDevice7 IDirect3DDevice7_iface
const char * name
LONG ref3
Definition: ddraw_private.h:90
HRESULT ddraw_get_d3dcaps(const struct ddraw *ddraw, D3DDEVICEDESC7 *caps) DECLSPEC_HIDDEN
Definition: ddraw.c:1248
void DDRAW_dump_DDCAPS(const DDCAPS *lpcaps) DECLSPEC_HIDDEN
Definition: utils.c:990
unsigned int index_size
LONG ref7
Definition: ddraw_private.h:90
HRESULT d3d_execute_buffer_execute(struct d3d_execute_buffer *execute_buffer, struct d3d_device *device, struct d3d_viewport *viewport) DECLSPEC_HIDDEN
Definition: executebuffer.c:51
HRESULT ddraw_surface_update_frontbuffer(struct ddraw_surface *surface, const RECT *rect, BOOL read) DECLSPEC_HIDDEN
Definition: surface.c:43
void * ddraw_free_handle(struct ddraw_handle_table *t, DWORD handle, enum ddraw_handle_type type) DECLSPEC_HIDDEN
Definition: main.c:156
struct ddraw_surface * unsafe_impl_from_IDirect3DTexture(IDirect3DTexture *iface) DECLSPEC_HIDDEN
Definition: surface.c:5728
IDirect3D3 IDirect3D3_iface
Definition: ddraw_private.h:84
static struct ddraw_palette * impl_from_IDirectDrawPalette(IDirectDrawPalette *iface)
struct wined3d_device * wined3d_device
Definition: ddraw_private.h:93
struct wined3d_buffer * vertex_buffer
GLenum target
Definition: glext.h:7315
struct ddraw * ddraw
struct ddraw * ddraw
void dump_D3DMATRIX(const D3DMATRIX *mat) DECLSPEC_HIDDEN
Definition: utils.c:914
const struct wined3d_parent_ops ddraw_null_wined3d_parent_ops
Definition: ddraw.c:83
LONG device_state
Definition: ddraw_private.h:95
IDirectDraw7 IDirectDraw7_iface
Definition: ddraw_private.h:79
struct d3d_execute_buffer * unsafe_impl_from_IDirect3DExecuteBuffer(IDirect3DExecuteBuffer *iface) DECLSPEC_HIDDEN
HWND devicewindow
D3DMATRIXHANDLE proj
struct wined3d_swapchain * wined3d_swapchain
D3DPRIMITIVETYPE primitive_type
DWORD cooperative_level
ddraw_device_state
Definition: ddraw_private.h:69
D3DMATRIXHANDLE world
D3DMATRIX legacy_clipspace
IDirect3DDevice2 IDirect3DDevice2_iface
D3DEXECUTEBUFFERDESC desc
HRESULT ddraw_clipper_init(struct ddraw_clipper *clipper) DECLSPEC_HIDDEN
Definition: clipper.c:321
unsigned int index_pos
BOOL legacyTextureBlending
struct ddraw_palette * palette
Definition: dsound.c:943
struct wined3d_rendertarget_view * ddraw_surface_get_rendertarget_view(struct ddraw_surface *surface) DECLSPEC_HIDDEN
Definition: surface.c:6520
DWORD fvf
Definition: d3d8_private.h:87
HWND focuswindow
void ddrawformat_from_wined3dformat(DDPIXELFORMAT *ddraw_format, enum wined3d_format_id wined3d_format) DECLSPEC_HIDDEN
Definition: utils.c:33
IUnknown * ifaceToRelease
struct d3d_material * d3d_material_create(struct ddraw *ddraw) DECLSPEC_HIDDEN
Definition: material.c:501
LONG ref1
Definition: ddraw_private.h:90
IDirect3DDevice IDirect3DDevice_iface
_CRTIMP int __cdecl read(_In_ int _FileHandle, _Out_writes_bytes_(_MaxCharCount) void *_DstBuf, _In_ unsigned int _MaxCharCount)
#define DDPF_PALETTEINDEXEDTO8
Definition: ddraw.h:505
struct d3d_viewport * active_viewport
UINT vertex_buffer_size