Rebase against 63ef9854fb6fc91a8c956a9d91abc07e906a4a33

This commit is contained in:
Alistair Leslie-Hughes 2018-11-20 10:14:29 +11:00
parent e89028830e
commit c6956ccbda
4 changed files with 66 additions and 104 deletions

View File

@ -1,4 +1,4 @@
From 54da28ec1779f20790f48721ec0c0b62e8ebcfc1 Mon Sep 17 00:00:00 2001
From 30578b99bc059003a1223e2e9752bb07d449c34e Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Fri, 30 Mar 2018 08:22:02 +0000
Subject: [PATCH] d3dx9_36: add DXTn support
@ -17,8 +17,8 @@ Subject: [PATCH] d3dx9_36: add DXTn support
dlls/d3dx9_34/Makefile.in | 2 +-
dlls/d3dx9_35/Makefile.in | 2 +-
dlls/d3dx9_36/Makefile.in | 2 +-
dlls/d3dx9_36/surface.c | 100 +++++++++++++++++++++++++++++++++++++++---
dlls/d3dx9_36/tests/surface.c | 8 ++--
dlls/d3dx9_36/surface.c | 101 +++++++++++++++++++++++++++++++---
dlls/d3dx9_36/tests/surface.c | 8 +--
dlls/d3dx9_37/Makefile.in | 2 +-
dlls/d3dx9_38/Makefile.in | 2 +-
dlls/d3dx9_39/Makefile.in | 2 +-
@ -26,10 +26,10 @@ Subject: [PATCH] d3dx9_36: add DXTn support
dlls/d3dx9_41/Makefile.in | 2 +-
dlls/d3dx9_42/Makefile.in | 2 +-
dlls/d3dx9_43/Makefile.in | 2 +-
22 files changed, 117 insertions(+), 31 deletions(-)
22 files changed, 117 insertions(+), 32 deletions(-)
diff --git a/dlls/d3dx9_24/Makefile.in b/dlls/d3dx9_24/Makefile.in
index 482c92d..d969a55 100644
index 482c92d64e2..d969a55b106 100644
--- a/dlls/d3dx9_24/Makefile.in
+++ b/dlls/d3dx9_24/Makefile.in
@@ -1,6 +1,6 @@
@ -41,7 +41,7 @@ index 482c92d..d969a55 100644
C_SRCS = \
diff --git a/dlls/d3dx9_25/Makefile.in b/dlls/d3dx9_25/Makefile.in
index be4c769..b232290 100644
index be4c76980e1..b232290d255 100644
--- a/dlls/d3dx9_25/Makefile.in
+++ b/dlls/d3dx9_25/Makefile.in
@@ -1,6 +1,6 @@
@ -53,7 +53,7 @@ index be4c769..b232290 100644
C_SRCS = \
diff --git a/dlls/d3dx9_26/Makefile.in b/dlls/d3dx9_26/Makefile.in
index c5e9e85..525009d 100644
index c5e9e85bfb7..525009d292c 100644
--- a/dlls/d3dx9_26/Makefile.in
+++ b/dlls/d3dx9_26/Makefile.in
@@ -1,6 +1,6 @@
@ -65,7 +65,7 @@ index c5e9e85..525009d 100644
C_SRCS = \
diff --git a/dlls/d3dx9_27/Makefile.in b/dlls/d3dx9_27/Makefile.in
index ee7f0e2..da98482 100644
index ee7f0e2449c..da98482d243 100644
--- a/dlls/d3dx9_27/Makefile.in
+++ b/dlls/d3dx9_27/Makefile.in
@@ -1,6 +1,6 @@
@ -77,7 +77,7 @@ index ee7f0e2..da98482 100644
C_SRCS = \
diff --git a/dlls/d3dx9_28/Makefile.in b/dlls/d3dx9_28/Makefile.in
index 0944200..d50e035 100644
index 094420013d0..d50e035853f 100644
--- a/dlls/d3dx9_28/Makefile.in
+++ b/dlls/d3dx9_28/Makefile.in
@@ -1,6 +1,6 @@
@ -89,7 +89,7 @@ index 0944200..d50e035 100644
C_SRCS = \
diff --git a/dlls/d3dx9_29/Makefile.in b/dlls/d3dx9_29/Makefile.in
index 88cb110..cfc1a15 100644
index 88cb110ff5e..cfc1a150349 100644
--- a/dlls/d3dx9_29/Makefile.in
+++ b/dlls/d3dx9_29/Makefile.in
@@ -1,6 +1,6 @@
@ -101,7 +101,7 @@ index 88cb110..cfc1a15 100644
C_SRCS = \
diff --git a/dlls/d3dx9_30/Makefile.in b/dlls/d3dx9_30/Makefile.in
index 6ab2ff2..726c92e 100644
index 6ab2ff24514..726c92e8fd5 100644
--- a/dlls/d3dx9_30/Makefile.in
+++ b/dlls/d3dx9_30/Makefile.in
@@ -1,6 +1,6 @@
@ -113,7 +113,7 @@ index 6ab2ff2..726c92e 100644
C_SRCS = \
diff --git a/dlls/d3dx9_31/Makefile.in b/dlls/d3dx9_31/Makefile.in
index 3d44da1..2014301 100644
index 3d44da147dc..201430127ce 100644
--- a/dlls/d3dx9_31/Makefile.in
+++ b/dlls/d3dx9_31/Makefile.in
@@ -1,6 +1,6 @@
@ -125,7 +125,7 @@ index 3d44da1..2014301 100644
C_SRCS = \
diff --git a/dlls/d3dx9_32/Makefile.in b/dlls/d3dx9_32/Makefile.in
index 37cc279..442258d 100644
index 37cc2797afd..442258d8f31 100644
--- a/dlls/d3dx9_32/Makefile.in
+++ b/dlls/d3dx9_32/Makefile.in
@@ -1,6 +1,6 @@
@ -137,7 +137,7 @@ index 37cc279..442258d 100644
C_SRCS = \
diff --git a/dlls/d3dx9_33/Makefile.in b/dlls/d3dx9_33/Makefile.in
index 5b03ec1..cc98ed2 100644
index 5b03ec134dd..cc98ed25016 100644
--- a/dlls/d3dx9_33/Makefile.in
+++ b/dlls/d3dx9_33/Makefile.in
@@ -1,6 +1,6 @@
@ -149,7 +149,7 @@ index 5b03ec1..cc98ed2 100644
C_SRCS = \
diff --git a/dlls/d3dx9_34/Makefile.in b/dlls/d3dx9_34/Makefile.in
index b7f9c46..4862fe9 100644
index b7f9c46d5e7..4862fe94af1 100644
--- a/dlls/d3dx9_34/Makefile.in
+++ b/dlls/d3dx9_34/Makefile.in
@@ -1,6 +1,6 @@
@ -161,7 +161,7 @@ index b7f9c46..4862fe9 100644
C_SRCS = \
diff --git a/dlls/d3dx9_35/Makefile.in b/dlls/d3dx9_35/Makefile.in
index 9c196ea..3f529c9 100644
index 9c196ea038b..3f529c99154 100644
--- a/dlls/d3dx9_35/Makefile.in
+++ b/dlls/d3dx9_35/Makefile.in
@@ -1,6 +1,6 @@
@ -173,7 +173,7 @@ index 9c196ea..3f529c9 100644
C_SRCS = \
diff --git a/dlls/d3dx9_36/Makefile.in b/dlls/d3dx9_36/Makefile.in
index da8098d..166031e 100644
index da8098dd8d1..166031e6a4e 100644
--- a/dlls/d3dx9_36/Makefile.in
+++ b/dlls/d3dx9_36/Makefile.in
@@ -1,7 +1,7 @@
@ -186,7 +186,7 @@ index da8098d..166031e 100644
C_SRCS = \
animation.c \
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 0a6e20e..a33b6e2 100644
index 7d48cc6b132..85db27acadf 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -27,6 +27,8 @@
@ -223,22 +223,28 @@ index 0a6e20e..a33b6e2 100644
/************************************************************
* D3DXLoadSurfaceFromMemory
*
@@ -1756,6 +1776,7 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1753,12 +1773,14 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
DWORD filter, D3DCOLOR color_key)
{
const struct pixel_format_desc *srcformatdesc, *destformatdesc;
+ void *tmp_src_memory = NULL, *tmp_dst_memory = NULL;
+ dxtn_conversion_func pre_convert = NULL, post_convert = NULL;
IDirect3DSurface9 *surface = dst_surface;
IDirect3DDevice9 *device;
D3DSURFACE_DESC surfdesc;
D3DLOCKED_RECT lockrect;
struct volume src_size, dst_size;
+ HRESULT ret = D3D_OK;
- HRESULT hr;
+ HRESULT hr = D3D_OK;
TRACE("(%p, %p, %s, %p, %#x, %u, %p, %s, %#x, 0x%08x)\n",
dst_surface, dst_palette, wine_dbgstr_rect(dst_rect), src_memory, src_format,
@@ -1837,8 +1858,15 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1856,18 +1878,65 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
}
else /* Stretching or format conversion. */
{
- if (!is_conversion_from_supported(srcformatdesc)
- || !is_conversion_to_supported(destformatdesc))
+ dxtn_conversion_func pre_convert, post_convert;
+ void *tmp_src_memory = NULL, *tmp_dst_memory = NULL;
+ UINT tmp_src_pitch, tmp_dst_pitch;
+
+ pre_convert = get_dxtn_conversion_func(srcformatdesc->format, FALSE);
@ -248,10 +254,9 @@ index 0a6e20e..a33b6e2 100644
+ (!post_convert && !is_conversion_to_supported(destformatdesc)))
{
FIXME("Unsupported format conversion %#x -> %#x.\n", src_format, surfdesc.Format);
return E_NOTIMPL;
@@ -1847,10 +1875,52 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
if (FAILED(IDirect3DSurface9_LockRect(dst_surface, &lockrect, dst_rect, 0)))
return D3DXERR_INVALIDDATA;
hr = E_NOTIMPL;
goto done;
}
+ /* handle pre-conversion */
+ if (pre_convert)
@ -259,15 +264,15 @@ index 0a6e20e..a33b6e2 100644
+ tmp_src_memory = HeapAlloc(GetProcessHeap(), 0, src_size.width * src_size.height * sizeof(DWORD));
+ if (!tmp_src_memory)
+ {
+ ret = E_OUTOFMEMORY;
+ goto error;
+ hr = E_OUTOFMEMORY;
+ goto done;
+ }
+ tmp_src_pitch = src_size.width * sizeof(DWORD);
+ if (!pre_convert(src_memory, tmp_src_memory, src_pitch, tmp_src_pitch,
+ WINED3DFMT_B8G8R8A8_UNORM, src_size.width, src_size.height))
+ {
+ ret = E_FAIL;
+ goto error;
+ hr = E_FAIL;
+ goto done;
+ }
+ srcformatdesc = get_format_info(D3DFMT_A8R8G8B8);
+ }
@ -283,8 +288,8 @@ index 0a6e20e..a33b6e2 100644
+ tmp_dst_memory = HeapAlloc(GetProcessHeap(), 0, dst_size.width * dst_size.height * sizeof(DWORD));
+ if (!tmp_dst_memory)
+ {
+ ret = E_OUTOFMEMORY;
+ goto error;
+ hr = E_OUTOFMEMORY;
+ goto done;
+ }
+ tmp_dst_pitch = dst_size.width * sizeof(DWORD);
+ destformatdesc = get_format_info(D3DFMT_A8R8G8B8);
@ -304,7 +309,7 @@ index 0a6e20e..a33b6e2 100644
}
else /* if ((filter & 0xf) == D3DX_FILTER_POINT) */
{
@@ -1859,14 +1929,30 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1876,12 +1945,22 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
/* Always apply a point filter until D3DX_FILTER_LINEAR,
* D3DX_FILTER_TRIANGLE and D3DX_FILTER_BOX are implemented. */
@ -320,29 +325,34 @@ index 0a6e20e..a33b6e2 100644
+ if (!post_convert(tmp_dst_memory, lockrect.pBits, tmp_dst_pitch, lockrect.Pitch,
+ WINED3DFMT_B8G8R8A8_UNORM, dst_size.width, dst_size.height))
+ {
+ ret = E_FAIL;
+ goto error;
+ hr = E_FAIL;
+ goto done;
+ }
}
}
+error:
- hr = D3D_OK;
done:
IDirect3DSurface9_UnlockRect(surface);
if (surface != dst_surface)
@@ -1893,6 +1972,12 @@ done:
IDirect3DDevice9_Release(device);
}
IDirect3DSurface9_Release(surface);
+
+ if (pre_convert)
+ HeapFree(GetProcessHeap(), 0, tmp_src_memory);
+ if (post_convert)
+ HeapFree(GetProcessHeap(), 0, tmp_dst_memory);
IDirect3DSurface9_UnlockRect(dst_surface);
+ IDirect3DSurface9_UnlockRect(dst_surface);
}
- return D3D_OK;
+ return ret;
}
/************************************************************
return hr;
diff --git a/dlls/d3dx9_36/tests/surface.c b/dlls/d3dx9_36/tests/surface.c
index 37c488b..5697f93 100644
index f153cd92c65..9cdf60a54c7 100644
--- a/dlls/d3dx9_36/tests/surface.c
+++ b/dlls/d3dx9_36/tests/surface.c
@@ -1179,7 +1179,7 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
@@ -1199,7 +1199,7 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
hr = IDirect3DTexture9_GetSurfaceLevel(tex, 0, &newsurf);
ok(SUCCEEDED(hr), "Failed to get the surface, hr %#x.\n", hr);
hr = D3DXLoadSurfaceFromSurface(newsurf, NULL, NULL, surf, NULL, NULL, D3DX_FILTER_NONE, 0);
@ -351,7 +361,7 @@ index 37c488b..5697f93 100644
check_release((IUnknown*)newsurf, 1);
check_release((IUnknown*)tex, 0);
}
@@ -1205,7 +1205,7 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
@@ -1225,7 +1225,7 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
hr = IDirect3DTexture9_GetSurfaceLevel(tex, 0, &newsurf);
ok(SUCCEEDED(hr), "Failed to get the surface, hr %#x.\n", hr);
hr = D3DXLoadSurfaceFromSurface(newsurf, NULL, NULL, surf, NULL, NULL, D3DX_FILTER_NONE, 0);
@ -360,7 +370,7 @@ index 37c488b..5697f93 100644
check_release((IUnknown*)newsurf, 1);
check_release((IUnknown*)tex, 0);
}
@@ -1218,10 +1218,10 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
@@ -1238,10 +1238,10 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
hr = IDirect3DTexture9_GetSurfaceLevel(tex, 0, &newsurf);
ok(SUCCEEDED(hr), "Failed to get the surface, hr %#x.\n", hr);
hr = D3DXLoadSurfaceFromSurface(newsurf, NULL, NULL, surf, NULL, NULL, D3DX_FILTER_NONE, 0);
@ -374,7 +384,7 @@ index 37c488b..5697f93 100644
check_release((IUnknown*)newsurf, 1);
check_release((IUnknown*)tex, 0);
diff --git a/dlls/d3dx9_37/Makefile.in b/dlls/d3dx9_37/Makefile.in
index ab790a4..51382c7 100644
index ab790a4d5c4..51382c7109a 100644
--- a/dlls/d3dx9_37/Makefile.in
+++ b/dlls/d3dx9_37/Makefile.in
@@ -1,6 +1,6 @@
@ -386,7 +396,7 @@ index ab790a4..51382c7 100644
C_SRCS = \
diff --git a/dlls/d3dx9_38/Makefile.in b/dlls/d3dx9_38/Makefile.in
index 6125c2d..f6257cb 100644
index 6125c2da678..f6257cbdec7 100644
--- a/dlls/d3dx9_38/Makefile.in
+++ b/dlls/d3dx9_38/Makefile.in
@@ -1,6 +1,6 @@
@ -398,7 +408,7 @@ index 6125c2d..f6257cb 100644
C_SRCS = \
diff --git a/dlls/d3dx9_39/Makefile.in b/dlls/d3dx9_39/Makefile.in
index d97a787..a68ee9f 100644
index d97a787c67a..a68ee9f3ad5 100644
--- a/dlls/d3dx9_39/Makefile.in
+++ b/dlls/d3dx9_39/Makefile.in
@@ -1,6 +1,6 @@
@ -410,7 +420,7 @@ index d97a787..a68ee9f 100644
C_SRCS = \
diff --git a/dlls/d3dx9_40/Makefile.in b/dlls/d3dx9_40/Makefile.in
index 36c5a21..7f2cfe1 100644
index 36c5a210cdb..7f2cfe1a47c 100644
--- a/dlls/d3dx9_40/Makefile.in
+++ b/dlls/d3dx9_40/Makefile.in
@@ -1,6 +1,6 @@
@ -422,7 +432,7 @@ index 36c5a21..7f2cfe1 100644
C_SRCS = \
diff --git a/dlls/d3dx9_41/Makefile.in b/dlls/d3dx9_41/Makefile.in
index d4552cf..c5c3ab1 100644
index d4552cf608e..c5c3ab1aae5 100644
--- a/dlls/d3dx9_41/Makefile.in
+++ b/dlls/d3dx9_41/Makefile.in
@@ -1,6 +1,6 @@
@ -434,7 +444,7 @@ index d4552cf..c5c3ab1 100644
C_SRCS = \
diff --git a/dlls/d3dx9_42/Makefile.in b/dlls/d3dx9_42/Makefile.in
index 5806fce..e9a8e89 100644
index 5806fce66c6..e9a8e89da5f 100644
--- a/dlls/d3dx9_42/Makefile.in
+++ b/dlls/d3dx9_42/Makefile.in
@@ -1,6 +1,6 @@
@ -446,7 +456,7 @@ index 5806fce..e9a8e89 100644
C_SRCS = \
diff --git a/dlls/d3dx9_43/Makefile.in b/dlls/d3dx9_43/Makefile.in
index 72ba8b4..33185bf 100644
index 72ba8b4c1e0..33185bf7a8a 100644
--- a/dlls/d3dx9_43/Makefile.in
+++ b/dlls/d3dx9_43/Makefile.in
@@ -1,6 +1,6 @@
@ -458,5 +468,5 @@ index 72ba8b4..33185bf 100644
C_SRCS = \
--
1.9.1
2.19.1

View File

@ -1,28 +0,0 @@
From 759be4301daf53d4746e3444f285bbcec5dc5eb3 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 12 Oct 2018 13:27:00 +1100
Subject: [PATCH] kernel32: Disable export GetQueuedCompletionStatusEx
This is causing a regression with steam not being able to login.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45948
---
dlls/kernel32/kernel32.spec | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index e17ee97..0716854 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -804,7 +804,7 @@
@ stdcall GetProfileStringA(str str str ptr long)
@ stdcall GetProfileStringW(wstr wstr wstr ptr long)
@ stdcall GetQueuedCompletionStatus(long ptr ptr ptr long)
-@ stdcall GetQueuedCompletionStatusEx(ptr ptr long ptr long long)
+#@ stdcall GetQueuedCompletionStatusEx(ptr ptr long ptr long long)
@ stub -i386 GetSLCallbackTarget
@ stub -i386 GetSLCallbackTemplate
@ stdcall GetShortPathNameA(str ptr long)
--
1.9.1

View File

@ -1 +0,0 @@
Fixes: [45948] Disable export GetQueuedCompletionStatusEx to stop regression with Steam.

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "2ef62f90853d9903cdded2442e382b89a4c3a55f"
echo "63ef9854fb6fc91a8c956a9d91abc07e906a4a33"
}
# Show version information
@ -158,7 +158,6 @@ patch_enable_all ()
enable_iphlpapi_TCP_Table="$1"
enable_kernel32_CopyFileEx="$1"
enable_kernel32_Debugger="$1"
enable_kernel32_Disable_GetQueuedCompletionStatusEx="$1"
enable_kernel32_FindFirstFile="$1"
enable_kernel32_Job_Tests="$1"
enable_kernel32_K32GetPerformanceInfo="$1"
@ -639,9 +638,6 @@ patch_enable ()
kernel32-Debugger)
enable_kernel32_Debugger="$2"
;;
kernel32-Disable-GetQueuedCompletionStatusEx)
enable_kernel32_Disable_GetQueuedCompletionStatusEx="$2"
;;
kernel32-FindFirstFile)
enable_kernel32_FindFirstFile="$2"
;;
@ -3875,21 +3871,6 @@ if test "$enable_kernel32_Debugger" -eq 1; then
) >> "$patchlist"
fi
# Patchset kernel32-Disable-GetQueuedCompletionStatusEx
# |
# | This patchset fixes the following Wine bugs:
# | * [#45948] Disable export GetQueuedCompletionStatusEx to stop regression with Steam.
# |
# | Modified files:
# | * dlls/kernel32/kernel32.spec
# |
if test "$enable_kernel32_Disable_GetQueuedCompletionStatusEx" -eq 1; then
patch_apply kernel32-Disable-GetQueuedCompletionStatusEx/0001-kernel32-Disable-export-GetQueuedCompletionStatusEx.patch
(
printf '%s\n' '+ { "Alistair Leslie-Hughes", "kernel32: Disable export GetQueuedCompletionStatusEx.", 1 },';
) >> "$patchlist"
fi
# Patchset kernel32-FindFirstFile
# |
# | This patchset fixes the following Wine bugs: