Module: wine
Branch: master
Commit: 742260d418293e57afcb05e8c1fdc71ec4d99258
URL: http://source.winehq.org/git/wine.git/?a=commit;h=742260d418293e57afcb05e8c…
Author: Stefan Dösinger <stefan(a)codeweavers.com>
Date: Sat Apr 28 14:50:15 2007 +0200
ddraw: Adjust the d3d viewport when changing the back buffer.
WineD3D sets up the viewport according to the front buffer, so this
needs to be changed to the values of the render target passed when the
d3d7 device is created and this device turns out not to be the known
front or back buffer.
---
dlls/ddraw/device.c | 11 +++++++++++
dlls/ddraw/direct3d.c | 10 ++++++++++
2 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 30f80ad..42e44d8 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -306,6 +306,17 @@ IDirect3DDeviceImpl_7_Release(IDirect3DDevice7 *iface)
/* Restore the render targets */
if(This->OffScreenTarget)
{
+ WINED3DVIEWPORT vp;
+
+ vp.X = 0;
+ vp.Y = 0;
+ vp.Width = This->ddraw->d3d_target->surface_desc.dwWidth;
+ vp.Height = This->ddraw->d3d_target->surface_desc.dwHeight;
+ vp.MinZ = 0.0;
+ vp.MaxZ = 1.0;
+ IWineD3DDevice_SetViewport(This->wineD3DDevice,
+ &vp);
+
/* Set the device up to render to the front buffer since the back buffer will
* vanish soon.
*/
diff --git a/dlls/ddraw/direct3d.c b/dlls/ddraw/direct3d.c
index 9f7e136..0ccb2c3 100644
--- a/dlls/ddraw/direct3d.c
+++ b/dlls/ddraw/direct3d.c
@@ -844,6 +844,7 @@ IDirect3DImpl_7_CreateDevice(IDirect3D7 *iface,
if(!(target->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) &&
(This->d3d_target != target))
{
+ WINED3DVIEWPORT vp;
TRACE("(%p) Using %p as front buffer, %p as back buffer\n", This, This->d3d_target, target);
hr = IWineD3DDevice_SetFrontBackBuffers(This->wineD3DDevice,
This->d3d_target->WineD3DSurface,
@@ -855,6 +856,15 @@ IDirect3DImpl_7_CreateDevice(IDirect3D7 *iface,
IWineD3DDevice_SetRenderTarget(This->wineD3DDevice, 0,
target->WineD3DSurface);
+ vp.X = 0;
+ vp.Y = 0;
+ vp.Width = target->surface_desc.dwWidth;
+ vp.Height = target->surface_desc.dwHeight;
+ vp.MinZ = 0.0;
+ vp.MaxZ = 1.0;
+ IWineD3DDevice_SetViewport(This->wineD3DDevice,
+ &vp);
+
object->OffScreenTarget = TRUE;
}
else
Module: wine
Branch: master
Commit: 2ecacc619f1ea4931c3c654d80ba1aead4527ef6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2ecacc619f1ea4931c3c654d8…
Author: Stefan Dösinger <stefan(a)codeweavers.com>
Date: Sun May 6 23:40:19 2007 +0200
ddraw: Fix reported caps on compressed surfaces.
Compressed surfaces in ddraw do not have a pitch, instead the full
surface size is reported. Also adds tests for the extact behavior and
surface flags set.
---
dlls/ddraw/ddraw.c | 35 +++-
dlls/ddraw/surface.c | 8 +-
dlls/ddraw/tests/dsurface.c | 408 ++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 441 insertions(+), 10 deletions(-)
Diff: http://source.winehq.org/git/wine.git/?a=commitdiff;h=2ecacc619f1ea4931c3c6…