Rebase against 9855fbe252ff3664d879e8cd9f5d1ea879af47dd.

This commit is contained in:
Zebediah Figura 2019-08-08 19:54:09 -05:00
parent 73f58bac41
commit c7780d90cb
10 changed files with 253 additions and 246 deletions

View File

@ -1,4 +1,4 @@
From 0a94974134aa73fa03bd8d011cd84935439cbea4 Mon Sep 17 00:00:00 2001
From 3fb7038ed7f1ebbadd60465f68ed0e61ba81e730 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,164 +29,164 @@ 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 99db5f3550e..0c3fb8a9048 100644
index a327292b8..b43b1be81 100644
--- a/dlls/d3dx9_24/Makefile.in
+++ b/dlls/d3dx9_24/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=24
MODULE = d3dx9_24.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_25/Makefile.in b/dlls/d3dx9_25/Makefile.in
index 9e54aba2cf2..4419b18b865 100644
index ccf374832..edcba8b59 100644
--- a/dlls/d3dx9_25/Makefile.in
+++ b/dlls/d3dx9_25/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=25
MODULE = d3dx9_25.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_26/Makefile.in b/dlls/d3dx9_26/Makefile.in
index 104f7c19b0e..cfc9711ef94 100644
index 21ef9e00b..72d0e0ce1 100644
--- a/dlls/d3dx9_26/Makefile.in
+++ b/dlls/d3dx9_26/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=26
MODULE = d3dx9_26.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_27/Makefile.in b/dlls/d3dx9_27/Makefile.in
index db04c8310b3..d598c9bbff5 100644
index 3adea191c..24763cb10 100644
--- a/dlls/d3dx9_27/Makefile.in
+++ b/dlls/d3dx9_27/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=27
MODULE = d3dx9_27.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_28/Makefile.in b/dlls/d3dx9_28/Makefile.in
index 8a2b9c6909a..8e997909280 100644
index bd75a23d2..ce041b069 100644
--- a/dlls/d3dx9_28/Makefile.in
+++ b/dlls/d3dx9_28/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=28
MODULE = d3dx9_28.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_29/Makefile.in b/dlls/d3dx9_29/Makefile.in
index 6e1f45c0299..efe538fdee2 100644
index 491c105ab..99ab2ded7 100644
--- a/dlls/d3dx9_29/Makefile.in
+++ b/dlls/d3dx9_29/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=29
MODULE = d3dx9_29.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_30/Makefile.in b/dlls/d3dx9_30/Makefile.in
index 092a6b154ee..4a1ee630414 100644
index 44e28b79f..bcf0b1c82 100644
--- a/dlls/d3dx9_30/Makefile.in
+++ b/dlls/d3dx9_30/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=30
MODULE = d3dx9_30.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_31/Makefile.in b/dlls/d3dx9_31/Makefile.in
index 48c67e6e063..dcbb7a01b6d 100644
index 0f16d27fd..7c980fbb8 100644
--- a/dlls/d3dx9_31/Makefile.in
+++ b/dlls/d3dx9_31/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=31
MODULE = d3dx9_31.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_32/Makefile.in b/dlls/d3dx9_32/Makefile.in
index d51d6a0db4a..fb89ea7c224 100644
index 99357dcce..e493bd8a6 100644
--- a/dlls/d3dx9_32/Makefile.in
+++ b/dlls/d3dx9_32/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=32
MODULE = d3dx9_32.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_33/Makefile.in b/dlls/d3dx9_33/Makefile.in
index 52cdde13ad3..487255e43b0 100644
index 5a92dca61..fba4106af 100644
--- a/dlls/d3dx9_33/Makefile.in
+++ b/dlls/d3dx9_33/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=33
MODULE = d3dx9_33.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_34/Makefile.in b/dlls/d3dx9_34/Makefile.in
index 37f431228f8..9b0b500f742 100644
index 84cca56ec..e03d8ebd5 100644
--- a/dlls/d3dx9_34/Makefile.in
+++ b/dlls/d3dx9_34/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=34
MODULE = d3dx9_34.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_35/Makefile.in b/dlls/d3dx9_35/Makefile.in
index 4441b5f6e79..ac42913598e 100644
index 640f30620..ea19e55b2 100644
--- a/dlls/d3dx9_35/Makefile.in
+++ b/dlls/d3dx9_35/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=35
MODULE = d3dx9_35.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_36/Makefile.in b/dlls/d3dx9_36/Makefile.in
index 5e76ab7f5c9..c95dc070767 100644
index b8a173ce0..3f96b6656 100644
--- a/dlls/d3dx9_36/Makefile.in
+++ b/dlls/d3dx9_36/Makefile.in
@@ -1,7 +1,7 @@
EXTRADEFS = -DD3DX_SDK_VERSION=36
MODULE = d3dx9_36.dll
IMPORTLIB = d3dx9
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
DELAYIMPORTS = windowscodecs
EXTRADLLFLAGS = -mno-cygwin
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 9871d211a7c..0a40cd24fa6 100644
index 8e9b834d8..83c30338e 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -25,6 +25,8 @@
@ -198,7 +198,7 @@ index 9871d211a7c..0a40cd24fa6 100644
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT, IWICImagingFactory**);
@@ -1900,6 +1902,24 @@ void point_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slic
@@ -1798,6 +1800,24 @@ void point_filter_argb_pixels(const BYTE *src, UINT src_row_pitch, UINT src_slic
}
}
@ -223,7 +223,7 @@ index 9871d211a7c..0a40cd24fa6 100644
/************************************************************
* D3DXLoadSurfaceFromMemory
*
@@ -1939,10 +1959,12 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1837,10 +1857,12 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
{
const struct pixel_format_desc *srcformatdesc, *destformatdesc;
IDirect3DSurface9 *surface;
@ -237,7 +237,7 @@ index 9871d211a7c..0a40cd24fa6 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,
@@ -2023,18 +2045,65 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1921,18 +1943,65 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
}
else /* Stretching or format conversion. */
{
@ -307,7 +307,7 @@ index 9871d211a7c..0a40cd24fa6 100644
}
else /* if ((filter & 0xf) == D3DX_FILTER_POINT) */
{
@@ -2043,12 +2112,29 @@ HRESULT WINAPI D3DXLoadSurfaceFromMemory(IDirect3DSurface9 *dst_surface,
@@ -1941,12 +2010,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,7 +341,7 @@ index 9871d211a7c..0a40cd24fa6 100644
/************************************************************
diff --git a/dlls/d3dx9_36/tests/surface.c b/dlls/d3dx9_36/tests/surface.c
index 4a10492a08f..d59ff028ace 100644
index 4a10492a0..d59ff028a 100644
--- a/dlls/d3dx9_36/tests/surface.c
+++ b/dlls/d3dx9_36/tests/surface.c
@@ -1242,7 +1242,7 @@ static void test_D3DXLoadSurface(IDirect3DDevice9 *device)
@ -376,89 +376,89 @@ index 4a10492a08f..d59ff028ace 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 ea0a04807b4..a710cef030a 100644
index d16a0ce05..669482dee 100644
--- a/dlls/d3dx9_37/Makefile.in
+++ b/dlls/d3dx9_37/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=37
MODULE = d3dx9_37.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_38/Makefile.in b/dlls/d3dx9_38/Makefile.in
index af62f823d5e..543a482afed 100644
index 4a02ab417..1f43705e7 100644
--- a/dlls/d3dx9_38/Makefile.in
+++ b/dlls/d3dx9_38/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=38
MODULE = d3dx9_38.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_39/Makefile.in b/dlls/d3dx9_39/Makefile.in
index ab71712d4c6..cacb0c00dfa 100644
index 5a3840574..690ed7d31 100644
--- a/dlls/d3dx9_39/Makefile.in
+++ b/dlls/d3dx9_39/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=39
MODULE = d3dx9_39.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_40/Makefile.in b/dlls/d3dx9_40/Makefile.in
index 76428d2fd84..a58a99ef227 100644
index 581e18dba..8e6984683 100644
--- a/dlls/d3dx9_40/Makefile.in
+++ b/dlls/d3dx9_40/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=40
MODULE = d3dx9_40.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_41/Makefile.in b/dlls/d3dx9_41/Makefile.in
index d3647f895d6..93fb6b508ac 100644
index 63a0be753..37fb2f3e6 100644
--- a/dlls/d3dx9_41/Makefile.in
+++ b/dlls/d3dx9_41/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=41
MODULE = d3dx9_41.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_42/Makefile.in b/dlls/d3dx9_42/Makefile.in
index 88bd746dae1..197d0d45be2 100644
index ff391a202..2d706c5f8 100644
--- a/dlls/d3dx9_42/Makefile.in
+++ b/dlls/d3dx9_42/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=42
MODULE = d3dx9_42.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
diff --git a/dlls/d3dx9_43/Makefile.in b/dlls/d3dx9_43/Makefile.in
index 2f6b8634ab8..17895954a85 100644
index e009a41c5..d539f6b22 100644
--- a/dlls/d3dx9_43/Makefile.in
+++ b/dlls/d3dx9_43/Makefile.in
@@ -1,6 +1,6 @@
EXTRADEFS = -DD3DX_SDK_VERSION=43
MODULE = d3dx9_43.dll
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 wined3d
-IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase
+IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 ucrtbase wined3d
PARENTSRC = ../d3dx9_36
DELAYIMPORTS = windowscodecs
--
2.17.1
2.22.0

View File

@ -1,4 +1,4 @@
From e13e9f7a5403d5aa7598bd788d9566ce445d3d67 Mon Sep 17 00:00:00 2001
From 08285be7bf233a38a95b0902c6bac9b24e1fe34f Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 8 Jun 2018 22:04:29 -0500
Subject: [PATCH] server: Create eventfd file descriptors for thread objects.
@ -9,7 +9,7 @@ Subject: [PATCH] server: Create eventfd file descriptors for thread objects.
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/server/thread.c b/server/thread.c
index a7dcf1088af..1bd09ff4810 100644
index f5bf4a8d2..b3da4a2f4 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -133,6 +133,7 @@ static const struct object_ops thread_apc_ops =
@ -35,9 +35,9 @@ index a7dcf1088af..1bd09ff4810 100644
thread->entry_point = 0;
+ thread->esync_fd = -1;
thread->debug_ctx = NULL;
thread->debug_event = NULL;
thread->system_regs = 0;
@@ -293,6 +295,9 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
thread->queue = NULL;
@@ -292,6 +294,9 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
return NULL;
}
@ -47,7 +47,7 @@ index a7dcf1088af..1bd09ff4810 100644
set_fd_events( thread->request_fd, POLLIN ); /* start listening to events */
add_process_thread( thread->process, thread );
return thread;
@@ -371,6 +376,9 @@ static void destroy_thread( struct object *obj )
@@ -370,6 +375,9 @@ static void destroy_thread( struct object *obj )
if (thread->exit_poll) remove_timeout_user( thread->exit_poll );
if (thread->id) free_ptid( thread->id );
if (thread->token) release_object( thread->token );
@ -57,7 +57,7 @@ index a7dcf1088af..1bd09ff4810 100644
}
/* dump a thread on stdout for debugging purposes */
@@ -396,6 +404,12 @@ static int thread_signaled( struct object *obj, struct wait_queue_entry *entry )
@@ -395,6 +403,12 @@ static int thread_signaled( struct object *obj, struct wait_queue_entry *entry )
return mythread->state == TERMINATED && !mythread->exit_poll;
}
@ -71,7 +71,7 @@ index a7dcf1088af..1bd09ff4810 100644
{
if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | THREAD_QUERY_INFORMATION | THREAD_GET_CONTEXT;
diff --git a/server/thread.h b/server/thread.h
index d2b511145b9..29bf6b51359 100644
index 382b10b5b..dd06333fd 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -54,6 +54,7 @@ struct thread
@ -80,8 +80,8 @@ index d2b511145b9..29bf6b51359 100644
struct list mutex_list; /* list of currently owned mutexes */
+ int esync_fd; /* esync file descriptor (signalled on exit) */
struct debug_ctx *debug_ctx; /* debugger context if this thread is a debugger */
struct debug_event *debug_event; /* debug event being sent to debugger */
unsigned int system_regs; /* which system regs have been set */
struct msg_queue *queue; /* message queue */
--
2.20.1
2.22.0

View File

@ -1,4 +1,4 @@
From 241237ce6d96ac33915e002518b550d41baaf413 Mon Sep 17 00:00:00 2001
From f55b5ebadbc078201d81f5f53ad248be58bfac13 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 15 Jun 2018 14:12:22 -0500
Subject: [PATCH] server, ntdll: Implement alertable waits.
@ -16,7 +16,7 @@ We do this quite simply by waiting on an extra eventfd descriptor, which the ser
8 files changed, 121 insertions(+), 17 deletions(-)
diff --git a/dlls/ntdll/esync.c b/dlls/ntdll/esync.c
index 119a36f3611..8a41f6961f9 100644
index 119a36f36..8a41f6961 100644
--- a/dlls/ntdll/esync.c
+++ b/dlls/ntdll/esync.c
@@ -684,19 +684,43 @@ static int do_poll( struct pollfd *fds, nfds_t nfds, ULONGLONG *end )
@ -196,7 +196,7 @@ index 119a36f3611..8a41f6961f9 100644
NTSTATUS esync_signal_and_wait( HANDLE signal, HANDLE wait, BOOLEAN alertable,
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 31714f90516..009dd33ede0 100644
index 31714f905..009dd33ed 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -239,6 +239,7 @@ struct ntdll_thread_data
@ -208,7 +208,7 @@ index 31714f90516..009dd33ede0 100644
int request_fd; /* fd for sending server requests */
int reply_fd; /* fd for receiving server replies */
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index 95c175aa7fe..711505242c0 100644
index 95c175aa7..711505242 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -328,6 +328,7 @@ void thread_init(void)
@ -228,7 +228,7 @@ index 95c175aa7fe..711505242c0 100644
pthread_attr_init( &pthread_attr );
pthread_attr_setstack( &pthread_attr, teb->DeallocationStack,
diff --git a/server/esync.c b/server/esync.c
index 5ef4dd282ee..4fb42e6f9d2 100644
index 5ef4dd282..4fb42e6f9 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -247,19 +247,25 @@ int esync_create_fd( int initval, int flags )
@ -272,7 +272,7 @@ index 5ef4dd282ee..4fb42e6f9d2 100644
+ send_client_fd( current->process, current->esync_apc_fd, current->id );
+}
diff --git a/server/esync.h b/server/esync.h
index aeb58c5469c..cea025d9308 100644
index aeb58c546..cea025d93 100644
--- a/server/esync.h
+++ b/server/esync.h
@@ -21,6 +21,7 @@
@ -284,7 +284,7 @@ index aeb58c5469c..cea025d9308 100644
void esync_clear( int fd );
diff --git a/server/protocol.def b/server/protocol.def
index 65a6696e38f..d577edc0e02 100644
index 65a6696e3..d577edc0e 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -4054,6 +4054,11 @@ struct handle_info
@ -300,7 +300,7 @@ index 65a6696e38f..d577edc0e02 100644
{
ESYNC_SEMAPHORE = 1,
diff --git a/server/thread.c b/server/thread.c
index 9a014b15459..4b4e342243c 100644
index b7ed72a5c..fc751c2cb 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -188,6 +188,7 @@ static inline void init_thread_structure( struct thread *thread )
@ -309,9 +309,9 @@ index 9a014b15459..4b4e342243c 100644
thread->esync_fd = -1;
+ thread->esync_apc_fd = -1;
thread->debug_ctx = NULL;
thread->debug_event = NULL;
thread->system_regs = 0;
@@ -296,7 +297,10 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
thread->queue = NULL;
@@ -295,7 +296,10 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
}
if (do_esync())
@ -322,7 +322,7 @@ index 9a014b15459..4b4e342243c 100644
set_fd_events( thread->request_fd, POLLIN ); /* start listening to events */
add_process_thread( thread->process, thread );
@@ -1051,8 +1055,13 @@ static int queue_apc( struct process *process, struct thread *thread, struct thr
@@ -1050,8 +1054,13 @@ static int queue_apc( struct process *process, struct thread *thread, struct thr
grab_object( apc );
list_add_tail( queue, &apc->entry );
if (!list_prev( queue, &apc->entry )) /* first one */
@ -336,7 +336,7 @@ index 9a014b15459..4b4e342243c 100644
return 1;
}
@@ -1099,6 +1108,10 @@ static struct thread_apc *thread_dequeue_apc( struct thread *thread, int system_
@@ -1098,6 +1107,10 @@ static struct thread_apc *thread_dequeue_apc( struct thread *thread, int system_
apc = LIST_ENTRY( ptr, struct thread_apc, entry );
list_remove( ptr );
}
@ -348,7 +348,7 @@ index 9a014b15459..4b4e342243c 100644
}
diff --git a/server/thread.h b/server/thread.h
index 29bf6b51359..620f8aa9c81 100644
index dd06333fd..a62559dc4 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -55,6 +55,7 @@ struct thread
@ -357,8 +357,8 @@ index 29bf6b51359..620f8aa9c81 100644
int esync_fd; /* esync file descriptor (signalled on exit) */
+ int esync_apc_fd; /* esync apc fd (signalled when APCs are present) */
struct debug_ctx *debug_ctx; /* debugger context if this thread is a debugger */
struct debug_event *debug_event; /* debug event being sent to debugger */
unsigned int system_regs; /* which system regs have been set */
struct msg_queue *queue; /* message queue */
--
2.20.1
2.22.0

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "15dd8e2b981ca32cae94409153627b3300bbeab8"
echo "9855fbe252ff3664d879e8cd9f5d1ea879af47dd"
}
# Show version information

View File

@ -1,4 +1,4 @@
From b0362c88d59f9a5674a01c04d18104e20500e823 Mon Sep 17 00:00:00 2001
From 43a35936ba3b28d27dd4b24ff43e2e23995b189c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 18 Aug 2017 23:51:59 +0200
Subject: [PATCH] wined3d: Implement dual source blending.
@ -14,10 +14,10 @@ Subject: [PATCH] wined3d: Implement dual source blending.
7 files changed, 78 insertions(+), 9 deletions(-)
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index 4b2f4350840..d6d4f0a3057 100644
index dc896fc8d..f948194ae 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -29441,7 +29441,7 @@ static void test_dual_blending(void)
@@ -29508,7 +29508,7 @@ static void test_dual_blending(void)
ID3D11DeviceContext_ClearRenderTargetView(context, rtv[1], white);
ID3D11DeviceContext_Draw(context, 3, 0);
@ -27,10 +27,10 @@ index 4b2f4350840..d6d4f0a3057 100644
ID3D11BlendState_Release(blend_state);
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index c22645fc1a2..98719ce57f7 100644
index 86e347d85..6cd5f4d46 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -2986,6 +2986,12 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info, struct
@@ -2976,6 +2976,12 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info, struct
gl_info->limits.buffers = min(MAX_RENDER_TARGET_VIEWS, gl_max);
TRACE("Max draw buffers: %u.\n", gl_max);
}
@ -43,7 +43,7 @@ index c22645fc1a2..98719ce57f7 100644
if (gl_info->supported[ARB_MULTITEXTURE])
{
if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
@@ -3814,6 +3820,10 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
@@ -3810,6 +3816,10 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
TRACE("Max texture stages: %u.\n", d3d_info->limits.ffp_blend_stages);
@ -55,10 +55,10 @@ index c22645fc1a2..98719ce57f7 100644
{
/* We do not want to deal with re-creating immutable texture storage
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 2e562844194..da2d9348f1b 100644
index 2509d90fd..cacec1181 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -3120,10 +3120,23 @@ static uint32_t find_draw_buffers_mask(const struct wined3d_context_gl *context_
@@ -3124,10 +3124,23 @@ static uint32_t find_draw_buffers_mask(const struct wined3d_context_gl *context_
else if (!context_gl->c.render_offscreen)
return context_generate_rt_mask_from_resource(rts[0]->resource);
@ -84,10 +84,10 @@ index 2e562844194..da2d9348f1b 100644
{
i = wined3d_bit_scan(&mask);
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index ab62c1ca599..95400d9d9b6 100644
index e5f51925c..26c078536 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -2798,6 +2798,7 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register *
@@ -2821,6 +2821,7 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register *
break;
case WINED3DSPR_COLOROUT:
@ -95,7 +95,7 @@ index ab62c1ca599..95400d9d9b6 100644
if (reg->idx[0].offset >= gl_info->limits.buffers)
WARN("Write to render target %u, only %d supported.\n",
reg->idx[0].offset, gl_info->limits.buffers);
@@ -7702,7 +7703,10 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
@@ -7737,7 +7738,10 @@ static GLuint shader_glsl_generate_fragment_shader(const struct wined3d_context_
{
const struct wined3d_shader_signature *output_signature = &shader->output_signature;
@ -107,7 +107,7 @@ index ab62c1ca599..95400d9d9b6 100644
if (output_signature->element_count)
{
for (i = 0; i < output_signature->element_count; ++i)
@@ -7717,7 +7721,12 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
@@ -7752,7 +7756,12 @@ static GLuint shader_glsl_generate_fragment_shader(const struct wined3d_context_
continue;
}
if (shader_glsl_use_explicit_attrib_location(gl_info))
@ -121,7 +121,7 @@ index ab62c1ca599..95400d9d9b6 100644
shader_addline(buffer, "out %s4 color_out%u;\n",
component_type_info[output->component_type].glsl_vector_type, output->semantic_idx);
}
@@ -7730,7 +7739,12 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
@@ -7765,7 +7774,12 @@ static GLuint shader_glsl_generate_fragment_shader(const struct wined3d_context_
{
i = wined3d_bit_scan(&mask);
if (shader_glsl_use_explicit_attrib_location(gl_info))
@ -136,12 +136,12 @@ index ab62c1ca599..95400d9d9b6 100644
}
}
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index a8fee07c6c3..52c817ea399 100644
index 870899502..1bd40a8b8 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -4137,6 +4137,8 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
args->rt_alpha_swizzle |= 1u << i;
}
@@ -4165,6 +4165,8 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
if (rtv && rtv->format->id == WINED3DFMT_A8_UNORM && !is_identity_fixup(rtv->format->color_fixup))
args->rt_alpha_swizzle |= 1u << i;
}
+
+ args->dual_source_blend = wined3d_dualblend_enabled(state, gl_info);
@ -149,7 +149,7 @@ index a8fee07c6c3..52c817ea399 100644
static HRESULT pixel_shader_init(struct wined3d_shader *shader, struct wined3d_device *device,
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index c52e25d6ce2..fbd4e5647b7 100644
index d860d13bd..c617d70e5 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -533,12 +533,14 @@ static void state_blend(struct wined3d_context *context, const struct wined3d_st
@ -161,7 +161,7 @@ index c52e25d6ce2..fbd4e5647b7 100644
enable_blend = state->fb->render_targets[0] && state->render_states[WINED3D_RS_ALPHABLENDENABLE];
- if (enable_blend)
+ enable_dual_blend = wined3d_dualblend_enabled(state, context->gl_info);
+ enable_dual_blend = wined3d_dualblend_enabled(state, gl_info);
+
+ if (enable_blend && !enable_dual_blend)
{
@ -192,18 +192,18 @@ index c52e25d6ce2..fbd4e5647b7 100644
state->render_states[WINED3D_RS_SRCBLEND],
state->render_states[WINED3D_RS_DESTBLEND], rt_format);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index f9af8542ad0..d9434a2aa68 100644
index c628b2fa8..e1fe2292a 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -198,6 +198,7 @@ struct wined3d_d3d_info
@@ -199,6 +199,7 @@ struct wined3d_d3d_info
{
struct wined3d_d3d_limits limits;
struct wined3d_ffp_attrib_ops ffp_attrib_ops;
+ DWORD valid_dual_rt_mask;
unsigned int wined3d_creation_flags;
unsigned int xyzrhw : 1;
unsigned int emulated_flatshading : 1;
@@ -1386,7 +1387,8 @@ struct ps_compile_args
uint32_t wined3d_creation_flags;
uint32_t xyzrhw : 1;
uint32_t emulated_flatshading : 1;
@@ -1396,7 +1397,8 @@ struct ps_compile_args
DWORD alpha_test_func : 3;
DWORD render_offscreen : 1;
DWORD rt_alpha_swizzle : 8; /* MAX_RENDER_TARGET_VIEWS, 8 */
@ -223,7 +223,7 @@ index f9af8542ad0..d9434a2aa68 100644
DWORD constant_update_mask;
DWORD numbered_array_mask;
@@ -2615,6 +2618,7 @@ struct wined3d_fbo_ops
@@ -2639,6 +2642,7 @@ struct wined3d_fbo_ops
struct wined3d_gl_limits
{
UINT buffers;
@ -231,7 +231,7 @@ index f9af8542ad0..d9434a2aa68 100644
UINT lights;
UINT textures;
UINT texture_coords;
@@ -3081,6 +3085,22 @@ struct wined3d_state
@@ -3106,6 +3110,22 @@ struct wined3d_state
struct wined3d_rasterizer_state *rasterizer_state;
};
@ -255,5 +255,5 @@ index f9af8542ad0..d9434a2aa68 100644
{
GLuint tex_1d;
--
2.17.1
2.22.0

View File

@ -1,7 +1,7 @@
From 5b78cbd64ca2edfaa6b6535e8c849b77ef5c5152 Mon Sep 17 00:00:00 2001
From 723d31582725f1e0e590d55f9e52b80f500e1070 Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Mon, 25 Feb 2019 20:15:07 +0300
Subject: [PATCH 4/5] wined3d: Allow higher world matrix states.
Subject: [PATCH] wined3d: Allow higher world matrix states.
Signed-off-by: Paul Gofman <gofmanp@gmail.com>
---
@ -16,11 +16,11 @@ Signed-off-by: Paul Gofman <gofmanp@gmail.com>
8 files changed, 268 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index d8ad17050c..b4cebc9704 100644
index 630360286..686819ab8 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -3735,6 +3735,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
d3d_info->ffp_generic_attributes = vertex_caps.ffp_generic_attributes;
@@ -3786,6 +3786,7 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
d3d_info->ffp_alpha_test = !!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT];
d3d_info->limits.ffp_vertex_blend_matrices = vertex_caps.max_vertex_blend_matrices;
d3d_info->limits.active_light_count = vertex_caps.max_active_lights;
+ d3d_info->limits.ffp_max_vertex_blend_matrix_index = vertex_caps.max_vertex_blend_matrix_index;
@ -28,10 +28,10 @@ index d8ad17050c..b4cebc9704 100644
adapter->fragment_pipe->get_caps(adapter, &fragment_caps);
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 9960d06cea..8ac7da00f2 100644
index a076253ce..e0f9a4759 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -1669,7 +1669,8 @@ static void wined3d_cs_exec_set_transform(struct wined3d_cs *cs, const void *dat
@@ -1668,7 +1668,8 @@ static void wined3d_cs_exec_set_transform(struct wined3d_cs *cs, const void *dat
const struct wined3d_cs_set_transform *op = data;
cs->state.transforms[op->state] = op->matrix;
@ -42,10 +42,10 @@ index 9960d06cea..8ac7da00f2 100644
}
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index ad249eed84..c83d644746 100644
index a7b479396..4fbcb4de0 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3621,6 +3621,11 @@ HRESULT CDECL wined3d_device_get_device_caps(const struct wined3d_device *device
@@ -4086,6 +4086,11 @@ HRESULT CDECL wined3d_device_get_device_caps(const struct wined3d_device *device
adapter->vertex_pipe->vp_get_caps(adapter, &vertex_caps);
if (device->create_parms.flags & WINED3DCREATE_SOFTWARE_VERTEXPROCESSING)
caps->MaxVertexShaderConst = adapter->d3d_info.limits.vs_uniform_count_swvp;
@ -58,10 +58,10 @@ index ad249eed84..c83d644746 100644
}
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 83fa47a779..9fd5f396e0 100644
index 967348dd0..6e9af4a8a 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1982,6 +1982,8 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d *wined3d, unsigned in
@@ -2030,6 +2030,8 @@ HRESULT CDECL wined3d_get_device_caps(const struct wined3d *wined3d, unsigned in
caps->MaxActiveLights = vertex_caps.max_active_lights;
caps->MaxVertexBlendMatrices = vertex_caps.max_vertex_blend_matrices;
caps->MaxVertexBlendMatrixIndex = vertex_caps.max_vertex_blend_matrix_index;
@ -71,10 +71,10 @@ index 83fa47a779..9fd5f396e0 100644
caps->FVFCaps = vertex_caps.fvf_caps;
caps->RasterCaps |= vertex_caps.raster_caps;
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index c07ff2680c..e48560c0b5 100644
index 98d0ad149..0293dde22 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -12231,6 +12231,258 @@ static const struct wined3d_state_entry_template glsl_vertex_pipe_vp_states[] =
@@ -11987,6 +11987,258 @@ static const struct wined3d_state_entry_template glsl_vertex_pipe_vp_states[] =
{STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(1)), {STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(1)), glsl_vertex_pipe_vertexblend }, WINED3D_GL_EXT_NONE },
{STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(2)), {STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(2)), glsl_vertex_pipe_vertexblend }, WINED3D_GL_EXT_NONE },
{STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(3)), {STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(3)), glsl_vertex_pipe_vertexblend }, WINED3D_GL_EXT_NONE },
@ -334,10 +334,10 @@ index c07ff2680c..e48560c0b5 100644
{STATE_TEXTURESTAGE(1, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), {STATE_TEXTURESTAGE(1, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), glsl_vertex_pipe_texmatrix}, WINED3D_GL_EXT_NONE },
{STATE_TEXTURESTAGE(2, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), {STATE_TEXTURESTAGE(2, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), glsl_vertex_pipe_texmatrix}, WINED3D_GL_EXT_NONE },
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index f68f225cfb..4777cc6742 100644
index 25eeab3d9..42af06efc 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -5410,7 +5410,8 @@ static void prune_invalid_states(struct wined3d_state_entry *state_table, const
@@ -5412,7 +5412,8 @@ static void prune_invalid_states(struct wined3d_state_entry *state_table, const
state_table[i].apply = state_undefined;
}
@ -348,10 +348,10 @@ index f68f225cfb..4777cc6742 100644
for (i = start; i <= last; ++i)
{
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 302b8e7d36..f7ba936588 100644
index b9cad2a56..aac6fb848 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -4937,11 +4937,9 @@ const char *debug_d3dtstype(enum wined3d_transform_state tstype)
@@ -5088,11 +5088,9 @@ const char *debug_d3dtstype(enum wined3d_transform_state tstype)
TSTYPE_TO_STR(WINED3D_TS_WORLD_MATRIX(3));
#undef TSTYPE_TO_STR
default:
@ -367,10 +367,10 @@ index 302b8e7d36..f7ba936588 100644
return "unrecognized";
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index edc96f8af9..6237558678 100644
index 9b030ebd7..81ccfef2c 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -171,6 +171,7 @@ struct wined3d_d3d_limits
@@ -173,6 +173,7 @@ struct wined3d_d3d_limits
unsigned int ffp_blend_stages;
unsigned int ffp_vertex_blend_matrices;
unsigned int active_light_count;
@ -379,5 +379,5 @@ index edc96f8af9..6237558678 100644
unsigned int max_rt_count;
unsigned int max_clip_distances;
--
2.20.1
2.22.0

View File

@ -1,4 +1,4 @@
From d200ec2393f74ab97b9e6b4aedc4d9960dfa2e9d Mon Sep 17 00:00:00 2001
From 34dbd141b6e22e7ffd29ae1b04a20060b3990265 Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Mon, 25 Feb 2019 13:17:01 +0300
Subject: [PATCH] wined3d: Use UBO for vertex shader float constants if
@ -17,7 +17,7 @@ Signed-off-by: Paul Gofman <gofmanp@gmail.com>
8 files changed, 148 insertions(+), 14 deletions(-)
diff --git a/dlls/d3d8/directx.c b/dlls/d3d8/directx.c
index c5239844c3d..274d5e14dee 100644
index c5239844c..274d5e14d 100644
--- a/dlls/d3d8/directx.c
+++ b/dlls/d3d8/directx.c
@@ -416,7 +416,7 @@ BOOL d3d8_init(struct d3d8 *d3d8)
@ -30,7 +30,7 @@ index c5239844c3d..274d5e14dee 100644
d3d8->IDirect3D8_iface.lpVtbl = &d3d8_vtbl;
d3d8->refcount = 1;
diff --git a/dlls/d3d9/directx.c b/dlls/d3d9/directx.c
index 1d3754adf82..f42c5ea6229 100644
index 1d3754adf..f42c5ea62 100644
--- a/dlls/d3d9/directx.c
+++ b/dlls/d3d9/directx.c
@@ -583,7 +583,7 @@ BOOL d3d9_init(struct d3d9 *d3d9, BOOL extended)
@ -43,10 +43,10 @@ index 1d3754adf82..f42c5ea6229 100644
if (!extended)
flags |= WINED3D_VIDMEM_ACCOUNTING;
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index d76bf96be0f..3a4e427ef81 100644
index 86e347d85..a843706a5 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -3140,6 +3140,9 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info, struct
@@ -3124,6 +3124,9 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info, struct
gl_info->limits.uniform_blocks[WINED3D_SHADER_TYPE_VERTEX] = min(gl_max, WINED3D_MAX_CBS);
TRACE("Max vertex uniform blocks: %u (%d).\n",
gl_info->limits.uniform_blocks[WINED3D_SHADER_TYPE_VERTEX], gl_max);
@ -57,7 +57,7 @@ index d76bf96be0f..3a4e427ef81 100644
}
if (gl_info->supported[ARB_TESSELLATION_SHADER])
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 662b6078bf7..d266c70766e 100644
index e5f51925c..564afbf15 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -138,6 +138,10 @@ struct shader_glsl_priv
@ -87,7 +87,7 @@ index 662b6078bf7..d266c70766e 100644
};
struct glsl_ps_compiled_shader
@@ -1175,12 +1181,54 @@ static inline void walk_constant_heap_clamped(const struct wined3d_gl_info *gl_i
@@ -1184,12 +1190,54 @@ static inline void walk_constant_heap_clamped(const struct wined3d_gl_info *gl_i
checkGLcall("walk_constant_heap_clamped()");
}
@ -143,7 +143,7 @@ index 662b6078bf7..d266c70766e 100644
/* 1.X pshaders have the constants clamped to [-1;1] implicitly. */
if (shader->reg_maps.shader_version.major == 1
@@ -1515,7 +1563,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
@@ -1524,7 +1572,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
{
const struct wined3d_shader *vshader = state->shader[WINED3D_SHADER_TYPE_VERTEX];
const struct wined3d_shader *pshader = state->shader[WINED3D_SHADER_TYPE_PIXEL];
@ -151,8 +151,8 @@ index 662b6078bf7..d266c70766e 100644
+ struct glsl_context_data *ctx_data = context->shader_backend_data;
struct wined3d_context_gl *context_gl = wined3d_context_gl(context);
struct glsl_shader_prog_link *prog = ctx_data->glsl_program;
const struct wined3d_gl_info *gl_info = context->gl_info;
@@ -1532,9 +1580,32 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
const struct wined3d_gl_info *gl_info = context_gl->gl_info;
@@ -1541,9 +1589,32 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
constant_version = prog->constant_version;
update_mask = context->constant_update_mask & prog->constant_update_mask;
@ -186,7 +186,7 @@ index 662b6078bf7..d266c70766e 100644
if (update_mask & WINED3D_SHADER_CONST_VS_I)
shader_glsl_load_constants_i(vshader, gl_info, state->vs_consts_i,
@@ -1687,7 +1758,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
@@ -1696,7 +1767,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
if (update_mask & WINED3D_SHADER_CONST_PS_F)
shader_glsl_load_constants_f(pshader, gl_info, state->ps_consts_f,
@ -195,7 +195,7 @@ index 662b6078bf7..d266c70766e 100644
if (update_mask & WINED3D_SHADER_CONST_PS_I)
shader_glsl_load_constants_i(pshader, gl_info, state->ps_consts_i,
@@ -1826,6 +1897,12 @@ static void shader_glsl_update_float_vertex_constants(struct wined3d_device *dev
@@ -1835,6 +1906,12 @@ static void shader_glsl_update_float_vertex_constants(struct wined3d_device *dev
struct constant_heap *heap = &priv->vconst_heap;
UINT i;
@ -208,7 +208,7 @@ index 662b6078bf7..d266c70766e 100644
for (i = start; i < count + start; ++i)
{
update_heap_entry(heap, i, priv->next_constant_version);
@@ -1838,6 +1915,9 @@ static void shader_glsl_update_float_pixel_constants(struct wined3d_device *devi
@@ -1847,6 +1924,9 @@ static void shader_glsl_update_float_pixel_constants(struct wined3d_device *devi
struct constant_heap *heap = &priv->pconst_heap;
UINT i;
@ -218,15 +218,15 @@ index 662b6078bf7..d266c70766e 100644
for (i = start; i < count + start; ++i)
{
update_heap_entry(heap, i, priv->next_constant_version);
@@ -2141,6 +2221,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c
@@ -2156,6 +2236,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c
const struct wined3d_shader_reg_maps *reg_maps, const struct shader_glsl_ctx_priv *ctx_priv)
{
const struct wined3d_shader_version *version = &reg_maps->shader_version;
+ struct shader_glsl_priv *priv = context_gl->c.device->shader_priv;
const struct vs_compile_args *vs_args = ctx_priv->cur_vs_args;
const struct ps_compile_args *ps_args = ctx_priv->cur_ps_args;
+ struct shader_glsl_priv *priv = context_gl->c.device->shader_priv;
const struct wined3d_gl_info *gl_info = context_gl->c.gl_info;
const struct wined3d_shader_indexable_temp *idx_temp_reg;
unsigned int uniform_block_base, uniform_block_count;
@@ -2162,7 +2243,15 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c
const struct wined3d_gl_info *gl_info = context_gl->gl_info;
@@ -2179,7 +2260,15 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c
}
/* Declare the constants (aka uniforms) */
@ -243,7 +243,7 @@ index 662b6078bf7..d266c70766e 100644
{
unsigned max_constantsF;
@@ -2227,11 +2316,12 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c
@@ -2244,11 +2333,12 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c
}
else
{
@ -258,7 +258,7 @@ index 662b6078bf7..d266c70766e 100644
}
/* Always declare the full set of constants, the compiler can remove the
@@ -9843,17 +9933,36 @@ static struct glsl_ffp_fragment_shader *shader_glsl_find_ffp_fragment_shader(str
@@ -9850,17 +9940,36 @@ static struct glsl_ffp_fragment_shader *shader_glsl_find_ffp_fragment_shader(str
static void shader_glsl_init_vs_uniform_locations(const struct wined3d_gl_info *gl_info,
@ -300,7 +300,7 @@ index 662b6078bf7..d266c70766e 100644
for (i = 0; i < WINED3D_MAX_CONSTS_I; ++i)
{
@@ -10928,6 +11037,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win
@@ -10936,6 +11045,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win
const struct wined3d_fragment_pipe_ops *fragment_pipe)
{
SIZE_T stack_size = wined3d_log2i(max(WINED3D_MAX_VS_CONSTS_F, WINED3D_MAX_PS_CONSTS_F)) + 1;
@ -308,7 +308,7 @@ index 662b6078bf7..d266c70766e 100644
struct fragment_caps fragment_caps;
void *vertex_priv, *fragment_priv;
struct shader_glsl_priv *priv;
@@ -10935,6 +11045,8 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win
@@ -10943,6 +11053,8 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win
if (!(priv = heap_alloc_zero(sizeof(*priv))))
return E_OUTOFMEMORY;
@ -317,7 +317,7 @@ index 662b6078bf7..d266c70766e 100644
string_buffer_list_init(&priv->string_buffers);
if (!(vertex_priv = vertex_pipe->vp_alloc(&glsl_shader_backend, priv)))
@@ -10989,6 +11101,8 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win
@@ -10997,6 +11109,8 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win
device->fragment_priv = fragment_priv;
device->shader_priv = priv;
@ -326,7 +326,7 @@ index 662b6078bf7..d266c70766e 100644
return WINED3D_OK;
fail:
@@ -11016,6 +11130,13 @@ static void shader_glsl_free(struct wined3d_device *device, struct wined3d_conte
@@ -11024,6 +11138,13 @@ static void shader_glsl_free(struct wined3d_device *device, struct wined3d_conte
priv->fragment_pipe->free_private(device, context);
priv->vertex_pipe->vp_free(device, context);
@ -341,7 +341,7 @@ index 662b6078bf7..d266c70766e 100644
device->shader_priv = NULL;
}
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 871683e6987..8477f3de5d1 100644
index 870899502..2bb9c366c 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -764,6 +764,8 @@ static BOOL shader_record_register_usage(struct wined3d_shader *shader, struct w
@ -354,10 +354,10 @@ index 871683e6987..8477f3de5d1 100644
}
}
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index b2c7d3ff6b4..b6f50ef4a7f 100644
index d860d13bd..25eeab3d9 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -4399,6 +4399,11 @@ static void state_cb(struct wined3d_context *context, const struct wined3d_state
@@ -4390,6 +4390,11 @@ static void state_cb(struct wined3d_context *context, const struct wined3d_state
unsigned int i, base, count;
TRACE("context %p, state %p, state_id %#x.\n", context, state, state_id);
@ -370,10 +370,10 @@ index b2c7d3ff6b4..b6f50ef4a7f 100644
if (STATE_IS_GRAPHICS_CONSTANT_BUFFER(state_id))
shader_type = state_id - STATE_GRAPHICS_CONSTANT_BUFFER(0);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 290f1c6c659..b99a55c4ed4 100644
index c628b2fa8..3cd0e9728 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1066,6 +1066,7 @@ struct wined3d_shader_reg_maps
@@ -1071,6 +1071,7 @@ struct wined3d_shader_reg_maps
struct wined3d_shader_tgsm *tgsm;
SIZE_T tgsm_capacity;
unsigned int tgsm_count;
@ -390,10 +390,10 @@ index 290f1c6c659..b99a55c4ed4 100644
UINT arb_vs_float_constants;
UINT arb_vs_native_constants;
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 59ae3447742..031e4bd99e9 100644
index 3e46c23c1..ab9c123d7 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -1333,6 +1333,7 @@ enum wined3d_shader_type
@@ -1331,6 +1331,7 @@ enum wined3d_shader_type
#define WINED3D_NO_PRIMITIVE_RESTART 0x00000800
#define WINED3D_LEGACY_CUBEMAP_FILTERING 0x00001000
#define WINED3D_NORMALIZED_DEPTH_BIAS 0x00002000
@ -402,5 +402,5 @@ index 59ae3447742..031e4bd99e9 100644
#define WINED3D_RESZ_CODE 0x7fa05000
--
2.17.1
2.22.0

View File

@ -1,8 +1,8 @@
From 61bec7b8c33b6dd1119821135e74d8045d76d635 Mon Sep 17 00:00:00 2001
From 77ea40ff3762a598abd30edeee292c0275e73f4d Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Mon, 25 Feb 2019 14:47:28 +0300
Subject: [PATCH 3/5] wined3d: Report actual vertex shader float constants
limit for SWVP device.
Subject: [PATCH] wined3d: Report actual vertex shader float constants limit
for SWVP device.
Signed-off-by: Paul Gofman <gofmanp@gmail.com>
---
@ -13,10 +13,10 @@ Signed-off-by: Paul Gofman <gofmanp@gmail.com>
4 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
index 4071ed0f82..382ba2c71c 100644
index a843706a5..630360286 100644
--- a/dlls/wined3d/adapter_gl.c
+++ b/dlls/wined3d/adapter_gl.c
@@ -3768,7 +3768,8 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
@@ -3770,7 +3770,8 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
d3d_info->limits.gs_version = shader_caps.gs_version;
d3d_info->limits.ps_version = shader_caps.ps_version;
d3d_info->limits.cs_version = shader_caps.cs_version;
@ -25,12 +25,12 @@ index 4071ed0f82..382ba2c71c 100644
+ d3d_info->limits.vs_uniform_count = min(WINED3D_MAX_VS_CONSTS_F, shader_caps.vs_uniform_count);
d3d_info->limits.ps_uniform_count = shader_caps.ps_uniform_count;
d3d_info->limits.varying_count = shader_caps.varying_count;
d3d_info->shader_double_precision = !!(shader_caps.wined3d_caps & WINED3D_SHADER_CAP_DOUBLE_PRECISION);
d3d_info->limits.max_compat_varying_count = shader_caps.max_compat_varying_count;
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 4ec4022dce..29c7f09c5e 100644
index c37f386f9..760ba5166 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4074,10 +4074,21 @@ struct wined3d_texture * CDECL wined3d_device_get_texture(const struct wined3d_d
@@ -4064,10 +4064,21 @@ struct wined3d_texture * CDECL wined3d_device_get_texture(const struct wined3d_d
HRESULT CDECL wined3d_device_get_device_caps(const struct wined3d_device *device, struct wined3d_caps *caps)
{
@ -54,10 +54,10 @@ index 4ec4022dce..29c7f09c5e 100644
HRESULT CDECL wined3d_device_get_display_mode(const struct wined3d_device *device, UINT swapchain_idx,
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index fc3093f4d1..78e9070e9e 100644
index 564afbf15..71e05af57 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -11185,7 +11185,10 @@ static void shader_glsl_get_caps(const struct wined3d_adapter *adapter, struct s
@@ -11222,7 +11222,10 @@ static void shader_glsl_get_caps(const struct wined3d_adapter *adapter, struct s
caps->vs_version = gl_info->supported[ARB_VERTEX_SHADER] ? caps->vs_version : 0;
caps->ps_version = gl_info->supported[ARB_FRAGMENT_SHADER] ? caps->ps_version : 0;
@ -68,9 +68,9 @@ index fc3093f4d1..78e9070e9e 100644
+ : gl_info->limits.glsl_vs_float_constants);
caps->ps_uniform_count = min(WINED3D_MAX_PS_CONSTS_F, gl_info->limits.glsl_ps_float_constants);
caps->varying_count = gl_info->limits.glsl_varyings;
caps->max_compat_varying_count = shader_glsl_max_compat_varyings(gl_info);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 444ffdba1e..aa3152aee5 100644
index 3cd0e9728..24eaf1bee 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -166,6 +166,7 @@ struct wined3d_d3d_limits
@ -81,7 +81,7 @@ index 444ffdba1e..aa3152aee5 100644
DWORD ps_uniform_count;
unsigned int varying_count;
unsigned int ffp_textures;
@@ -695,6 +696,7 @@ enum wined3d_shader_conditional_op
@@ -701,6 +702,7 @@ enum wined3d_shader_conditional_op
#define WINED3D_MAX_CONSTS_B 16
#define WINED3D_MAX_CONSTS_I 16
#define WINED3D_MAX_VS_CONSTS_F 256
@ -90,5 +90,5 @@ index 444ffdba1e..aa3152aee5 100644
/* FIXME: This needs to go up to 2048 for
--
2.21.0
2.22.0

View File

@ -1,4 +1,4 @@
From 127aa8250b996bf6a390819580ed86f56dd8224a Mon Sep 17 00:00:00 2001
From 7b1185a7f5c98fea46c1857833c342d0a4cfa3c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 20 Jul 2017 13:50:07 +0200
Subject: [PATCH] wined3d: Implement all 8 d3d11 color write masks.
@ -17,10 +17,10 @@ Subject: [PATCH] wined3d: Implement all 8 d3d11 color write masks.
10 files changed, 74 insertions(+), 71 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index ffa933007f5..c3fe4d45095 100644
index 5fac1172c..f8bd0caee 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -2089,6 +2089,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
@@ -708,6 +708,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
static const float default_blend_factor[] = {1.0f, 1.0f, 1.0f, 1.0f};
struct d3d_blend_state *blend_state_impl;
const D3D11_BLEND_DESC *desc;
@ -28,7 +28,7 @@ index ffa933007f5..c3fe4d45095 100644
TRACE("iface %p, blend_state %p, blend_factor %s, sample_mask 0x%08x.\n",
iface, blend_state, debug_float4(blend_factor), sample_mask);
@@ -2103,14 +2104,11 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
@@ -722,14 +723,11 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
wined3d_device_set_blend_state(device->wined3d_device, NULL,
(const struct wined3d_color *)blend_factor);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_ALPHABLENDENABLE, FALSE);
@ -48,7 +48,7 @@ index ffa933007f5..c3fe4d45095 100644
wined3d_mutex_unlock();
return;
}
@@ -2132,14 +2130,13 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
@@ -751,14 +749,13 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_DESTBLENDALPHA, d->DestBlendAlpha);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_BLENDOPALPHA, d->BlendOpAlpha);
}
@ -71,10 +71,10 @@ index ffa933007f5..c3fe4d45095 100644
}
diff --git a/dlls/d3d11/state.c b/dlls/d3d11/state.c
index 6de35029556..20517498e39 100644
index 92b75f8e1..29dfec3ba 100644
--- a/dlls/d3d11/state.c
+++ b/dlls/d3d11/state.c
@@ -347,10 +347,6 @@ HRESULT d3d_blend_state_create(struct d3d_device *device, const D3D11_BLEND_DESC
@@ -344,10 +344,6 @@ HRESULT d3d_blend_state_create(struct d3d_device *device, const D3D11_BLEND_DESC
tmp_desc.RenderTarget[i].BlendOpAlpha = D3D11_BLEND_OP_ADD;
}
tmp_desc.RenderTarget[i].RenderTargetWriteMask = desc->RenderTarget[j].RenderTargetWriteMask;
@ -86,10 +86,10 @@ index 6de35029556..20517498e39 100644
/* glEnableIndexedEXT(GL_BLEND, ...) */
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 7585b4103bb..4f23aae2bad 100644
index 2509d90fd..9e23f57d8 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -2741,7 +2741,7 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl,
@@ -2736,7 +2736,7 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl,
const struct wined3d_gl_info *gl_info;
uint32_t rt_mask, *cur_mask;
struct wined3d_texture *rt;
@ -98,7 +98,7 @@ index 7585b4103bb..4f23aae2bad 100644
SIZE rt_size;
TRACE("Setting up context %p for blitting.\n", context);
@@ -2849,10 +2849,8 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl,
@@ -2843,10 +2843,8 @@ void wined3d_context_gl_apply_blit_state(struct wined3d_context_gl *context_gl,
context_invalidate_state(context, STATE_RENDER(WINED3D_RS_SRGBWRITEENABLE));
}
gl_info->gl_ops.gl.p_glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
@ -111,7 +111,7 @@ index 7585b4103bb..4f23aae2bad 100644
context->last_was_rhw = TRUE;
context_invalidate_state(context, STATE_VDECL); /* because of last_was_rhw = TRUE */
@@ -4852,7 +4850,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
@@ -4830,7 +4828,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
if (!(rtv = fb->render_targets[i]) || rtv->format->id == WINED3DFMT_NULL)
continue;
@ -121,10 +121,10 @@ index 7585b4103bb..4f23aae2bad 100644
wined3d_rendertarget_view_load_location(rtv, context, rtv->resource->draw_binding);
wined3d_rendertarget_view_invalidate_location(rtv, ~rtv->resource->draw_binding);
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index c978c094887..9c96bcb2e7c 100644
index c37f386f9..e23e624aa 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -447,10 +447,8 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c
@@ -452,10 +452,8 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c
}
gl_info->gl_ops.gl.p_glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
@ -138,20 +138,20 @@ index c978c094887..9c96bcb2e7c 100644
checkGLcall("glClearColor");
clear_mask = clear_mask | GL_COLOR_BUFFER_BIT;
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 224e0ff1921..707e5400005 100644
index d860d13bd..479e15e3d 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -1564,9 +1564,6 @@ static void state_debug_monitor(struct wined3d_context *context, const struct wi
static void state_colorwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
@@ -1543,9 +1543,6 @@ static void state_colorwrite(struct wined3d_context *context, const struct wined
{
const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info;
DWORD mask0 = state->render_states[WINED3D_RS_COLORWRITEENABLE];
- DWORD mask1 = state->render_states[WINED3D_RS_COLORWRITEENABLE1];
- DWORD mask2 = state->render_states[WINED3D_RS_COLORWRITEENABLE2];
- DWORD mask3 = state->render_states[WINED3D_RS_COLORWRITEENABLE3];
const struct wined3d_gl_info *gl_info = context->gl_info;
TRACE("Color mask: r(%d) g(%d) b(%d) a(%d)\n",
@@ -1580,13 +1577,7 @@ static void state_colorwrite(struct wined3d_context *context, const struct wined
mask0 & WINED3DCOLORWRITEENABLE_RED ? 1 : 0,
@@ -1558,13 +1555,7 @@ static void state_colorwrite(struct wined3d_context *context, const struct wined
mask0 & WINED3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE);
checkGLcall("glColorMask(...)");
@ -166,21 +166,21 @@ index 224e0ff1921..707e5400005 100644
}
static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DWORD mask)
@@ -1599,24 +1590,20 @@ static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DW
@@ -1577,24 +1568,20 @@ static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DW
checkGLcall("glColorMaski");
}
-static void state_colorwrite0(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
+static void state_colorwrite_i(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
- set_color_mask(context->gl_info, 0, state->render_states[WINED3D_RS_COLORWRITEENABLE]);
- set_color_mask(wined3d_context_gl(context)->gl_info, 0, state->render_states[WINED3D_RS_COLORWRITEENABLE]);
-}
+ const struct wined3d_gl_info *gl_info = context->gl_info;
+ const struct wined3d_gl_info *gl_info = wined3d_context_gl(context)->gl_info;
+ int index;
-static void state_colorwrite1(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
-{
- set_color_mask(context->gl_info, 1, state->render_states[WINED3D_RS_COLORWRITEENABLE1]);
- set_color_mask(wined3d_context_gl(context)->gl_info, 1, state->render_states[WINED3D_RS_COLORWRITEENABLE]);
-}
+ if (state_id == WINED3D_RS_COLORWRITEENABLE) index = 0;
+ else if (state_id <= WINED3D_RS_COLORWRITEENABLE3) index = state_id - WINED3D_RS_COLORWRITEENABLE1 + 1;
@ -189,19 +189,19 @@ index 224e0ff1921..707e5400005 100644
-static void state_colorwrite2(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
-{
- set_color_mask(context->gl_info, 2, state->render_states[WINED3D_RS_COLORWRITEENABLE2]);
- set_color_mask(wined3d_context_gl(context)->gl_info, 2, state->render_states[WINED3D_RS_COLORWRITEENABLE]);
-}
+ if (index >= gl_info->limits.buffers)
+ WARN("Ignoring color write value for index %d, because gpu only supports %d render targets\n", index, gl_info->limits.buffers);
-static void state_colorwrite3(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
-{
- set_color_mask(context->gl_info, 3, state->render_states[WINED3D_RS_COLORWRITEENABLE3]);
+ set_color_mask(context->gl_info, index, state->render_states[state_id]);
- set_color_mask(wined3d_context_gl(context)->gl_info, 3, state->render_states[WINED3D_RS_COLORWRITEENABLE]);
+ set_color_mask(gl_info, index, state->render_states[state_id]);
}
static void state_localviewer(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
@@ -4679,18 +4666,26 @@ const struct wined3d_state_entry_template misc_state_template[] =
@@ -4657,18 +4644,26 @@ const struct wined3d_state_entry_template misc_state_template[] =
{ STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), { STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), state_msaa_w }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_MULTISAMPLEMASK), { STATE_RENDER(WINED3D_RS_MULTISAMPLEMASK), state_multisampmask }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_DEBUGMONITORTOKEN), { STATE_RENDER(WINED3D_RS_DEBUGMONITORTOKEN), state_debug_monitor }, WINED3D_GL_EXT_NONE },
@ -236,7 +236,7 @@ index 224e0ff1921..707e5400005 100644
{ STATE_RENDER(WINED3D_RS_ZVISIBLE), { STATE_RENDER(WINED3D_RS_ZVISIBLE), state_zvisible }, WINED3D_GL_EXT_NONE },
/* Samplers */
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index 05149ad1af1..e16b0e2d489 100644
index 80e58114c..d67911fe6 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -44,6 +44,10 @@ static const DWORD pixel_states_render[] =
@ -286,10 +286,10 @@ index 05149ad1af1..e16b0e2d489 100644
static void init_default_texture_state(unsigned int i, DWORD stage[WINED3D_HIGHEST_TEXTURE_STATE + 1])
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 88fbb1b575b..f7aba06c935 100644
index 99ee1a4ad..cb1b08120 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -162,6 +162,7 @@ static void texture2d_blt_fbo(const struct wined3d_device *device, struct wined3
@@ -153,6 +153,7 @@ void texture2d_blt_fbo(struct wined3d_device *device, struct wined3d_context *co
GLenum gl_filter;
GLenum buffer;
RECT s, d;
@ -297,7 +297,7 @@ index 88fbb1b575b..f7aba06c935 100644
TRACE("device %p, context %p, filter %s, src_texture %p, src_sub_resource_idx %u, src_location %s, "
"src_rect %s, dst_texture %p, dst_sub_resource_idx %u, dst_location %s, dst_rect %s.\n",
@@ -275,10 +276,8 @@ static void texture2d_blt_fbo(const struct wined3d_device *device, struct wined3
@@ -261,10 +262,8 @@ void texture2d_blt_fbo(struct wined3d_device *device, struct wined3d_context *co
context_invalidate_state(context, STATE_FRAMEBUFFER);
gl_info->gl_ops.gl.p_glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
@ -311,10 +311,10 @@ index 88fbb1b575b..f7aba06c935 100644
gl_info->gl_ops.gl.p_glDisable(GL_SCISSOR_TEST);
context_invalidate_state(context, STATE_RENDER(WINED3D_RS_SCISSORTESTENABLE));
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 096bf4f4935..764d96b1bbe 100644
index b9cad2a56..8df7cc1b7 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -4915,7 +4915,6 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
@@ -4910,7 +4910,6 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
D3DSTATE_TO_STR(WINED3D_RS_DEBUGMONITORTOKEN);
D3DSTATE_TO_STR(WINED3D_RS_POINTSIZE_MAX);
D3DSTATE_TO_STR(WINED3D_RS_INDEXEDVERTEXBLENDENABLE);
@ -322,7 +322,7 @@ index 096bf4f4935..764d96b1bbe 100644
D3DSTATE_TO_STR(WINED3D_RS_TWEENFACTOR);
D3DSTATE_TO_STR(WINED3D_RS_BLENDOP);
D3DSTATE_TO_STR(WINED3D_RS_POSITIONDEGREE);
@@ -4935,9 +4934,14 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
@@ -4930,9 +4929,14 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
D3DSTATE_TO_STR(WINED3D_RS_BACK_STENCILZFAIL);
D3DSTATE_TO_STR(WINED3D_RS_BACK_STENCILPASS);
D3DSTATE_TO_STR(WINED3D_RS_BACK_STENCILFUNC);
@ -338,10 +338,10 @@ index 096bf4f4935..764d96b1bbe 100644
D3DSTATE_TO_STR(WINED3D_RS_DEPTHBIAS);
D3DSTATE_TO_STR(WINED3D_RS_WRAP8);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index b4186740cf5..b3337d5f12c 100644
index c628b2fa8..c1b2d5cd3 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -284,6 +284,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
@@ -286,6 +286,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
#define MAX_UNORDERED_ACCESS_VIEWS 8
#define MAX_TGSM_REGISTERS 8192
#define MAX_VERTEX_BLENDS 4
@ -350,10 +350,10 @@ index b4186740cf5..b3337d5f12c 100644
struct min_lookup
{
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 98c566d62fa..5caf8ea6635 100644
index 3e46c23c1..aec72620c 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -404,8 +404,20 @@ enum wined3d_render_state
@@ -398,8 +398,20 @@ enum wined3d_render_state
WINED3D_RS_SRCBLENDALPHA = 207,
WINED3D_RS_DESTBLENDALPHA = 208,
WINED3D_RS_BLENDOPALPHA = 209,
@ -376,5 +376,5 @@ index 98c566d62fa..5caf8ea6635 100644
enum wined3d_blend
{
--
2.17.1
2.22.0

View File

@ -1,4 +1,4 @@
From 71c90bdb271420737b08bfd7ffda33de2db10d12 Mon Sep 17 00:00:00 2001
From 90ebd2a601712db291079151491b2f0f6ddba70b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= <nerv@dawncrow.de>
Date: Tue, 26 Aug 2014 00:59:37 +0200
Subject: [PATCH] wpcap: Load libpcap dynamically.
@ -8,14 +8,14 @@ Something we don't want i guess.
---
configure.ac | 4 +-
dlls/wpcap/Makefile.in | 1 -
dlls/wpcap/wpcap.c | 171 +++++++++++++++++++++++++++++++++++++++----------
3 files changed, 139 insertions(+), 37 deletions(-)
dlls/wpcap/wpcap.c | 173 ++++++++++++++++++++++++++++++++---------
3 files changed, 140 insertions(+), 38 deletions(-)
diff --git a/configure.ac b/configure.ac
index d6b1d27..bff3266 100644
index c58d34330..9e8066e93 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1364,9 +1364,9 @@ WINE_NOTICE_WITH(opencl,[test "x$ac_cv_lib_OpenCL_clGetPlatformInfo" != xyes],
@@ -1317,9 +1317,9 @@ WINE_NOTICE_WITH(opencl,[test "x$ac_cv_lib_OpenCL_clGetPlatformInfo" != xyes],
dnl **** Check for libpcap ****
if test "$ac_cv_header_pcap_pcap_h" = "yes"
then
@ -28,7 +28,7 @@ index d6b1d27..bff3266 100644
[enable_wpcap])
diff --git a/dlls/wpcap/Makefile.in b/dlls/wpcap/Makefile.in
index 91b4a95..aeef71a 100644
index 91b4a9559..aeef71a46 100644
--- a/dlls/wpcap/Makefile.in
+++ b/dlls/wpcap/Makefile.in
@@ -1,6 +1,5 @@
@ -39,7 +39,7 @@ index 91b4a95..aeef71a 100644
C_SRCS = \
wpcap.c
diff --git a/dlls/wpcap/wpcap.c b/dlls/wpcap/wpcap.c
index 6450a0e..b97ed12 100644
index d2f1be7a3..c355fc6e1 100644
--- a/dlls/wpcap/wpcap.c
+++ b/dlls/wpcap/wpcap.c
@@ -18,6 +18,9 @@
@ -248,7 +248,7 @@ index 6450a0e..b97ed12 100644
TRACE("%s\n", debugstr_a(ret));
return ret;
}
@@ -197,20 +281,20 @@ const char* CDECL wine_pcap_lib_version(void)
@@ -197,7 +281,7 @@ const char* CDECL wine_pcap_lib_version(void)
int CDECL wine_pcap_list_datalinks(pcap_t *p, int **dlt_buffer)
{
TRACE("(%p %p)\n", p, dlt_buffer);
@ -257,13 +257,20 @@ index 6450a0e..b97ed12 100644
}
char* CDECL wine_pcap_lookupdev(char *errbuf)
{
@@ -208,10 +292,10 @@ char* CDECL wine_pcap_lookupdev(char *errbuf)
TRACE("(%p)\n", errbuf);
- return pcap_lookupdev(errbuf);
+ return ppcap_lookupdev(errbuf);
if (!ret)
{
- if (pcap_findalldevs( &devs, errbuf ) == -1) return NULL;
+ if (ppcap_findalldevs( &devs, errbuf ) == -1) return NULL;
if (!devs) return NULL;
if ((ret = heap_alloc( strlen(devs->name) + 1 ))) strcpy( ret, devs->name );
- pcap_freealldevs( devs );
+ ppcap_freealldevs( devs );
}
return ret;
}
int CDECL wine_pcap_lookupnet(const char *device, unsigned int *netp, unsigned int *maskp,
@@ -220,7 +304,7 @@ int CDECL wine_pcap_lookupnet(const char *device, unsigned int *netp, unsigned i
char *errbuf)
{
TRACE("(%s %p %p %p)\n", debugstr_a(device), netp, maskp, errbuf);
@ -272,7 +279,7 @@ index 6450a0e..b97ed12 100644
}
int CDECL wine_pcap_loop(pcap_t *p, int cnt,
@@ -224,34 +308,34 @@ int CDECL wine_pcap_loop(pcap_t *p, int cnt,
@@ -234,34 +318,34 @@ int CDECL wine_pcap_loop(pcap_t *p, int cnt,
PCAP_HANDLER_CALLBACK pcb;
pcb.pfn_cb = callback;
pcb.user_data = user;
@ -313,7 +320,7 @@ index 6450a0e..b97ed12 100644
}
#ifndef PCAP_OPENFLAG_PROMISCUOUS
@@ -264,14 +348,14 @@ pcap_t* CDECL wine_pcap_open(const char *source, int snaplen, int flags, int rea
@@ -274,14 +358,14 @@ pcap_t* CDECL wine_pcap_open(const char *source, int snaplen, int flags, int rea
int promisc = flags & PCAP_OPENFLAG_PROMISCUOUS;
FIXME("(%s %i %i %i %p %p): partial stub\n", debugstr_a(source), snaplen, flags, read_timeout,
auth, errbuf);
@ -330,7 +337,7 @@ index 6450a0e..b97ed12 100644
}
int CDECL wine_pcap_parsesrcstr(const char *source, int *type, char *host, char *port, char *name, char *errbuf)
@@ -315,13 +399,13 @@ int CDECL wine_pcap_parsesrcstr(const char *source, int *type, char *host, char
@@ -325,13 +409,13 @@ int CDECL wine_pcap_parsesrcstr(const char *source, int *type, char *host, char
int CDECL wine_pcap_sendpacket(pcap_t *p, const unsigned char *buf, int size)
{
TRACE("(%p %p %i)\n", p, buf, size);
@ -346,7 +353,7 @@ index 6450a0e..b97ed12 100644
}
int CDECL wine_pcap_setbuff(pcap_t * p, int dim)
@@ -333,25 +417,25 @@ int CDECL wine_pcap_setbuff(pcap_t * p, int dim)
@@ -343,25 +427,25 @@ int CDECL wine_pcap_setbuff(pcap_t * p, int dim)
int CDECL wine_pcap_setfilter(pcap_t *p, struct bpf_program *fp)
{
TRACE("(%p %p)\n", p, fp);
@ -376,7 +383,7 @@ index 6450a0e..b97ed12 100644
}
int CDECL wine_wsockinit(void)
@@ -377,7 +461,7 @@ pcap_dumper_t* CDECL wine_pcap_dump_open(pcap_t *p, const char *fname)
@@ -387,7 +471,7 @@ pcap_dumper_t* CDECL wine_pcap_dump_open(pcap_t *p, const char *fname)
TRACE("unix_path %s\n", debugstr_a(unix_path));
@ -385,7 +392,7 @@ index 6450a0e..b97ed12 100644
heap_free(unix_path);
return dumper;
@@ -386,5 +470,24 @@ pcap_dumper_t* CDECL wine_pcap_dump_open(pcap_t *p, const char *fname)
@@ -396,5 +480,24 @@ pcap_dumper_t* CDECL wine_pcap_dump_open(pcap_t *p, const char *fname)
void CDECL wine_pcap_dump(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
{
TRACE("(%p %p %p)\n", user, h, sp);
@ -412,5 +419,5 @@ index 6450a0e..b97ed12 100644
+ return TRUE;
}
--
1.9.1
2.22.0