Commit Graph

273 Commits

Author SHA1 Message Date
Henri Verbeet 4b84c5e5b7 ddraw: Add a separate function for clipper initialization. 2010-08-19 11:18:20 +02:00
Henri Verbeet 759fd517aa ddraw: Add a separate function for parent initialization. 2010-08-19 11:18:16 +02:00
Henri Verbeet 921bd1bf9a ddraw: Add a separate function for viewport initialization. 2010-08-19 11:18:12 +02:00
Henri Verbeet bf26c2c869 ddraw: Add a separate function for material initialization. 2010-08-19 11:17:57 +02:00
Henri Verbeet c892ed497c ddraw: Add a separate function for light initialization. 2010-08-19 11:17:48 +02:00
Henri Verbeet c5a14085d4 ddraw: Remove unused / redundant includes. 2010-08-19 11:17:41 +02:00
Henri Verbeet fee9c1f2b5 ddraw: Remove a useless viewport callback. 2010-08-18 09:41:01 +02:00
Henri Verbeet 14399f6130 ddraw: Remove a useless material callback. 2010-08-18 09:40:55 +02:00
Henri Verbeet 06a44abc19 ddraw: Remove useless light callbacks. 2010-08-18 09:40:32 +02:00
Henri Verbeet 51a315386e ddraw: Use a less offensive handle table implementation for surfaces. 2010-07-30 11:36:03 +02:00
Henri Verbeet 91193b6eec ddraw: Use a less offensive handle table implementation for stateblocks. 2010-07-30 11:36:02 +02:00
Henri Verbeet 941aeade01 ddraw: Use a less offensive handle table implementation for matrices. 2010-07-29 17:33:36 +02:00
Henri Verbeet 0cb4de4542 ddraw: Use a less offensive handle table implementation for materials. 2010-07-29 17:33:35 +02:00
Henri Verbeet ce8f6ecf6e ddraw: Merge the surface thunks into surface.c. 2010-07-20 13:13:04 +02:00
Henri Verbeet 6fb9ee0ee7 ddraw: Merge the ddraw thunks into ddraw.c.
Note how both ddraw 1 and ddraw 7 used the same IDirectDrawImpl_XXX naming
convention.
2010-07-20 13:13:04 +02:00
Henri Verbeet f461b39b76 ddraw: Get rid of the useless "ddraw_owner" fields. 2010-07-19 14:49:07 +02:00
Henri Verbeet e4a4065bbd ddraw: Register / unregister the ddraw window class from DllMain().
This avoids failing in DDRAW_Create() if a previous IDirectDrawImpl object
with the same pointer value was imporperly cleaned up. The improper cleanup is
of course the larger problem, but I don't believe that can be fixed without
making more invasive changes to ddraw.
2010-06-18 15:22:22 +02:00
Henri Verbeet 93b0600829 wined3d: Don't free D3D buffers until the wined3d buffer is destroyed. 2009-09-18 08:55:25 -05:00
Henri Verbeet 6c8636c337 ddraw: Mark internal symbols hidden. 2009-09-17 10:10:04 -05:00
Henri Verbeet a5214c306f wined3d: Don't free D3D surfaces until the wined3d surface is destroyed.
This prevents for example a d3d9 depth stencil from being destroyed when it
has no external references but is still in use by the device/stateblock. A
nice side effect is that it simplifies handling of "implicit" surfaces like
the frontbuffer and backbuffers, as well as the forwarding of reference counts
for surfaces that are part of a texture.
2009-09-16 13:04:32 -05:00
Stefan Dösinger fd9b574e4e ddraw: Store the fvf in the ddraw buffer.
WineD3D buffer FVFs will go away soon.
2009-04-09 16:27:35 +02:00
Stefan Dösinger 513a493f00 wined3d: Merge IWineD3DIndexBuffer and IWineD3DBuffer. 2009-04-08 11:37:29 +02:00
Henri Verbeet aa3027a604 wined3d: Merge IWineD3DVertexBuffer with IWineD3DBuffer.
That still leaves IWineD3DIndexBuffer, but that code is also mostly similar,
except for the conversion code (which will be unused there).
2009-03-06 15:35:58 +01:00
David Adam 22bfd1396c ddraw: Implement ComputeSphereVisibility. 2009-02-26 15:13:25 +01:00
Henri Verbeet 9b5f3ed8f3 ddraw: Rename the main vtables to lpVtbl. 2009-01-22 15:28:22 +01:00
Henri Verbeet b09b0fbf95 ddraw: Get rid of ddcomimpl.h. 2009-01-22 12:05:14 +01:00
Henri Verbeet 802f9c7e29 ddraw: Get rid of ICOM_OBJECT. 2009-01-22 12:05:07 +01:00
Henri Verbeet 4e38c2e943 ddraw: Get rid of ICOM_VFIELD_MULTI. 2009-01-21 11:16:41 +01:00
Henri Verbeet 2afa23867b ddraw: Add extern to some global variable declarations. 2009-01-16 13:30:08 +01:00
Henri Verbeet a966293f59 wined3d: Add an IWineD3DDeviceParent interface.
Other than being a bit nicer than passing function pointers all over the
place, this helps dxgi/d3d10. While the swapchain itself is created in dxgi,
its surfaces are constructed in d3d10core, which makes it impractical for dxgi
to pass the appropriate function pointers.
2009-01-16 13:29:32 +01:00
Alexandre Julliard 23abbcb9b3 ddraw: Make some functions static. 2008-12-02 15:27:08 +01:00
Henri Verbeet a6917b143d wined3d: Use IDL to generate wined3d.h. 2008-11-25 13:37:22 +01:00
Henri Verbeet 99a50b5396 ddraw: Make sure pWineDirect3DCreate and pWineDirect3DCreateClipper match the header. 2008-10-24 14:24:59 +02:00
Alexandre Julliard e1ced22db1 ddraw: Convert source files to utf-8. 2008-10-18 19:19:45 +02:00
Stefan Dösinger 34b37fe241 d3d: Remove IWineD3DDevice::SetHwnd. 2008-08-19 12:22:05 +02:00
Stefan Dösinger e178ddd9e1 wined3d: Use a swapchain for GDI surfaces.
This is a long-needed cleanup aimed at removing the ddraw_primary,
ddraw_window, ddraw_width and ddraw_height members from
IWineD3DDeviceImpl, which just do not belong there.  Destination
window and screen handling is supposed to be done by swapchains.
2008-08-19 12:21:32 +02:00
Stefan Dösinger a47e7badb9 ddraw: Set ddraw caps in wined3d.
Currently the ddraw capabilities were almost static, except of D3D
support. When overlay support is added, the caps depend on certain
settings in WineD3D or capabilities available from OpenGL and Xv. So
set those caps in wined3d as well.
2008-08-04 13:10:11 +02:00
Alexander Dorofeyev cb5e06c944 ddraw: Implement FPU mode fixup in d3d7 device.
As documented in DirectX7 SDK, d3d7 devices set FPU mode (control word) on every 
call and restore it back to original state before returning, if created in 
DDSCL_FPUPRESERVE cooperative mode. This allows games to work with FPU in a 
possibly incompatible mode and avoid resetting it all the time.
2008-06-23 19:59:33 +02:00
Michael Karcher 606186d4c5 ddraw: Ensure to load wined3d before attempting to create a clipper. 2008-06-23 14:11:58 +02:00
Alexander Dorofeyev 8f72961e50 ddraw: Move handling of D3DRENDERSTATE_TEXTUREMAPBLEND from d3ddevice2 to d3ddevice3. 2008-05-05 19:55:13 +02:00
Alexander Dorofeyev 6a48e405db ddraw: Add possibility to ignore lights in viewport_activate.
Mostly NOP regarding existing functionality, but makes it possible to skip light 
activation when it's not needed (like when clearing).
2008-04-11 13:04:19 +02:00
Denver Gingerich 248ae8f112 ddraw: Implement ForceRefreshRate registry entry for overriding DirectX refresh rate. 2008-03-11 15:30:37 +01:00
Stefan Dösinger c5055fb3eb ddraw: Cope with Init3D failures. 2007-10-10 11:58:37 +02:00
Stefan Dösinger f7597dee15 ddraw: Update the wined3d matrix if a current matrix handle is modified. 2007-07-06 19:29:39 +02:00
Stefan Dösinger bfe631dfb9 ddraw: Hold the lock in creation functions. 2007-05-21 19:11:34 +02:00
Stefan Dösinger 5307dd2029 ddraw: Make the ddraw list lock a global dll lock. 2007-05-21 19:11:22 +02:00
Stefan Dösinger bed50115ee ddraw: More tests and fixes on surface attachments. 2007-05-09 12:07:46 +02:00
Stefan Dösinger d93e161b1f d3d: Move clippers from DDraw to wined3d. 2007-05-08 18:27:44 +02:00
Stefan Dösinger ffae39c3f3 ddraw: Update the wined3d depth stencil on device creation, render. 2007-05-01 11:42:25 +02:00
Stefan Dösinger 7ca369d9b6 ddraw: Store a WineD3DBaseTexture instead of a WineD3DTexture. 2007-05-01 11:42:24 +02:00
Stefan Dösinger 9e3e799ca3 ddraw: Complex surfaces form a tree. 2007-04-30 12:22:06 +02:00
Stefan Dösinger 0386eed91f ddraw: Get rid of FVFs.
Remove all IWineD3DDevice::SetFVF calls and instead create converted
vertex declarations and use them. The idea is to remove the FVF paths
from wined3d to simplify the code, and optimize the vertex declaration
codepath.
2007-04-26 14:54:17 +02:00
Andrew Talbot e4253fd8b9 ddraw: Constify some variables. 2007-04-23 14:42:06 +02:00
H. Verbeet 6112522122 wined3d: Move SetupFullscreenWindow() and RestoreWindow() from IDirectDrawImpl to IWineD3DDeviceImpl. 2007-01-19 12:28:58 +01:00
Stefan Dösinger 3581d8e8d8 wined3d: Do not keep internal references on vertex buffers. 2007-01-08 20:59:06 +01:00
Andrew Talbot 386fdd81e9 ddraw: Declare some functions static. 2007-01-04 21:14:08 +01:00
Markus Amsler 5e0fc62135 d3d: Callback infrastructure for implicit swap chain destruction in IWineD3DDevice. 2006-12-18 12:07:26 +01:00
Ulrich Czekalla 325f666fc5 ddraw: IDirectDraw3 should use its own ref count variable. 2006-12-16 17:01:52 +01:00
Ulrich Czekalla 398886799e ddraw: Add IDirectDraw3 interface. 2006-12-14 20:33:49 +01:00
Markus Amsler 3fd04308ab d3d: Callback infrastructure for implicit depth stencil surface destruction in IWineD3DDevice. 2006-12-06 12:39:30 +01:00
Stefan Dösinger 1c86290bd5 ddraw: Use real handles for state blocks. 2006-10-16 12:07:30 +02:00
Stefan Dösinger 2e5628df3f ddraw: Make the surface list a standard wine list. 2006-10-16 12:06:43 +02:00
Stefan Dösinger 09e794aff8 ddraw: Make the ddraw list a wine list. 2006-10-09 20:38:15 +02:00
Stefan Dösinger 915174d8d9 ddraw: Palette refcounting fix.
Do not AddRef the DirectDraw interfaces in CreatePalette of older
interface version, and add a test for that.
2006-07-11 17:10:53 +02:00
Stefan Dösinger 0a81295782 ddraw: Split up the ddraw refcount. 2006-07-11 17:10:17 +02:00
Francois Gouget 9bfbfcbeb4 Assorted spelling, case and grammar fixes. 2006-06-26 13:06:11 +02:00
Stefan Dösinger 546a60ff2f ddraw: Enumerate the reference d3ddevice. 2006-06-26 13:04:13 +02:00
Stefan Dösinger d50ff220d0 ddraw: Use the handle infrastructure for Matrix handles. 2006-06-22 12:04:26 +02:00
Stefan Dösinger 1e2413f4f4 ddraw: Implement proper handle management. 2006-06-19 11:14:18 +02:00
Stefan Dösinger c8901d6f62 ddraw: Rewrite most of ddraw using WineD3D. 2006-06-15 16:51:16 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Lionel Ulmer 00577aa605 ddraw: Better simulate what 'GetVerticalBlankStatus' does on real hardware. 2006-01-16 20:38:08 +01:00
Lionel Ulmer 002608224d Add an assert if both arguments to DD_STRUCT_COPY_BYSIZE are equal. 2005-10-10 19:53:37 +00:00
Lionel Ulmer dfd1153f1d - do not pass private data to the application but a copy of it
- add some more traces
2005-10-10 10:44:23 +00:00
Vincent Béron 05b2c1cc81 Remove multiple declarations of the same function, keeping the public
one as reference.
2005-07-24 16:17:28 +00:00
Mike McCormack 2d7ea23868 Interlocked LONG* gcc warning fixes. 2005-07-11 13:21:17 +00:00
Christian Costa 719187f190 Merged remaining header files in DirectDraw objects folders into
ddraw_private.h.
2005-06-02 10:33:06 +00:00
Matthew Mastracci 9cf27b5f1a Added surface locking. 2005-03-07 12:23:34 +00:00
Christian Costa 171c9420c2 Fake line sweeping of the monitor. 2004-12-27 17:12:55 +00:00
Christian Costa 9713f651fe Moved libtxc_dxt definitions into ddraw headers. 2004-08-02 18:24:40 +00:00
Christian Costa eac96b5606 Added native and emulated S3TC support. 2004-07-30 18:54:32 +00:00
Lionel Ulmer d069312de6 Add the possibility to save a snapshot of the backbuffer at
flip-time.
2004-04-12 22:07:33 +00:00
Christian Costa 85cbe8213b DD_STRUCT_COPY_BYSIZE: Do not clear more that struct size. 2004-03-16 01:13:29 +00:00
Lionel Ulmer 8c1c276b5b - add ZBuffer write support
- some TRACEing fixes
2003-09-15 20:00:03 +00:00
Alexandre Julliard e37c6e18d0 Fixed header dependencies to be fully compatible with the Windows
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Lionel Ulmer 4aba282bb8 - proper (tested on Win2K) reference counting for Direct3D object
- fix one case of reference counting on textures
- fix stupid bug in texture upload code
- yet another texture enumeration reordering
2003-06-04 23:31:39 +00:00
Alexandre Julliard 24d0a8394f Authors: Mike McCormack <mike@codeweavers.com>, Lionel Ulmer <lionel.ulmer@free.fr>
Make DDraw not linked 'statically' to OpenGL.
2003-06-04 20:13:21 +00:00
Lionel Ulmer 783b3236f5 Support for device surface locking. 2003-05-17 18:41:26 +00:00
Lionel Ulmer 6fb7ed8fa7 Added 'blt' and 'bltfast' override functions. 2003-01-02 19:51:25 +00:00
Lionel Ulmer 8cd2609587 Enable the application to create first textures and then the D3D
device.
2003-01-02 19:39:57 +00:00
Lionel Ulmer 96a24ec8ea Added surface dumping function for debug. 2002-12-19 04:13:46 +00:00
Lionel Ulmer 91c6f817b9 - rework how texturing is done in the D3D driver
- added the generic path for DrawPrimitive API in D3D 3 / 7
2002-12-15 01:17:59 +00:00
Lionel Ulmer 5f49e78e35 - start of support for device locking / unlocking via glReadPixels /
glDrawPixels interface (slow but should be enough for a start)
 - implement one vertex case for the D3D3/7 DrawPrimitive functions
 - fix a missing \n in a TRACE call
2002-11-30 19:06:52 +00:00
Lionel Ulmer 4941a3aff2 - fix texture snooping (plus adds snoop for 1555 format)
- add texture memory usage tracking
2002-11-27 21:38:28 +00:00
Lionel Ulmer dd738eab07 - Prevent the backbuffer to also have the frontbuffer flag set.
- Log the Locking flags.
- Print symbolic name (if any) of zero values for bit fields (thanks
  Andi).
2002-11-25 02:42:04 +00:00
Lionel Ulmer 43c3dc4d33 - Clean up all the D3D COM handling (but the underlaying code is still
as ugly as before).
- Handle properly (ie as on real Windows) negative values in
  rectangles during blitting.
2002-11-21 21:04:16 +00:00
Lionel Ulmer b103f7b679 Proper logging of DDSCAPS / DDSCAPS2 structures. 2002-11-11 22:23:10 +00:00
Lionel Ulmer b6051dec93 - DDRAW_SYSTEMMEMORY is handled like OFFSCREENPLAIN for now
- added more logging
2002-07-16 01:16:14 +00:00
Ove Kaaven 1d8f92c88c Removed the flags fields of IDirectDrawPaletteImpl, as we should use
the dwFlags field of DDRAWI_DDRAWPALETTE_GBL structure instead.
2002-07-10 03:05:43 +00:00
Vincent Béron 9a62491660 Removed trailing whitespace. 2002-05-31 23:06:46 +00:00
Alexandre Julliard 0799c1a780 Added LGPL standard comment, and copyright notices where necessary.
Global replacement of debugtools.h by wine/debug.h.
2002-03-09 23:29:33 +00:00
Patrik Stridvall 57e5784c21 Move __stdcall/__cdecl to the right place. 2002-02-02 18:42:11 +00:00
Marcus Meissner 4d2f173ce3 Added dwFlags to lock_update private functions so we can pass
WRITEONLY/READONLY.
Added those flags to the internal Lock() calls.
Only copy the surface from screen to surface if not writeonly.
Restrict blitting between display window and surface to the
locked/unlocked rectangle and the clipwindow section.
Added defines for DDHAL_UNLOCKDATA/DDHAL_LOCKDATA, added calls to HAL
implementation.
2001-09-10 23:12:16 +00:00
Alexandre Julliard 4c5b35d6e9 Removed unused DC_FUNCS pointers. 2001-07-28 00:09:07 +00:00
Francois Gouget 485cefd02d DDRAW_{XF86DGA2,XVidMode}_Init was moved to dlls/x11drv. 2001-04-27 18:00:33 +00:00
Ove Kaaven 01b9436018 Added ddraw HAL and gamma ramp stuff to implementation structures.
Added a parameter and return value to flip_data and flip_update.
2001-04-16 19:06:13 +00:00
Andreas Mohr 5b7e1810a1 - correct DDRAW_Convert_DDDEVICEIDENTIFIER_2_To_1 confusion
- fix GetAvailableVidMem ddraw iface copy&paste bug (doh !)
2001-02-14 00:28:02 +00:00
Marcus Meissner c5d2f5efeb Handle differently sized structs by using their dwSize parameters. 2001-02-12 03:43:53 +00:00
Marcus Meissner 15a525973b - Siedler3 appears to have rather limited buffers for device/description
strings and crashes with those long strings. Shortened those strings.
- Also driver needs to be "display" for display devices (some other
  programs rely on that info I seem to remember).
- Fixed DSurface::GetSurfaceDesc to not just blindly copy a
  DDSURFACEDESC2 struct over a smaller DDSURFACEDESC one.
2001-01-28 23:15:17 +00:00
Gavriel State ba3c18df69 Warning fixes. 2001-01-12 23:18:22 +00:00
Alexandre Julliard d6c0f9f784 Authors: Andrew Lewycky <andrew@transgaming.com>, Gavriel State <gav@transgaming.com>, Ove Kaaven <ovek@transgaming.com>
Major DirectDraw restructure/reimplementation, using an improved component
object model hierarchy. The implementation currently supports:
- DirectDraw over GDI/USER in a window (using DIBsections and
  asynchronous updates)
- XVidMode
- XF86DGA2
- All DirectDraw interfaces from versions 1 to 7 (at least in theory)
- Hooks for Direct3D interfaces
2001-01-04 22:44:55 +00:00
Francois Gouget f5cea729a6 We must include windef.h before wtypes.h (directly or indirectly). 2000-11-08 05:05:15 +00:00
Marcus Meissner aa10949064 Added some basic IDirectDraw7 interface support, fixed argument count
of IDirectDraw{4,7}_SetDisplayMode defines.
2000-10-23 00:36:45 +00:00
Marcus Meissner fad4593a74 Added 16 (565) -> 15 (555) bit depth converter. 2000-10-12 23:05:48 +00:00
Lionel Ulmer fc67be9a01 Added support for DirectDraw overlays using the XVideo extension. 2000-09-26 00:38:03 +00:00
Marcus Meissner bfae5c8382 IDirectDraw,IDirectDraw2,IDirectDraw4 fixed up in regard to COM usage. 2000-07-23 13:39:52 +00:00
Lionel Ulmer a8cc5f543e - fix Direct3D support and a lot of warnings
- add support for DDraw in a window (not optimized yet)
- cleans up OpenGL extensions handling for D3D
2000-07-16 14:40:35 +00:00
Marcus Meissner 968580c136 Use correct bpp for the X side of the surface XImages.
Cleaned up Xlib_Surface_Release so it is a bit more readable.
use VirtualAlloc for conversion-programside buffer to simplify
handling.
2000-06-23 16:52:53 +00:00
Marcus Meissner 9c51c96c6d Added 24->32 packed pixel mapping support to convert.
Slightly rewrote the conversion initialisation.
2000-06-13 01:06:53 +00:00
Andreas Mohr 2e011a5243 Lots of spelling fixes that accumulated in my tree again, made several
error msgs more verbose, doc updates.
2000-06-01 23:28:25 +00:00
Francois Gouget aef6b47917 Changed the placement of WINE_UNUSED to make gcc 2.7.2 happy. 2000-04-14 14:06:49 +00:00
Marcus Meissner 10ad97c838 Restructured DirectDraw. Split into X11 and DGA driver, and multiple
files/dirs for easier maintenance. Cleaned up structs and include
files. Reindented the code. Started the same for Direct3D.  Driver
inclusion now done by using configure/Makefile/ELF constructor tricks.
2000-04-09 14:30:50 +00:00
Alexandre Julliard ddce652cae Made ddraw and dinput separate dlls. 2000-03-17 16:58:10 +00:00