Rebase against 15dd8e2b981ca32cae94409153627b3300bbeab8

This commit is contained in:
Alistair Leslie-Hughes
2019-08-06 08:51:47 +10:00
parent ad822b6405
commit 73f58bac41
10 changed files with 51 additions and 313 deletions

View File

@@ -1,4 +1,4 @@
From 4595b49c9c878e8a86fcd22dc82a9f5cfadfc7a8 Mon Sep 17 00:00:00 2001
From 0a94974134aa73fa03bd8d011cd84935439cbea4 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
@@ -29,7 +29,7 @@ Subject: [PATCH] d3dx9_36: add DXTn support
22 files changed, 118 insertions(+), 32 deletions(-)
diff --git a/dlls/d3dx9_24/Makefile.in b/dlls/d3dx9_24/Makefile.in
index 99db5f355..0c3fb8a90 100644
index 99db5f3550e..0c3fb8a9048 100644
--- a/dlls/d3dx9_24/Makefile.in
+++ b/dlls/d3dx9_24/Makefile.in
@@ -1,6 +1,6 @@
@@ -41,7 +41,7 @@ index 99db5f355..0c3fb8a90 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_25/Makefile.in b/dlls/d3dx9_25/Makefile.in
index 9e54aba2c..4419b18b8 100644
index 9e54aba2cf2..4419b18b865 100644
--- a/dlls/d3dx9_25/Makefile.in
+++ b/dlls/d3dx9_25/Makefile.in
@@ -1,6 +1,6 @@
@@ -53,7 +53,7 @@ index 9e54aba2c..4419b18b8 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_26/Makefile.in b/dlls/d3dx9_26/Makefile.in
index 104f7c19b..cfc9711ef 100644
index 104f7c19b0e..cfc9711ef94 100644
--- a/dlls/d3dx9_26/Makefile.in
+++ b/dlls/d3dx9_26/Makefile.in
@@ -1,6 +1,6 @@
@@ -65,7 +65,7 @@ index 104f7c19b..cfc9711ef 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_27/Makefile.in b/dlls/d3dx9_27/Makefile.in
index db04c8310..d598c9bbf 100644
index db04c8310b3..d598c9bbff5 100644
--- a/dlls/d3dx9_27/Makefile.in
+++ b/dlls/d3dx9_27/Makefile.in
@@ -1,6 +1,6 @@
@@ -77,7 +77,7 @@ index db04c8310..d598c9bbf 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_28/Makefile.in b/dlls/d3dx9_28/Makefile.in
index 8a2b9c690..8e9979092 100644
index 8a2b9c6909a..8e997909280 100644
--- a/dlls/d3dx9_28/Makefile.in
+++ b/dlls/d3dx9_28/Makefile.in
@@ -1,6 +1,6 @@
@@ -89,7 +89,7 @@ index 8a2b9c690..8e9979092 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_29/Makefile.in b/dlls/d3dx9_29/Makefile.in
index 6e1f45c02..efe538fde 100644
index 6e1f45c0299..efe538fdee2 100644
--- a/dlls/d3dx9_29/Makefile.in
+++ b/dlls/d3dx9_29/Makefile.in
@@ -1,6 +1,6 @@
@@ -101,7 +101,7 @@ index 6e1f45c02..efe538fde 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_30/Makefile.in b/dlls/d3dx9_30/Makefile.in
index 092a6b154..4a1ee6304 100644
index 092a6b154ee..4a1ee630414 100644
--- a/dlls/d3dx9_30/Makefile.in
+++ b/dlls/d3dx9_30/Makefile.in
@@ -1,6 +1,6 @@
@@ -113,7 +113,7 @@ index 092a6b154..4a1ee6304 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_31/Makefile.in b/dlls/d3dx9_31/Makefile.in
index 48c67e6e0..dcbb7a01b 100644
index 48c67e6e063..dcbb7a01b6d 100644
--- a/dlls/d3dx9_31/Makefile.in
+++ b/dlls/d3dx9_31/Makefile.in
@@ -1,6 +1,6 @@
@@ -125,7 +125,7 @@ index 48c67e6e0..dcbb7a01b 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_32/Makefile.in b/dlls/d3dx9_32/Makefile.in
index d51d6a0db..fb89ea7c2 100644
index d51d6a0db4a..fb89ea7c224 100644
--- a/dlls/d3dx9_32/Makefile.in
+++ b/dlls/d3dx9_32/Makefile.in
@@ -1,6 +1,6 @@
@@ -137,7 +137,7 @@ index d51d6a0db..fb89ea7c2 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_33/Makefile.in b/dlls/d3dx9_33/Makefile.in
index 52cdde13a..487255e43 100644
index 52cdde13ad3..487255e43b0 100644
--- a/dlls/d3dx9_33/Makefile.in
+++ b/dlls/d3dx9_33/Makefile.in
@@ -1,6 +1,6 @@
@@ -149,7 +149,7 @@ index 52cdde13a..487255e43 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_34/Makefile.in b/dlls/d3dx9_34/Makefile.in
index 37f431228..9b0b500f7 100644
index 37f431228f8..9b0b500f742 100644
--- a/dlls/d3dx9_34/Makefile.in
+++ b/dlls/d3dx9_34/Makefile.in
@@ -1,6 +1,6 @@
@@ -161,7 +161,7 @@ index 37f431228..9b0b500f7 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_35/Makefile.in b/dlls/d3dx9_35/Makefile.in
index 4441b5f6e..ac4291359 100644
index 4441b5f6e79..ac42913598e 100644
--- a/dlls/d3dx9_35/Makefile.in
+++ b/dlls/d3dx9_35/Makefile.in
@@ -1,6 +1,6 @@
@@ -173,7 +173,7 @@ index 4441b5f6e..ac4291359 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_36/Makefile.in b/dlls/d3dx9_36/Makefile.in
index 5e76ab7f5..c95dc0707 100644
index 5e76ab7f5c9..c95dc070767 100644
--- a/dlls/d3dx9_36/Makefile.in
+++ b/dlls/d3dx9_36/Makefile.in
@@ -1,7 +1,7 @@
@@ -186,7 +186,7 @@ index 5e76ab7f5..c95dc0707 100644
EXTRADLLFLAGS = -mno-cygwin
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 57d9818cd..f05bad5ab 100644
index 9871d211a7c..0a40cd24fa6 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -25,6 +25,8 @@
@@ -198,7 +198,7 @@ index 57d9818cd..f05bad5ab 100644
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT, IWICImagingFactory**);
@@ -1772,6 +1774,24 @@ void point_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slic
@@ -1900,6 +1902,24 @@ void point_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slic
}
}
@@ -223,7 +223,7 @@ index 57d9818cd..f05bad5ab 100644
/************************************************************
* D3DXLoadSurfaceFromMemory
*
@@ -1811,10 +1831,12 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1939,10 +1959,12 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
{
const struct pixel_format_desc *srcformatdesc, *destformatdesc;
IDirect3DSurface9 *surface;
@@ -237,7 +237,7 @@ index 57d9818cd..f05bad5ab 100644
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,
@@ -1895,18 +1917,65 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -2023,18 +2045,65 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
}
else /* Stretching or format conversion. */
{
@@ -252,7 +252,7 @@ index 57d9818cd..f05bad5ab 100644
+ (!post_convert && !is_conversion_to_supported(destformatdesc)))
{
FIXME("Unsupported format conversion %#x -> %#x.\n", src_format, surfdesc.Format);
unlock_surface(dst_surface, &lockrect, surface, FALSE);
unlock_surface(dst_surface, dst_rect, surface, FALSE);
return E_NOTIMPL;
}
@@ -307,7 +307,7 @@ index 57d9818cd..f05bad5ab 100644
}
else /* if ((filter & 0xf) == D3DX_FILTER_POINT) */
{
@@ -1915,12 +1984,29 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -2043,12 +2112,29 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
/* Always apply a point filter until D3DX_FILTER_LINEAR,
* D3DX_FILTER_TRIANGLE and D3DX_FILTER_BOX are implemented. */
@@ -328,23 +328,23 @@ index 57d9818cd..f05bad5ab 100644
}
}
- return unlock_surface(dst_surface, &lockrect, surface, TRUE);
- return unlock_surface(dst_surface, dst_rect, surface, TRUE);
+done:
+ if (pre_convert)
+ HeapFree(GetProcessHeap(), 0, tmp_src_memory);
+ if (post_convert)
+ HeapFree(GetProcessHeap(), 0, tmp_dst_memory);
+
+ unlock_surface(dst_surface, &lockrect, surface, TRUE);
+ unlock_surface(dst_surface, dst_rect, surface, TRUE);
+ return hr;
}
/************************************************************
diff --git a/dlls/d3dx9_36/tests/surface.c b/dlls/d3dx9_36/tests/surface.c
index 56b79d80c..8614cec4c 100644
index 4a10492a08f..d59ff028ace 100644
--- a/dlls/d3dx9_36/tests/surface.c
+++ b/dlls/d3dx9_36/tests/surface.c
@@ -1225,7 +1225,7 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
@@ -1242,7 +1242,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);
@@ -353,7 +353,7 @@ index 56b79d80c..8614cec4c 100644
check_release((IUnknown*)newsurf, 1);
check_release((IUnknown*)tex, 0);
}
@@ -1251,7 +1251,7 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
@@ -1268,7 +1268,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);
@@ -362,7 +362,7 @@ index 56b79d80c..8614cec4c 100644
check_release((IUnknown*)newsurf, 1);
check_release((IUnknown*)tex, 0);
}
@@ -1264,10 +1264,10 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
@@ -1281,10 +1281,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);
@@ -376,7 +376,7 @@ index 56b79d80c..8614cec4c 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 ea0a04807..a710cef03 100644
index ea0a04807b4..a710cef030a 100644
--- a/dlls/d3dx9_37/Makefile.in
+++ b/dlls/d3dx9_37/Makefile.in
@@ -1,6 +1,6 @@
@@ -388,7 +388,7 @@ index ea0a04807..a710cef03 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_38/Makefile.in b/dlls/d3dx9_38/Makefile.in
index af62f823d..543a482af 100644
index af62f823d5e..543a482afed 100644
--- a/dlls/d3dx9_38/Makefile.in
+++ b/dlls/d3dx9_38/Makefile.in
@@ -1,6 +1,6 @@
@@ -400,7 +400,7 @@ index af62f823d..543a482af 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_39/Makefile.in b/dlls/d3dx9_39/Makefile.in
index ab71712d4..cacb0c00d 100644
index ab71712d4c6..cacb0c00dfa 100644
--- a/dlls/d3dx9_39/Makefile.in
+++ b/dlls/d3dx9_39/Makefile.in
@@ -1,6 +1,6 @@
@@ -412,7 +412,7 @@ index ab71712d4..cacb0c00d 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_40/Makefile.in b/dlls/d3dx9_40/Makefile.in
index 76428d2fd..a58a99ef2 100644
index 76428d2fd84..a58a99ef227 100644
--- a/dlls/d3dx9_40/Makefile.in
+++ b/dlls/d3dx9_40/Makefile.in
@@ -1,6 +1,6 @@
@@ -424,7 +424,7 @@ index 76428d2fd..a58a99ef2 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_41/Makefile.in b/dlls/d3dx9_41/Makefile.in
index d3647f895..93fb6b508 100644
index d3647f895d6..93fb6b508ac 100644
--- a/dlls/d3dx9_41/Makefile.in
+++ b/dlls/d3dx9_41/Makefile.in
@@ -1,6 +1,6 @@
@@ -436,7 +436,7 @@ index d3647f895..93fb6b508 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_42/Makefile.in b/dlls/d3dx9_42/Makefile.in
index 88bd746da..197d0d45b 100644
index 88bd746dae1..197d0d45be2 100644
--- a/dlls/d3dx9_42/Makefile.in
+++ b/dlls/d3dx9_42/Makefile.in
@@ -1,6 +1,6 @@
@@ -448,7 +448,7 @@ index 88bd746da..197d0d45b 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_43/Makefile.in b/dlls/d3dx9_43/Makefile.in
index 2f6b8634a..17895954a 100644
index 2f6b8634ab8..17895954a85 100644
--- a/dlls/d3dx9_43/Makefile.in
+++ b/dlls/d3dx9_43/Makefile.in
@@ -1,6 +1,6 @@
@@ -460,5 +460,5 @@ index 2f6b8634a..17895954a 100644
DELAYIMPORTS = windowscodecs
--
2.21.0
2.17.1