mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Rebase against b29cdbd5f23548d9631e5c98ec923b6d2d16a3f8
This commit is contained in:
parent
6e0d8f18d9
commit
8f0e72776f
@ -1,159 +0,0 @@
|
||||
From d7c4217174337d31778a5582b71b8c98e8a55852 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 28 Feb 2016 05:02:48 +0100
|
||||
Subject: ddraw: Accept d3d1 and d3d2 versions of D3DFINDDEVICERESULT in
|
||||
IDirect3D_FindDevice.
|
||||
|
||||
---
|
||||
dlls/ddraw/ddraw.c | 24 +++++++++++++++++++----
|
||||
dlls/ddraw/tests/d3d.c | 14 ++++++++++++++
|
||||
include/d3dcaps.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 86 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
|
||||
index 782b6b5..0d2ec53 100644
|
||||
--- a/dlls/ddraw/ddraw.c
|
||||
+++ b/dlls/ddraw/ddraw.c
|
||||
@@ -3992,8 +3992,8 @@ static HRESULT WINAPI d3d3_FindDevice(IDirect3D3 *iface, D3DFINDDEVICESEARCH *fd
|
||||
|
||||
if (!fds || !fdr) return DDERR_INVALIDPARAMS;
|
||||
|
||||
- if (fds->dwSize != sizeof(D3DFINDDEVICESEARCH)
|
||||
- || fdr->dwSize != sizeof(D3DFINDDEVICERESULT))
|
||||
+ if (fds->dwSize != sizeof(D3DFINDDEVICESEARCH) || (fdr->dwSize != sizeof(D3DFINDDEVICERESULT1) &&
|
||||
+ fdr->dwSize != sizeof(D3DFINDDEVICERESULT2) && fdr->dwSize != sizeof(D3DFINDDEVICERESULT)))
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
if ((fds->dwFlags & D3DFDS_COLORMODEL)
|
||||
@@ -4022,8 +4022,24 @@ static HRESULT WINAPI d3d3_FindDevice(IDirect3D3 *iface, D3DFINDDEVICESEARCH *fd
|
||||
/* Now return our own GUID */
|
||||
ddraw_d3dcaps1_from_7(&desc1, &desc7);
|
||||
fdr->guid = IID_D3DDEVICE_WineD3D;
|
||||
- fdr->ddHwDesc = desc1;
|
||||
- fdr->ddSwDesc = desc1;
|
||||
+
|
||||
+ if (fdr->dwSize == sizeof(D3DFINDDEVICERESULT1))
|
||||
+ {
|
||||
+ D3DFINDDEVICERESULT1 *fdr1 = (D3DFINDDEVICERESULT1 *)fdr;
|
||||
+ memcpy(&fdr1->ddHwDesc, &desc1, sizeof(fdr1->ddHwDesc));
|
||||
+ memcpy(&fdr1->ddSwDesc, &desc1, sizeof(fdr1->ddSwDesc));
|
||||
+ }
|
||||
+ else if (fdr->dwSize == sizeof(D3DFINDDEVICERESULT2))
|
||||
+ {
|
||||
+ D3DFINDDEVICERESULT2 *fdr2 = (D3DFINDDEVICERESULT2 *)fdr;
|
||||
+ memcpy(&fdr2->ddHwDesc, &desc1, sizeof(fdr2->ddHwDesc));
|
||||
+ memcpy(&fdr2->ddSwDesc, &desc1, sizeof(fdr2->ddSwDesc));
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ fdr->ddHwDesc = desc1;
|
||||
+ fdr->ddSwDesc = desc1;
|
||||
+ }
|
||||
|
||||
TRACE("Returning Wine's wined3d device with (undumped) capabilities.\n");
|
||||
|
||||
diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c
|
||||
index 06f16f3..12db306 100644
|
||||
--- a/dlls/ddraw/tests/d3d.c
|
||||
+++ b/dlls/ddraw/tests/d3d.c
|
||||
@@ -3211,6 +3211,8 @@ static void FindDevice(void)
|
||||
|
||||
D3DFINDDEVICESEARCH search = {0};
|
||||
D3DFINDDEVICERESULT result = {0};
|
||||
+ D3DFINDDEVICERESULT1 result1 = {0};
|
||||
+ D3DFINDDEVICERESULT2 result2 = {0};
|
||||
IDirect3DDevice *d3dhal;
|
||||
HRESULT hr;
|
||||
int i;
|
||||
@@ -3251,6 +3253,18 @@ static void FindDevice(void)
|
||||
ok(hr == D3D_OK,
|
||||
"Expected IDirect3D1::FindDevice to return D3D_OK, got 0x%08x\n", hr);
|
||||
|
||||
+ result1.dwSize = sizeof(result1);
|
||||
+
|
||||
+ hr = IDirect3D_FindDevice(Direct3D1, &search, (D3DFINDDEVICERESULT *)&result1);
|
||||
+ ok(hr == D3D_OK,
|
||||
+ "Expected IDirect3D1::FindDevice to return D3D_OK, got 0x%08x\n", hr);
|
||||
+
|
||||
+ result2.dwSize = sizeof(result2);
|
||||
+
|
||||
+ hr = IDirect3D_FindDevice(Direct3D1, &search, (D3DFINDDEVICERESULT *)&result2);
|
||||
+ ok(hr == D3D_OK,
|
||||
+ "Expected IDirect3D1::FindDevice to return D3D_OK, got 0x%08x\n", hr);
|
||||
+
|
||||
/* Try an arbitrary non-device GUID. */
|
||||
search.dwSize = sizeof(search);
|
||||
search.dwFlags = D3DFDS_GUID;
|
||||
diff --git a/include/d3dcaps.h b/include/d3dcaps.h
|
||||
index 4fc76ba..51e3efa 100644
|
||||
--- a/include/d3dcaps.h
|
||||
+++ b/include/d3dcaps.h
|
||||
@@ -193,6 +193,44 @@ typedef struct _D3dPrimCaps {
|
||||
#define D3DPTADDRESSCAPS_BORDER 0x00000008
|
||||
#define D3DPTADDRESSCAPS_INDEPENDENTUV 0x00000010
|
||||
|
||||
+typedef struct _D3DDeviceDesc1 {
|
||||
+ DWORD dwSize;
|
||||
+ DWORD dwFlags;
|
||||
+ D3DCOLORMODEL dcmColorModel;
|
||||
+ DWORD dwDevCaps;
|
||||
+ D3DTRANSFORMCAPS dtcTransformCaps;
|
||||
+ BOOL bClipping;
|
||||
+ D3DLIGHTINGCAPS dlcLightingCaps;
|
||||
+ D3DPRIMCAPS dpcLineCaps;
|
||||
+ D3DPRIMCAPS dpcTriCaps;
|
||||
+ DWORD dwDeviceRenderBitDepth;
|
||||
+ DWORD dwDeviceZBufferBitDepth;
|
||||
+ DWORD dwMaxBufferSize;
|
||||
+ DWORD dwMaxVertexCount;
|
||||
+} D3DDEVICEDESC1,*LPD3DDEVICEDESC1;
|
||||
+#define D3DDEVICEDESCSIZE1 (sizeof(D3DDEVICEDESC1))
|
||||
+
|
||||
+typedef struct _D3DDeviceDesc2 {
|
||||
+ DWORD dwSize;
|
||||
+ DWORD dwFlags;
|
||||
+ D3DCOLORMODEL dcmColorModel;
|
||||
+ DWORD dwDevCaps;
|
||||
+ D3DTRANSFORMCAPS dtcTransformCaps;
|
||||
+ BOOL bClipping;
|
||||
+ D3DLIGHTINGCAPS dlcLightingCaps;
|
||||
+ D3DPRIMCAPS dpcLineCaps;
|
||||
+ D3DPRIMCAPS dpcTriCaps;
|
||||
+ DWORD dwDeviceRenderBitDepth;
|
||||
+ DWORD dwDeviceZBufferBitDepth;
|
||||
+ DWORD dwMaxBufferSize;
|
||||
+ DWORD dwMaxVertexCount;
|
||||
+
|
||||
+ DWORD dwMinTextureWidth,dwMinTextureHeight;
|
||||
+ DWORD dwMaxTextureWidth,dwMaxTextureHeight;
|
||||
+ DWORD dwMinStippleWidth,dwMaxStippleWidth;
|
||||
+ DWORD dwMinStippleHeight,dwMaxStippleHeight;
|
||||
+} D3DDEVICEDESC2,*LPD3DDEVICEDESC2;
|
||||
+#define D3DDEVICEDESCSIZE2 (sizeof(D3DDEVICEDESC2))
|
||||
|
||||
typedef struct _D3DDeviceDesc {
|
||||
DWORD dwSize;
|
||||
@@ -382,6 +420,20 @@ typedef struct _D3DFINDDEVICESEARCH {
|
||||
D3DPRIMCAPS dpcPrimCaps;
|
||||
} D3DFINDDEVICESEARCH,*LPD3DFINDDEVICESEARCH;
|
||||
|
||||
+typedef struct _D3DFINDDEVICERESULT1 {
|
||||
+ DWORD dwSize;
|
||||
+ GUID guid;
|
||||
+ D3DDEVICEDESC1 ddHwDesc;
|
||||
+ D3DDEVICEDESC1 ddSwDesc;
|
||||
+} D3DFINDDEVICERESULT1,*LPD3DFINDDEVICERESULT1;
|
||||
+
|
||||
+typedef struct _D3DFINDDEVICERESULT2 {
|
||||
+ DWORD dwSize;
|
||||
+ GUID guid;
|
||||
+ D3DDEVICEDESC2 ddHwDesc;
|
||||
+ D3DDEVICEDESC2 ddSwDesc;
|
||||
+} D3DFINDDEVICERESULT2,*LPD3DFINDDEVICERESULT2;
|
||||
+
|
||||
typedef struct _D3DFINDDEVICERESULT {
|
||||
DWORD dwSize;
|
||||
GUID guid;
|
||||
--
|
||||
2.7.1
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: Accept d3d1 and d3d2 versions of D3DFINDDEVICERESULT in IDirect3D_FindDevice
|
@ -1,4 +1,4 @@
|
||||
From 25c2a52b1109022a01b8f59a22b8a04566af0d3c Mon Sep 17 00:00:00 2001
|
||||
From 82d0d3038097d3410feb4e405e4b9f8cd9ced21d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 4 Mar 2016 22:22:42 +0100
|
||||
Subject: [PATCH] ddraw: Set ddsOldCaps correctly in ddraw7_GetCaps.
|
||||
@ -12,10 +12,10 @@ Subject: [PATCH] ddraw: Set ddsOldCaps correctly in ddraw7_GetCaps.
|
||||
5 files changed, 106 insertions(+)
|
||||
|
||||
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
|
||||
index ed904785dd..47f079fb97 100644
|
||||
index 37e44e8..a740995 100644
|
||||
--- a/dlls/ddraw/ddraw.c
|
||||
+++ b/dlls/ddraw/ddraw.c
|
||||
@@ -1542,6 +1542,8 @@ static HRESULT WINAPI ddraw7_GetCaps(IDirectDraw7 *iface, DDCAPS *DriverCaps, DD
|
||||
@@ -1544,6 +1544,8 @@ static HRESULT WINAPI ddraw7_GetCaps(IDirectDraw7 *iface, DDCAPS *DriverCaps, DD
|
||||
caps.dwCaps |= DDCAPS_ALIGNSTRIDE;
|
||||
caps.dwAlignStrideAlign = DDRAW_STRIDE_ALIGNMENT;
|
||||
|
||||
@ -25,10 +25,10 @@ index ed904785dd..47f079fb97 100644
|
||||
|
||||
if(DriverCaps)
|
||||
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
|
||||
index d4fe1f294a..29d9d3afb7 100644
|
||||
index ee4fa5b..c7b992e 100644
|
||||
--- a/dlls/ddraw/tests/ddraw1.c
|
||||
+++ b/dlls/ddraw/tests/ddraw1.c
|
||||
@@ -11538,6 +11538,31 @@ static void test_execute_data(void)
|
||||
@@ -11539,6 +11539,31 @@ static void test_execute_data(void)
|
||||
DestroyWindow(window);
|
||||
}
|
||||
|
||||
@ -60,19 +60,19 @@ index d4fe1f294a..29d9d3afb7 100644
|
||||
static void test_viewport(void)
|
||||
{
|
||||
static struct
|
||||
@@ -11815,6 +11840,7 @@ START_TEST(ddraw1)
|
||||
@@ -11973,6 +11998,7 @@ START_TEST(ddraw1)
|
||||
test_depth_readback();
|
||||
test_clear();
|
||||
test_enum_surfaces();
|
||||
+ test_caps();
|
||||
test_execute_data();
|
||||
test_viewport();
|
||||
}
|
||||
test_find_device();
|
||||
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
|
||||
index 941d46bf42..752b39568d 100644
|
||||
index 9394705..bc213db 100644
|
||||
--- a/dlls/ddraw/tests/ddraw2.c
|
||||
+++ b/dlls/ddraw/tests/ddraw2.c
|
||||
@@ -12800,6 +12800,31 @@ static void test_enum_surfaces(void)
|
||||
@@ -12801,6 +12801,31 @@ static void test_enum_surfaces(void)
|
||||
IDirectDraw2_Release(ddraw);
|
||||
}
|
||||
|
||||
@ -104,19 +104,20 @@ index 941d46bf42..752b39568d 100644
|
||||
static void test_viewport(void)
|
||||
{
|
||||
static struct
|
||||
@@ -13106,5 +13131,6 @@ START_TEST(ddraw2)
|
||||
@@ -13264,6 +13289,7 @@ START_TEST(ddraw2)
|
||||
test_depth_readback();
|
||||
test_clear();
|
||||
test_enum_surfaces();
|
||||
+ test_caps();
|
||||
test_viewport();
|
||||
test_find_device();
|
||||
}
|
||||
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
|
||||
index e81472d4f2..4e083ec503 100644
|
||||
index 6a3630a..1c9acf8 100644
|
||||
--- a/dlls/ddraw/tests/ddraw4.c
|
||||
+++ b/dlls/ddraw/tests/ddraw4.c
|
||||
@@ -15089,6 +15089,31 @@ static void test_viewport(void)
|
||||
DestroyWindow(window);
|
||||
@@ -15247,6 +15247,31 @@ static void test_find_device(void)
|
||||
IDirectDraw4_Release(ddraw);
|
||||
}
|
||||
|
||||
+static void test_caps(void)
|
||||
@ -147,14 +148,16 @@ index e81472d4f2..4e083ec503 100644
|
||||
START_TEST(ddraw4)
|
||||
{
|
||||
DDDEVICEIDENTIFIER identifier;
|
||||
@@ -15215,4 +15240,5 @@ START_TEST(ddraw4)
|
||||
@@ -15372,6 +15397,7 @@ START_TEST(ddraw4)
|
||||
test_depth_readback();
|
||||
test_clear();
|
||||
test_enum_surfaces();
|
||||
test_viewport();
|
||||
+ test_caps();
|
||||
test_viewport();
|
||||
test_find_device();
|
||||
}
|
||||
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
|
||||
index 70318a8492..f3dde436d3 100644
|
||||
index 70318a8..f3dde43 100644
|
||||
--- a/dlls/ddraw/tests/ddraw7.c
|
||||
+++ b/dlls/ddraw/tests/ddraw7.c
|
||||
@@ -15035,6 +15035,31 @@ static void test_color_vertex(void)
|
||||
@ -197,5 +200,5 @@ index 70318a8492..f3dde436d3 100644
|
||||
test_color_vertex();
|
||||
}
|
||||
--
|
||||
2.18.0
|
||||
1.9.1
|
||||
|
||||
|
@ -52,7 +52,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "18e2df401eb545f0ce490daaaf12a6c1c248119f"
|
||||
echo "b29cdbd5f23548d9631e5c98ec923b6d2d16a3f8"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -124,7 +124,6 @@ patch_enable_all ()
|
||||
enable_d3dx9_36_Texture_Align="$1"
|
||||
enable_d3dx9_36_UpdateSkinnedMesh="$1"
|
||||
enable_dbghelp_Debug_Symbols="$1"
|
||||
enable_ddraw_D3DFINDDEVICERESULT="$1"
|
||||
enable_ddraw_Device_Caps="$1"
|
||||
enable_ddraw_EnumSurfaces="$1"
|
||||
enable_ddraw_Fix_Typos="$1"
|
||||
@ -544,9 +543,6 @@ patch_enable ()
|
||||
dbghelp-Debug_Symbols)
|
||||
enable_dbghelp_Debug_Symbols="$2"
|
||||
;;
|
||||
ddraw-D3DFINDDEVICERESULT)
|
||||
enable_ddraw_D3DFINDDEVICERESULT="$2"
|
||||
;;
|
||||
ddraw-Device_Caps)
|
||||
enable_ddraw_Device_Caps="$2"
|
||||
;;
|
||||
@ -3294,18 +3290,6 @@ if test "$enable_dbghelp_Debug_Symbols" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ddraw-D3DFINDDEVICERESULT
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/ddraw/ddraw.c, dlls/ddraw/tests/d3d.c, include/d3dcaps.h
|
||||
# |
|
||||
if test "$enable_ddraw_D3DFINDDEVICERESULT" -eq 1; then
|
||||
patch_apply ddraw-D3DFINDDEVICERESULT/0001-ddraw-Accept-d3d1-and-d3d2-versions-of-D3DFINDDEVICE.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Michael Müller", "ddraw: Accept d3d1 and d3d2 versions of D3DFINDDEVICERESULT in IDirect3D_FindDevice.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ddraw-Device_Caps
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
Loading…
x
Reference in New Issue
Block a user