Rebase against 1d9a3f6d12322891a2af4aadd66a92ea66479233.

This commit is contained in:
Zebediah Figura 2019-05-30 22:27:25 -05:00
parent cd1862609a
commit 197e08b441
9 changed files with 213 additions and 289 deletions

View File

@ -1,4 +1,4 @@
From fb8bd7d53bea2e6deb38994741d884eb10bc31ad Mon Sep 17 00:00:00 2001
From 27517cacf7df657e32e7ca7068c3e86723cb4a3c Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sat, 13 Feb 2016 15:29:37 +0100
Subject: [PATCH] d3dx9_36: Implement D3DXDisassembleShader. (v2)
@ -6,11 +6,11 @@ Subject: [PATCH] d3dx9_36: Implement D3DXDisassembleShader. (v2)
Changes in v2 (by Christian Costa):
* More generic code for D3DXDisassembleShader.
---
dlls/d3dx9_36/shader.c | 330 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 328 insertions(+), 2 deletions(-)
dlls/d3dx9_36/shader.c | 331 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 328 insertions(+), 3 deletions(-)
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index f372494..01ed335 100644
index c59fc791e..79d47b95c 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -1,6 +1,7 @@
@ -21,15 +21,16 @@ index f372494..01ed335 100644
* Copyright 2011 Travis Athougies
*
* This library is free software; you can redistribute it and/or
@@ -20,6 +21,7 @@
@@ -18,7 +19,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
-
+#include <stdio.h>
#include "d3dx9_private.h"
#include "d3dcommon.h"
@@ -2144,10 +2146,334 @@ HRESULT WINAPI D3DXGetShaderSamplers(const DWORD *byte_code, const char **sample
#include "d3dcompiler.h"
@@ -2138,10 +2139,334 @@ HRESULT WINAPI D3DXGetShaderSamplers(const DWORD *byte_code, const char **sample
return D3D_OK;
}
@ -367,5 +368,5 @@ index f372494..01ed335 100644
struct d3dx9_texture_shader
--
1.9.1
2.21.0

View File

@ -1,4 +1,4 @@
From 1c46cc796a20b263f708aebf5428e59408fea200 Mon Sep 17 00:00:00 2001
From 4595b49c9c878e8a86fcd22dc82a9f5cfadfc7a8 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 | 102 ++++++++++++++++++++++++++++++++++++++----
dlls/d3dx9_36/tests/surface.c | 8 ++--
dlls/d3dx9_36/surface.c | 102 +++++++++++++++++++++++++++++++---
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 +-
@ -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 02e64d3..0484639 100644
index 99db5f355..0c3fb8a90 100644
--- a/dlls/d3dx9_24/Makefile.in
+++ b/dlls/d3dx9_24/Makefile.in
@@ -1,6 +1,6 @@
@ -41,7 +41,7 @@ index 02e64d3..0484639 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_25/Makefile.in b/dlls/d3dx9_25/Makefile.in
index 57ed1da..3461967 100644
index 9e54aba2c..4419b18b8 100644
--- a/dlls/d3dx9_25/Makefile.in
+++ b/dlls/d3dx9_25/Makefile.in
@@ -1,6 +1,6 @@
@ -53,7 +53,7 @@ index 57ed1da..3461967 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_26/Makefile.in b/dlls/d3dx9_26/Makefile.in
index 04d9ba4..291daf3 100644
index 104f7c19b..cfc9711ef 100644
--- a/dlls/d3dx9_26/Makefile.in
+++ b/dlls/d3dx9_26/Makefile.in
@@ -1,6 +1,6 @@
@ -65,7 +65,7 @@ index 04d9ba4..291daf3 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_27/Makefile.in b/dlls/d3dx9_27/Makefile.in
index faec9b2..5a52b60 100644
index db04c8310..d598c9bbf 100644
--- a/dlls/d3dx9_27/Makefile.in
+++ b/dlls/d3dx9_27/Makefile.in
@@ -1,6 +1,6 @@
@ -77,7 +77,7 @@ index faec9b2..5a52b60 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_28/Makefile.in b/dlls/d3dx9_28/Makefile.in
index b8aad93..8eecbc0 100644
index 8a2b9c690..8e9979092 100644
--- a/dlls/d3dx9_28/Makefile.in
+++ b/dlls/d3dx9_28/Makefile.in
@@ -1,6 +1,6 @@
@ -89,7 +89,7 @@ index b8aad93..8eecbc0 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_29/Makefile.in b/dlls/d3dx9_29/Makefile.in
index 29c76c4..0299369 100644
index 6e1f45c02..efe538fde 100644
--- a/dlls/d3dx9_29/Makefile.in
+++ b/dlls/d3dx9_29/Makefile.in
@@ -1,6 +1,6 @@
@ -101,7 +101,7 @@ index 29c76c4..0299369 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_30/Makefile.in b/dlls/d3dx9_30/Makefile.in
index 810edc9..7bdc074 100644
index 092a6b154..4a1ee6304 100644
--- a/dlls/d3dx9_30/Makefile.in
+++ b/dlls/d3dx9_30/Makefile.in
@@ -1,6 +1,6 @@
@ -113,7 +113,7 @@ index 810edc9..7bdc074 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_31/Makefile.in b/dlls/d3dx9_31/Makefile.in
index fce2b53..0ef9c91 100644
index 48c67e6e0..dcbb7a01b 100644
--- a/dlls/d3dx9_31/Makefile.in
+++ b/dlls/d3dx9_31/Makefile.in
@@ -1,6 +1,6 @@
@ -125,7 +125,7 @@ index fce2b53..0ef9c91 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_32/Makefile.in b/dlls/d3dx9_32/Makefile.in
index ad53b26..25e2a1c 100644
index d51d6a0db..fb89ea7c2 100644
--- a/dlls/d3dx9_32/Makefile.in
+++ b/dlls/d3dx9_32/Makefile.in
@@ -1,6 +1,6 @@
@ -137,7 +137,7 @@ index ad53b26..25e2a1c 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_33/Makefile.in b/dlls/d3dx9_33/Makefile.in
index 318ddce..a6ec6db 100644
index 52cdde13a..487255e43 100644
--- a/dlls/d3dx9_33/Makefile.in
+++ b/dlls/d3dx9_33/Makefile.in
@@ -1,6 +1,6 @@
@ -149,7 +149,7 @@ index 318ddce..a6ec6db 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_34/Makefile.in b/dlls/d3dx9_34/Makefile.in
index 451a371..ff79b58 100644
index 37f431228..9b0b500f7 100644
--- a/dlls/d3dx9_34/Makefile.in
+++ b/dlls/d3dx9_34/Makefile.in
@@ -1,6 +1,6 @@
@ -161,7 +161,7 @@ index 451a371..ff79b58 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_35/Makefile.in b/dlls/d3dx9_35/Makefile.in
index 978d0b0..aa8ea65 100644
index 4441b5f6e..ac4291359 100644
--- a/dlls/d3dx9_35/Makefile.in
+++ b/dlls/d3dx9_35/Makefile.in
@@ -1,6 +1,6 @@
@ -173,7 +173,7 @@ index 978d0b0..aa8ea65 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_36/Makefile.in b/dlls/d3dx9_36/Makefile.in
index 847edec..1427571 100644
index 5e76ab7f5..c95dc0707 100644
--- a/dlls/d3dx9_36/Makefile.in
+++ b/dlls/d3dx9_36/Makefile.in
@@ -1,7 +1,7 @@
@ -184,12 +184,12 @@ index 847edec..1427571 100644
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
DELAYIMPORTS = windowscodecs
C_SRCS = \
EXTRADLLFLAGS = -mno-cygwin
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index d236feb..3c308d3 100644
index 57d9818cd..f05bad5ab 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -27,6 +27,8 @@
@@ -25,6 +25,8 @@
#include "ole2.h"
#include "wincodec.h"
@ -198,12 +198,12 @@ index d236feb..3c308d3 100644
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT, IWICImagingFactory**);
@@ -1876,6 +1878,24 @@ void point_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slic
@@ -1772,6 +1774,24 @@ void point_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slic
}
}
+typedef BOOL (*dxtn_conversion_func)(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h);
+typedef BOOL (__cdecl *dxtn_conversion_func)(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h);
+
+static dxtn_conversion_func get_dxtn_conversion_func(D3DFORMAT format, BOOL encode)
+{
@ -223,7 +223,7 @@ index d236feb..3c308d3 100644
/************************************************************
* D3DXLoadSurfaceFromMemory
*
@@ -1915,10 +1935,12 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1811,10 +1831,12 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
{
const struct pixel_format_desc *srcformatdesc, *destformatdesc;
IDirect3DSurface9 *surface;
@ -237,7 +237,7 @@ index d236feb..3c308d3 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,
@@ -1999,18 +2021,65 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1895,18 +1917,65 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
}
else /* Stretching or format conversion. */
{
@ -307,7 +307,7 @@ index d236feb..3c308d3 100644
}
else /* if ((filter & 0xf) == D3DX_FILTER_POINT) */
{
@@ -2019,12 +2088,29 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1915,12 +1984,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. */
@ -341,10 +341,10 @@ index d236feb..3c308d3 100644
/************************************************************
diff --git a/dlls/d3dx9_36/tests/surface.c b/dlls/d3dx9_36/tests/surface.c
index 2c83dc2..95b64a0 100644
index 56b79d80c..8614cec4c 100644
--- a/dlls/d3dx9_36/tests/surface.c
+++ b/dlls/d3dx9_36/tests/surface.c
@@ -1224,7 +1224,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);
@ -353,7 +353,7 @@ index 2c83dc2..95b64a0 100644
check_release((IUnknown*)newsurf, 1);
check_release((IUnknown*)tex, 0);
}
@@ -1250,7 +1250,7 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
@@ -1251,7 +1251,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 2c83dc2..95b64a0 100644
check_release((IUnknown*)newsurf, 1);
check_release((IUnknown*)tex, 0);
}
@@ -1263,10 +1263,10 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
@@ -1264,10 +1264,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 2c83dc2..95b64a0 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 a05068c..e5b29d3 100644
index ea0a04807..a710cef03 100644
--- a/dlls/d3dx9_37/Makefile.in
+++ b/dlls/d3dx9_37/Makefile.in
@@ -1,6 +1,6 @@
@ -388,7 +388,7 @@ index a05068c..e5b29d3 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_38/Makefile.in b/dlls/d3dx9_38/Makefile.in
index b092e62..0a37204 100644
index af62f823d..543a482af 100644
--- a/dlls/d3dx9_38/Makefile.in
+++ b/dlls/d3dx9_38/Makefile.in
@@ -1,6 +1,6 @@
@ -400,7 +400,7 @@ index b092e62..0a37204 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_39/Makefile.in b/dlls/d3dx9_39/Makefile.in
index 4d17120..d0e2cc9 100644
index ab71712d4..cacb0c00d 100644
--- a/dlls/d3dx9_39/Makefile.in
+++ b/dlls/d3dx9_39/Makefile.in
@@ -1,6 +1,6 @@
@ -412,7 +412,7 @@ index 4d17120..d0e2cc9 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_40/Makefile.in b/dlls/d3dx9_40/Makefile.in
index 59f6f3d..0a0d36b 100644
index 76428d2fd..a58a99ef2 100644
--- a/dlls/d3dx9_40/Makefile.in
+++ b/dlls/d3dx9_40/Makefile.in
@@ -1,6 +1,6 @@
@ -424,7 +424,7 @@ index 59f6f3d..0a0d36b 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_41/Makefile.in b/dlls/d3dx9_41/Makefile.in
index f18443a..f477a20 100644
index d3647f895..93fb6b508 100644
--- a/dlls/d3dx9_41/Makefile.in
+++ b/dlls/d3dx9_41/Makefile.in
@@ -1,6 +1,6 @@
@ -436,7 +436,7 @@ index f18443a..f477a20 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_42/Makefile.in b/dlls/d3dx9_42/Makefile.in
index cb142b7..4d93a84 100644
index 88bd746da..197d0d45b 100644
--- a/dlls/d3dx9_42/Makefile.in
+++ b/dlls/d3dx9_42/Makefile.in
@@ -1,6 +1,6 @@
@ -448,7 +448,7 @@ index cb142b7..4d93a84 100644
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_43/Makefile.in b/dlls/d3dx9_43/Makefile.in
index 3e6111a..5812d03 100644
index 2f6b8634a..17895954a 100644
--- a/dlls/d3dx9_43/Makefile.in
+++ b/dlls/d3dx9_43/Makefile.in
@@ -1,6 +1,6 @@
@ -460,5 +460,5 @@ index 3e6111a..5812d03 100644
DELAYIMPORTS = windowscodecs
--
1.9.1
2.21.0

View File

@ -3,3 +3,7 @@ Fixes: [33768] Fix texture corruption in CSI: Fatal Conspiracy
Fixes: [37391] Exception during start of fr-043 caused by missing DXTn support
Fixes: [34692] Fix wrong colors in Wolfenstein (2009)
Fixes: [24983] Fix crash in Space Rangers2 caused by missing DXTn support
# 9fb5745a7997bbfe033779650f1193d85369cef2 broke this, in a way that's not
# trivial to fix. Guess we'll wait to see what Alexandre has in mind for the
# other D3D DLLs.
Disabled: true

View File

@ -1,7 +1,7 @@
From ed20373cc262b783cd7e04641618a732f33e8a51 Mon Sep 17 00:00:00 2001
From d407857d923dd08446cf38f83549c0b76442cc81 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Thu, 7 Jun 2018 20:09:59 -0500
Subject: [PATCH 02/83] server: Create server objects for eventfd-based
Subject: [PATCH] server: Create server objects for eventfd-based
synchronization objects.
---
@ -12,7 +12,7 @@ Subject: [PATCH 02/83] server: Create server objects for eventfd-based
create mode 100644 server/esync.c
diff --git a/server/Makefile.in b/server/Makefile.in
index d2715e8cb..4f8f10cd5 100644
index 60ecca706..2c895bcec 100644
--- a/server/Makefile.in
+++ b/server/Makefile.in
@@ -11,6 +11,7 @@ C_SRCS = \
@ -167,12 +167,12 @@ index 000000000..147fb7724
+ if (root) release_object( root );
+}
diff --git a/server/protocol.def b/server/protocol.def
index c3751e609..a56f098ab 100644
index 007ef1f67..cd97ba008 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -4041,3 +4041,13 @@ struct handle_info
@REQ(resume_process)
obj_handle_t handle; /* process handle */
@@ -4021,3 +4021,13 @@ struct handle_info
unsigned int threads; /* number of threads */
unsigned int handles; /* number of handles */
@END
+
+/* Create a new eventfd-based synchronization object */
@ -185,5 +185,5 @@ index c3751e609..a56f098ab 100644
+ obj_handle_t handle; /* handle to the object */
+@END
--
2.20.1
2.21.0

View File

@ -9,3 +9,4 @@ Depends: server-Realtime_Priority
Depends: ntdll-User_Shared_Data
Depends: advapi32-Token_Integrity_Level
Depends: ntdll-Junction_Points
Depends: kernel32-K32GetPerformanceInfo

View File

@ -1,46 +1,37 @@
From 8bf339727f8c444f72a9b0c26d08a80f227e6b9a Mon Sep 17 00:00:00 2001
From 5cf696c2cb00fd040ddba99ac291806e5ce3c9bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 19 Feb 2017 05:38:40 +0100
Subject: [PATCH] kernel32: Make K32GetPerformanceInfo faster.
---
dlls/kernel32/cpu.c | 68 +++++++++++++++++----------------------------
server/process.c | 18 ++++++++++++
server/protocol.def | 8 ++++++
3 files changed, 51 insertions(+), 43 deletions(-)
dlls/kernel32/cpu.c | 32 ++++++++------------------------
server/process.c | 18 ++++++++++++++++++
server/protocol.def | 8 ++++++++
3 files changed, 34 insertions(+), 24 deletions(-)
diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c
index 9445d0bc056..6e198badb66 100644
index 7668a10ea..96180bed4 100644
--- a/dlls/kernel32/cpu.c
+++ b/dlls/kernel32/cpu.c
@@ -209,14 +209,8 @@ BOOL WINAPI IsProcessorFeaturePresent ( DWORD feature )
*/
BOOL WINAPI K32GetPerformanceInfo(PPERFORMANCE_INFORMATION info, DWORD size)
@@ -211,7 +211,6 @@ BOOL WINAPI K32GetPerformanceInfo(PPERFORMANCE_INFORMATION info, DWORD size)
{
- union
- {
- SYSTEM_PERFORMANCE_INFORMATION performance;
- SYSTEM_PROCESS_INFORMATION process;
- SYSTEM_BASIC_INFORMATION basic;
- } *sysinfo;
- SYSTEM_PROCESS_INFORMATION *spi;
- DWORD process_info_size;
+ SYSTEM_PERFORMANCE_INFORMATION performance;
+ SYSTEM_BASIC_INFORMATION basic;
SYSTEM_PERFORMANCE_INFORMATION perf;
SYSTEM_BASIC_INFORMATION basic;
- SYSTEM_PROCESS_INFORMATION *process, *spi;
DWORD info_size;
NTSTATUS status;
TRACE( "(%p, %d)\n", info, size );
@@ -230,53 +224,41 @@ BOOL WINAPI K32GetPerformanceInfo(PPERFORMANCE_INFORMATION info, DWORD size)
memset( info, 0, sizeof(*info) );
info->cb = sizeof(*info);
@@ -240,34 +239,19 @@ BOOL WINAPI K32GetPerformanceInfo(PPERFORMANCE_INFORMATION info, DWORD size)
info->KernelNonpaged = perf.NonPagedPoolUsage;
info->PageSize = basic.PageSize;
- /* fields from SYSTEM_PROCESS_INFORMATION */
- NtQuerySystemInformation( SystemProcessInformation, NULL, 0, &process_info_size );
- NtQuerySystemInformation( SystemProcessInformation, NULL, 0, &info_size );
- for (;;)
+ SERVER_START_REQ( get_system_info )
{
- sysinfo = HeapAlloc( GetProcessHeap(), 0, max(process_info_size, sizeof(*sysinfo)) );
- if (!sysinfo)
- process = HeapAlloc( GetProcessHeap(), 0, info_size );
- if (!process)
+ status = wine_server_call( req );
+ if (!status)
{
@ -50,68 +41,34 @@ index 9445d0bc056..6e198badb66 100644
+ info->HandleCount = reply->handles;
+ info->ThreadCount = reply->threads;
}
- status = NtQuerySystemInformation( SystemProcessInformation, &sysinfo->process,
- process_info_size, &process_info_size );
- status = NtQuerySystemInformation( SystemProcessInformation, process, info_size, &info_size );
- if (!status) break;
- HeapFree( GetProcessHeap(), 0, process );
- if (status != STATUS_INFO_LENGTH_MISMATCH)
- goto err;
- HeapFree( GetProcessHeap(), 0, sysinfo );
- }
- for (spi = &sysinfo->process;; spi = (SYSTEM_PROCESS_INFORMATION *)(((PCHAR)spi) + spi->NextEntryOffset))
}
+ SERVER_END_REQ;
- info->HandleCount = info->ProcessCount = info->ThreadCount = 0;
- spi = process;
- for (;;)
- {
- info->ProcessCount++;
- info->HandleCount += spi->HandleCount;
- info->ThreadCount += spi->dwThreadCount;
- if (spi->NextEntryOffset == 0) break;
}
+ SERVER_END_REQ;
+
- spi = (SYSTEM_PROCESS_INFORMATION *)((char *)spi + spi->NextEntryOffset);
- }
- HeapFree( GetProcessHeap(), 0, process );
+ if (status) goto err;
/* fields from SYSTEM_PERFORMANCE_INFORMATION */
- status = NtQuerySystemInformation( SystemPerformanceInformation, &sysinfo->performance,
- sizeof(sysinfo->performance), NULL );
+ status = NtQuerySystemInformation( SystemPerformanceInformation, &performance,
+ sizeof(performance), NULL );
if (status) goto err;
- info->CommitTotal = sysinfo->performance.TotalCommittedPages;
- info->CommitLimit = sysinfo->performance.TotalCommitLimit;
- info->CommitPeak = sysinfo->performance.PeakCommitment;
- info->PhysicalAvailable = sysinfo->performance.AvailablePages;
- info->KernelTotal = sysinfo->performance.PagedPoolUsage +
- sysinfo->performance.NonPagedPoolUsage;
- info->KernelPaged = sysinfo->performance.PagedPoolUsage;
- info->KernelNonpaged = sysinfo->performance.NonPagedPoolUsage;
+ info->CommitTotal = performance.TotalCommittedPages;
+ info->CommitLimit = performance.TotalCommitLimit;
+ info->CommitPeak = performance.PeakCommitment;
+ info->PhysicalAvailable = performance.AvailablePages;
+ info->KernelTotal = performance.PagedPoolUsage +
+ performance.NonPagedPoolUsage;
+ info->KernelPaged = performance.PagedPoolUsage;
+ info->KernelNonpaged = performance.NonPagedPoolUsage;
/* fields from SYSTEM_BASIC_INFORMATION */
- status = NtQuerySystemInformation( SystemBasicInformation, &sysinfo->basic,
- sizeof(sysinfo->basic), NULL );
+ status = NtQuerySystemInformation( SystemBasicInformation, &basic,
+ sizeof(basic), NULL );
if (status) goto err;
- info->PhysicalTotal = sysinfo->basic.MmNumberOfPhysicalPages;
- info->PageSize = sysinfo->basic.PageSize;
+ info->PhysicalTotal = basic.MmNumberOfPhysicalPages;
+ info->PageSize = basic.PageSize;
return TRUE;
err:
- HeapFree( GetProcessHeap(), 0, sysinfo );
if (status)
{
SetLastError( RtlNtStatusToDosError( status ) );
diff --git a/server/process.c b/server/process.c
index 6690b9d2f26..f0b44a8c6f4 100644
index beaa68603..2dacc4d5c 100644
--- a/server/process.c
+++ b/server/process.c
@@ -1852,3 +1852,21 @@ DECL_HANDLER(resume_process)
@@ -1799,3 +1799,21 @@ DECL_HANDLER(resume_process)
release_object( process );
}
}
@ -134,13 +91,13 @@ index 6690b9d2f26..f0b44a8c6f4 100644
+ }
+}
diff --git a/server/protocol.def b/server/protocol.def
index dc5186c877b..3ed38245d4a 100644
index e450388c1..1c1459f3c 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -4042,3 +4042,11 @@ enum esync_type
ESYNC_MANUAL_SERVER,
ESYNC_QUEUE,
};
@@ -3946,3 +3946,11 @@ struct handle_info
@REQ(resume_process)
obj_handle_t handle; /* process handle */
@END
+
+/* Return system information values */
+@REQ(get_system_info)
@ -150,5 +107,5 @@ index dc5186c877b..3ed38245d4a 100644
+ unsigned int handles; /* number of handles */
+@END
--
2.20.1
2.21.0

View File

@ -1,19 +1,19 @@
From e4983ad839806d62c4fce982c5d5c24466adffa3 Mon Sep 17 00:00:00 2001
From 6416e68e4d81d9b37d24076d446115f08f99bf81 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 9 Mar 2017 16:27:23 +0100
Subject: [PATCH] ntdll: Fill process kernel and user time.
---
dlls/ntdll/nt.c | 6 +++-
dlls/ntdll/ntdll_misc.h | 5 +++
dlls/ntdll/thread.c | 84 ++++++++++++++++++++++++++++---------------------
3 files changed, 58 insertions(+), 37 deletions(-)
dlls/ntdll/nt.c | 6 ++-
dlls/ntdll/ntdll_misc.h | 4 ++
dlls/ntdll/thread.c | 84 +++++++++++++++++++++++------------------
3 files changed, 57 insertions(+), 37 deletions(-)
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c
index 4f1ff61..454f209 100644
index 2cd2ab327..c3250746b 100644
--- a/dlls/ntdll/nt.c
+++ b/dlls/ntdll/nt.c
@@ -2482,6 +2482,7 @@ NTSTATUS WINAPI NtQuerySystemInformation(
@@ -2384,6 +2384,7 @@ NTSTATUS WINAPI NtQuerySystemInformation(
{
SYSTEM_PROCESS_INFORMATION* spi = SystemInformation;
SYSTEM_PROCESS_INFORMATION* last = NULL;
@ -21,7 +21,7 @@ index 4f1ff61..454f209 100644
HANDLE hSnap = 0;
WCHAR procname[1024];
WCHAR* exename;
@@ -2519,7 +2520,7 @@ NTSTATUS WINAPI NtQuerySystemInformation(
@@ -2421,7 +2422,7 @@ NTSTATUS WINAPI NtQuerySystemInformation(
if (Length >= len + procstructlen)
{
@ -30,7 +30,7 @@ index 4f1ff61..454f209 100644
* vmCounters, ioCounters
*/
@@ -2537,6 +2538,9 @@ NTSTATUS WINAPI NtQuerySystemInformation(
@@ -2439,6 +2440,9 @@ NTSTATUS WINAPI NtQuerySystemInformation(
/* spi->ti will be set later on */
@ -41,10 +41,10 @@ index 4f1ff61..454f209 100644
len += procstructlen;
}
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index ff2bb82..38f7f23 100644
index 3463ebd38..78831cf37 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -268,6 +268,10 @@ extern SYSTEM_CPU_INFORMATION cpu_info DECLSPEC_HIDDEN;
@@ -265,6 +265,10 @@ extern SYSTEM_CPU_INFORMATION cpu_info DECLSPEC_HIDDEN;
NTSTATUS WINAPI RtlHashUnicodeString(PCUNICODE_STRING,BOOLEAN,ULONG,ULONG*);
void WINAPI LdrInitializeThunk(CONTEXT*,void**,ULONG_PTR,ULONG_PTR);
@ -55,14 +55,8 @@ index ff2bb82..38f7f23 100644
/* string functions */
int __cdecl NTDLL_tolower( int c );
int __cdecl _stricmp( LPCSTR str1, LPCSTR str2 );
@@ -275,4 +279,5 @@ int __cdecl _stricmp( LPCSTR str1, LPCSTR str2 );
/* time functions */
ULONGLONG WINAPI get_tick_count64( void );
#define NtGetTickCount get_tick_count64
+
#endif
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 70320af..8dac113 100644
index 70320afe7..8dac11393 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -149,6 +149,53 @@ static ULONG_PTR get_image_addr(void)
@ -164,5 +158,5 @@ index 70320af..8dac113 100644
/* get values for current process instead */
--
1.9.1
2.21.0

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "d535df42f665a097ec721b10fb49d7b18f899be9"
echo "1d9a3f6d12322891a2af4aadd66a92ea66479233"
}
# Show version information
@ -112,7 +112,6 @@ patch_enable_all ()
enable_d3dx9_36_D3DXSHProjectCubeMap="$1"
enable_d3dx9_36_D3DXStubs="$1"
enable_d3dx9_36_DDS="$1"
enable_d3dx9_36_DXTn="$1"
enable_d3dx9_36_DrawText="$1"
enable_d3dx9_36_Filter_Warnings="$1"
enable_d3dx9_36_Optimize_Inplace="$1"
@ -462,9 +461,6 @@ patch_enable ()
d3dx9_36-DDS)
enable_d3dx9_36_DDS="$2"
;;
d3dx9_36-DXTn)
enable_d3dx9_36_DXTn="$2"
;;
d3dx9_36-DrawText)
enable_d3dx9_36_DrawText="$2"
;;
@ -1641,6 +1637,13 @@ if test "$enable_wined3d_Indexed_Vertex_Blending" -eq 1; then
enable_wined3d_SWVP_shaders=1
fi
if test "$enable_wined3d_DXTn" -eq 1; then
if test "$enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM" -gt 1; then
abort "Patchset wined3d-WINED3DFMT_B8G8R8X8_UNORM disabled, but wined3d-DXTn depends on that."
fi
enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM=1
fi
if test "$enable_wineboot_ProxySettings" -eq 1; then
if test "$enable_wineboot_DriveSerial" -gt 1; then
abort "Patchset wineboot-DriveSerial disabled, but wineboot-ProxySettings depends on that."
@ -1843,6 +1846,9 @@ if test "$enable_eventfd_synchronization" -eq 1; then
if test "$enable_advapi32_Token_Integrity_Level" -gt 1; then
abort "Patchset advapi32-Token_Integrity_Level disabled, but eventfd_synchronization depends on that."
fi
if test "$enable_kernel32_K32GetPerformanceInfo" -gt 1; then
abort "Patchset kernel32-K32GetPerformanceInfo disabled, but eventfd_synchronization depends on that."
fi
if test "$enable_ntdll_Junction_Points" -gt 1; then
abort "Patchset ntdll-Junction_Points disabled, but eventfd_synchronization depends on that."
fi
@ -1865,6 +1871,7 @@ if test "$enable_eventfd_synchronization" -eq 1; then
abort "Patchset ws2_32-WSACleanup disabled, but eventfd_synchronization depends on that."
fi
enable_advapi32_Token_Integrity_Level=1
enable_kernel32_K32GetPerformanceInfo=1
enable_ntdll_Junction_Points=1
enable_ntdll_RtlCreateUserThread=1
enable_ntdll_SystemRoot_Symlink=1
@ -1967,20 +1974,6 @@ if test "$enable_ddraw_Texture_Wrong_Caps" -eq 1; then
enable_ddraw_Rendering_Targets=1
fi
if test "$enable_d3dx9_36_DXTn" -eq 1; then
if test "$enable_wined3d_DXTn" -gt 1; then
abort "Patchset wined3d-DXTn disabled, but d3dx9_36-DXTn depends on that."
fi
enable_wined3d_DXTn=1
fi
if test "$enable_wined3d_DXTn" -eq 1; then
if test "$enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM" -gt 1; then
abort "Patchset wined3d-WINED3DFMT_B8G8R8X8_UNORM disabled, but wined3d-DXTn depends on that."
fi
enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM=1
fi
if test "$enable_d3d11_Deferred_Context" -eq 1; then
if test "$enable_nvapi_Stub_DLL" -gt 1; then
abort "Patchset nvapi-Stub_DLL disabled, but d3d11-Deferred_Context depends on that."
@ -2740,68 +2733,6 @@ if test "$enable_d3dx9_36_DDS" -eq 1; then
) >> "$patchlist"
fi
# Patchset wined3d-WINED3DFMT_B8G8R8X8_UNORM
# |
# | This patchset fixes the following Wine bugs:
# | * [#44888] Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion
# |
# | Modified files:
# | * dlls/wined3d/surface.c
# |
if test "$enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM" -eq 1; then
patch_apply wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch
(
printf '%s\n' '+ { "Stanislav Zhukov", "wined3d: Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-DXTn
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * wined3d-WINED3DFMT_B8G8R8X8_UNORM
# |
# | This patchset fixes the following Wine bugs:
# | * [#25486] Lego Stunt Rally requires DXTn software de/encoding support
# | * [#29586] Tumblebugs 2 requires DXTn software encoding support
# | * [#17913] Port Royale doesn't display ocean correctly
# |
# | Modified files:
# | * dlls/wined3d/Makefile.in, dlls/wined3d/dxtn.c, dlls/wined3d/dxtn.h, dlls/wined3d/surface.c, dlls/wined3d/wined3d.spec,
# | include/wine/wined3d.h
# |
if test "$enable_wined3d_DXTn" -eq 1; then
patch_apply wined3d-DXTn/0001-wined3d-add-DXTn-support.patch
(
printf '%s\n' '+ { "Christian Costa", "wined3d: Add DXTn support.", 1 },';
) >> "$patchlist"
fi
# Patchset d3dx9_36-DXTn
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * wined3d-WINED3DFMT_B8G8R8X8_UNORM, wined3d-DXTn
# |
# | This patchset fixes the following Wine bugs:
# | * [#33768] Fix texture corruption in CSI: Fatal Conspiracy
# | * [#37391] Exception during start of fr-043 caused by missing DXTn support
# | * [#34692] Fix wrong colors in Wolfenstein (2009)
# | * [#24983] Fix crash in Space Rangers2 caused by missing DXTn support
# |
# | Modified files:
# | * dlls/d3dx9_24/Makefile.in, dlls/d3dx9_25/Makefile.in, dlls/d3dx9_26/Makefile.in, dlls/d3dx9_27/Makefile.in,
# | dlls/d3dx9_28/Makefile.in, dlls/d3dx9_29/Makefile.in, dlls/d3dx9_30/Makefile.in, dlls/d3dx9_31/Makefile.in,
# | dlls/d3dx9_32/Makefile.in, dlls/d3dx9_33/Makefile.in, dlls/d3dx9_34/Makefile.in, dlls/d3dx9_35/Makefile.in,
# | dlls/d3dx9_36/Makefile.in, dlls/d3dx9_36/surface.c, dlls/d3dx9_36/tests/surface.c, dlls/d3dx9_37/Makefile.in,
# | dlls/d3dx9_38/Makefile.in, dlls/d3dx9_39/Makefile.in, dlls/d3dx9_40/Makefile.in, dlls/d3dx9_41/Makefile.in,
# | dlls/d3dx9_42/Makefile.in, dlls/d3dx9_43/Makefile.in
# |
if test "$enable_d3dx9_36_DXTn" -eq 1; then
patch_apply d3dx9_36-DXTn/0001-d3dx9_36-Add-dxtn-support.patch
(
printf '%s\n' '+ { "Christian Costa", "d3dx9_36: Add DXTn support.", 1 },';
) >> "$patchlist"
fi
# Patchset d3dx9_36-DrawText
# |
# | This patchset fixes the following Wine bugs:
@ -3275,6 +3206,18 @@ if test "$enable_dxva2_Video_Decoder" -eq 1; then
) >> "$patchlist"
fi
# Patchset kernel32-K32GetPerformanceInfo
# |
# | Modified files:
# | * dlls/kernel32/cpu.c, server/process.c, server/protocol.def
# |
if test "$enable_kernel32_K32GetPerformanceInfo" -eq 1; then
patch_apply kernel32-K32GetPerformanceInfo/0001-kernel32-Make-K32GetPerformanceInfo-faster.patch
(
printf '%s\n' '+ { "Michael Müller", "kernel32: Make K32GetPerformanceInfo faster.", 1 },';
) >> "$patchlist"
fi
# Patchset ntdll-Junction_Points
# |
# | This patchset fixes the following Wine bugs:
@ -3631,10 +3574,10 @@ fi
# Patchset eventfd_synchronization
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * Staging, advapi32-CreateRestrictedToken, advapi32-Token_Integrity_Level, ntdll-Junction_Points, ntdll-ThreadTime, ntdll-
# | Hide_Wine_Exports, ntdll-User_Shared_Data, winebuild-Fake_Dlls, ntdll-RtlCreateUserThread, ntdll-Exception, ntdll-
# | SystemRoot_Symlink, server-Realtime_Priority, ntdll-Threading, ntdll-Wait_User_APC, server-Key_State, server-
# | PeekMessage, server-Signal_Thread, server-Shared_Memory, ws2_32-WSACleanup
# | * Staging, advapi32-CreateRestrictedToken, advapi32-Token_Integrity_Level, kernel32-K32GetPerformanceInfo, ntdll-
# | Junction_Points, ntdll-ThreadTime, ntdll-Hide_Wine_Exports, ntdll-User_Shared_Data, winebuild-Fake_Dlls, ntdll-
# | RtlCreateUserThread, ntdll-Exception, ntdll-SystemRoot_Symlink, server-Realtime_Priority, ntdll-Threading, ntdll-
# | Wait_User_APC, server-Key_State, server-PeekMessage, server-Signal_Thread, server-Shared_Memory, ws2_32-WSACleanup
# |
# | This patchset fixes the following Wine bugs:
# | * [#36692] Many multi-threaded applications have poor performance due to heavy use of synchronization primitives
@ -4179,18 +4122,6 @@ if test "$enable_kernel32_Job_Tests" -eq 1; then
) >> "$patchlist"
fi
# Patchset kernel32-K32GetPerformanceInfo
# |
# | Modified files:
# | * dlls/kernel32/cpu.c, server/process.c, server/protocol.def
# |
if test "$enable_kernel32_K32GetPerformanceInfo" -eq 1; then
patch_apply kernel32-K32GetPerformanceInfo/0001-kernel32-Make-K32GetPerformanceInfo-faster.patch
(
printf '%s\n' '+ { "Michael Müller", "kernel32: Make K32GetPerformanceInfo faster.", 1 },';
) >> "$patchlist"
fi
# Patchset kernel32-NeedCurrentDirectoryForExePath
# |
# | This patchset fixes the following Wine bugs:
@ -5370,10 +5301,11 @@ fi
# Patchset server-Desktop_Refcount
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * Staging, advapi32-CreateRestrictedToken, advapi32-Token_Integrity_Level, ntdll-Junction_Points, ntdll-ThreadTime, ntdll-
# | Hide_Wine_Exports, ntdll-User_Shared_Data, winebuild-Fake_Dlls, ntdll-RtlCreateUserThread, ntdll-Exception, ntdll-
# | SystemRoot_Symlink, server-Realtime_Priority, ntdll-Threading, ntdll-Wait_User_APC, server-Key_State, server-
# | PeekMessage, server-Signal_Thread, server-Shared_Memory, ws2_32-WSACleanup, eventfd_synchronization
# | * Staging, advapi32-CreateRestrictedToken, advapi32-Token_Integrity_Level, kernel32-K32GetPerformanceInfo, ntdll-
# | Junction_Points, ntdll-ThreadTime, ntdll-Hide_Wine_Exports, ntdll-User_Shared_Data, winebuild-Fake_Dlls, ntdll-
# | RtlCreateUserThread, ntdll-Exception, ntdll-SystemRoot_Symlink, server-Realtime_Priority, ntdll-Threading, ntdll-
# | Wait_User_APC, server-Key_State, server-PeekMessage, server-Signal_Thread, server-Shared_Memory, ws2_32-WSACleanup,
# | eventfd_synchronization
# |
# | This patchset fixes the following Wine bugs:
# | * [#46967] GOG Galaxy doesn't run in virtual desktop.
@ -6535,6 +6467,42 @@ if test "$enable_wined3d_CSMT_Main" -eq 1; then
) >> "$patchlist"
fi
# Patchset wined3d-WINED3DFMT_B8G8R8X8_UNORM
# |
# | This patchset fixes the following Wine bugs:
# | * [#44888] Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion
# |
# | Modified files:
# | * dlls/wined3d/surface.c
# |
if test "$enable_wined3d_WINED3DFMT_B8G8R8X8_UNORM" -eq 1; then
patch_apply wined3d-WINED3DFMT_B8G8R8X8_UNORM/0001-wined3d-Implement-WINED3DFMT_B8G8R8X8_UNORM-to-WINED.patch
(
printf '%s\n' '+ { "Stanislav Zhukov", "wined3d: Implement WINED3DFMT_B8G8R8X8_UNORM to WINED3DFMT_L8_UNORM conversion.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-DXTn
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * wined3d-WINED3DFMT_B8G8R8X8_UNORM
# |
# | This patchset fixes the following Wine bugs:
# | * [#25486] Lego Stunt Rally requires DXTn software de/encoding support
# | * [#29586] Tumblebugs 2 requires DXTn software encoding support
# | * [#17913] Port Royale doesn't display ocean correctly
# |
# | Modified files:
# | * dlls/wined3d/Makefile.in, dlls/wined3d/dxtn.c, dlls/wined3d/dxtn.h, dlls/wined3d/surface.c, dlls/wined3d/wined3d.spec,
# | include/wine/wined3d.h
# |
if test "$enable_wined3d_DXTn" -eq 1; then
patch_apply wined3d-DXTn/0001-wined3d-add-DXTn-support.patch
(
printf '%s\n' '+ { "Christian Costa", "wined3d: Add DXTn support.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-Dual_Source_Blending
# |
# | Modified files:
@ -7212,11 +7180,11 @@ fi
# Patchset ws2_32-TransmitFile
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * Staging, advapi32-CreateRestrictedToken, advapi32-Token_Integrity_Level, ntdll-Junction_Points, ntdll-ThreadTime, ntdll-
# | Hide_Wine_Exports, ntdll-User_Shared_Data, winebuild-Fake_Dlls, ntdll-RtlCreateUserThread, ntdll-Exception, ntdll-
# | SystemRoot_Symlink, server-Realtime_Priority, ntdll-Threading, ntdll-Wait_User_APC, server-Key_State, server-
# | PeekMessage, server-Signal_Thread, server-Shared_Memory, ws2_32-WSACleanup, eventfd_synchronization, server-
# | Desktop_Refcount
# | * Staging, advapi32-CreateRestrictedToken, advapi32-Token_Integrity_Level, kernel32-K32GetPerformanceInfo, ntdll-
# | Junction_Points, ntdll-ThreadTime, ntdll-Hide_Wine_Exports, ntdll-User_Shared_Data, winebuild-Fake_Dlls, ntdll-
# | RtlCreateUserThread, ntdll-Exception, ntdll-SystemRoot_Symlink, server-Realtime_Priority, ntdll-Threading, ntdll-
# | Wait_User_APC, server-Key_State, server-PeekMessage, server-Signal_Thread, server-Shared_Memory, ws2_32-WSACleanup,
# | eventfd_synchronization, server-Desktop_Refcount
# |
# | Modified files:
# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, include/winsock.h, server/protocol.def, server/sock.c

View File

@ -1,4 +1,4 @@
From 51d0b968215a8fc788994e85ad4837a406aafc61 Mon Sep 17 00:00:00 2001
From 5b0203cded8eb069ce4a8a0d11df2624afaee8ae Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Fri, 30 Mar 2018 08:25:44 +0000
Subject: [PATCH] wined3d: add DXTn support
@ -8,17 +8,17 @@ Subject: [PATCH] wined3d: add DXTn support
dlls/wined3d/dxtn.c | 435 +++++++++++++++++
dlls/wined3d/dxtn.h | 987 ++++++++++++++++++++++++++++++++++++++
dlls/wined3d/surface.c | 153 ++++++
dlls/wined3d/wined3d.spec | 8 +
dlls/wined3d/wined3d.spec | 7 +
include/wine/wined3d.h | 13 +
6 files changed, 1597 insertions(+)
6 files changed, 1596 insertions(+)
create mode 100644 dlls/wined3d/dxtn.c
create mode 100644 dlls/wined3d/dxtn.h
diff --git a/dlls/wined3d/Makefile.in b/dlls/wined3d/Makefile.in
index 39fed381d97..abc0ec6adba 100644
index 7ebd01065..936fa21a0 100644
--- a/dlls/wined3d/Makefile.in
+++ b/dlls/wined3d/Makefile.in
@@ -11,6 +11,7 @@ C_SRCS = \
@@ -12,6 +12,7 @@ C_SRCS = \
cs.c \
device.c \
directx.c \
@ -28,7 +28,7 @@ index 39fed381d97..abc0ec6adba 100644
nvidia_texture_shader.c \
diff --git a/dlls/wined3d/dxtn.c b/dlls/wined3d/dxtn.c
new file mode 100644
index 00000000000..4e24fb56419
index 000000000..77e4502ef
--- /dev/null
+++ b/dlls/wined3d/dxtn.c
@@ -0,0 +1,435 @@
@ -342,7 +342,7 @@ index 00000000000..4e24fb56419
+ return TRUE;
+}
+
+BOOL wined3d_dxt1_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL CDECL wined3d_dxt1_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h)
+{
+ switch (format)
@ -367,7 +367,7 @@ index 00000000000..4e24fb56419
+ return FALSE;
+}
+
+BOOL wined3d_dxt3_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL CDECL wined3d_dxt3_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h)
+{
+ switch (format)
@ -388,7 +388,7 @@ index 00000000000..4e24fb56419
+ return FALSE;
+}
+
+BOOL wined3d_dxt5_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL CDECL wined3d_dxt5_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h)
+{
+ switch (format)
@ -405,7 +405,7 @@ index 00000000000..4e24fb56419
+ return FALSE;
+}
+
+BOOL wined3d_dxt1_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL CDECL wined3d_dxt1_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h)
+{
+ switch (format)
@ -430,7 +430,7 @@ index 00000000000..4e24fb56419
+ return FALSE;
+}
+
+BOOL wined3d_dxt3_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL CDECL wined3d_dxt3_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h)
+{
+ switch (format)
@ -449,7 +449,7 @@ index 00000000000..4e24fb56419
+ return FALSE;
+}
+
+BOOL wined3d_dxt5_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL CDECL wined3d_dxt5_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h)
+{
+ switch (format)
@ -469,7 +469,7 @@ index 00000000000..4e24fb56419
+}
diff --git a/dlls/wined3d/dxtn.h b/dlls/wined3d/dxtn.h
new file mode 100644
index 00000000000..23536c091cc
index 000000000..23536c091
--- /dev/null
+++ b/dlls/wined3d/dxtn.h
@@ -0,0 +1,987 @@
@ -1461,10 +1461,10 @@ index 00000000000..23536c091cc
+ }
+}
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index b048b6ef852..5db449863d4 100644
index f81b48184..c2c500e09 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -593,6 +593,126 @@ static void convert_x8r8g8b8_l8(const BYTE *src, BYTE *dst,
@@ -596,6 +596,126 @@ static void convert_x8r8g8b8_l8(const BYTE *src, BYTE *dst,
}
}
@ -1591,7 +1591,7 @@ index b048b6ef852..5db449863d4 100644
struct d3dfmt_converter_desc
{
enum wined3d_format_id from, to;
@@ -610,6 +730,33 @@ static const struct d3dfmt_converter_desc converters[] =
@@ -613,6 +733,33 @@ static const struct d3dfmt_converter_desc converters[] =
{WINED3DFMT_B8G8R8X8_UNORM, WINED3DFMT_L8_UNORM, convert_x8r8g8b8_l8},
};
@ -1625,7 +1625,7 @@ index b048b6ef852..5db449863d4 100644
static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_format_id from,
enum wined3d_format_id to)
{
@@ -621,6 +768,12 @@ static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_fo
@@ -624,6 +771,12 @@ static inline const struct d3dfmt_converter_desc *find_converter(enum wined3d_fo
return &converters[i];
}
@ -1639,10 +1639,10 @@ index b048b6ef852..5db449863d4 100644
}
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index e0777b8e209..d75beb88511 100644
index 040b9fc4a..811e68685 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -319,3 +319,11 @@
@@ -313,3 +313,10 @@
@ cdecl wined3d_vertex_declaration_incref(ptr)
@ cdecl wined3d_extract_shader_input_signature_from_dxbc(ptr ptr long)
@ -1653,29 +1653,28 @@ index e0777b8e209..d75beb88511 100644
+@ cdecl wined3d_dxt3_encode(ptr ptr long long long long long)
+@ cdecl wined3d_dxt5_decode(ptr ptr long long long long long)
+@ cdecl wined3d_dxt5_encode(ptr ptr long long long long long)
+
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 37b093fa94d..29889b86f53 100644
index ada563655..4c3556c7e 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2815,4 +2815,17 @@ static inline void wined3d_box_set(struct wined3d_box *box, unsigned int left, u
@@ -2798,4 +2798,17 @@ static inline void wined3d_box_set(struct wined3d_box *box, unsigned int left, u
box->back = back;
}
+BOOL wined3d_dxt1_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL __cdecl wined3d_dxt1_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h);
+BOOL wined3d_dxt1_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL __cdecl wined3d_dxt1_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h);
+BOOL wined3d_dxt3_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL __cdecl wined3d_dxt3_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h);
+BOOL wined3d_dxt3_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL __cdecl wined3d_dxt3_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h);
+BOOL wined3d_dxt5_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL __cdecl wined3d_dxt5_decode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h);
+BOOL wined3d_dxt5_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+BOOL __cdecl wined3d_dxt5_encode(const BYTE *src, BYTE *dst, DWORD pitch_in, DWORD pitch_out,
+ enum wined3d_format_id format, unsigned int w, unsigned int h);
+
#endif /* __WINE_WINED3D_H */
--
2.20.1
2.21.0