Rebase against 91dd155e9bc13c1bc1be860cd67fe3e48c20feae.

This commit is contained in:
Sebastian Lackner 2016-01-09 13:36:37 +01:00
parent c891e58561
commit 11093e0bf8
13 changed files with 92 additions and 346 deletions

View File

@ -1,50 +0,0 @@
From 11e2cd323ec804c3c28f6f0b29182c17c85349c7 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 7 Jan 2016 05:38:36 +0100
Subject: cmd: Fix sharing permissions for pipe file.
---
programs/cmd/tests/test_builtins.cmd.exp | 2 +-
programs/cmd/wcmdmain.c | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index 811ba9f..7543b53 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -1207,7 +1207,7 @@ passed
--- a batch file can delete itself
file correctly deleted
--- a batch file can alter itself
-@todo_wine@bar
+bar
---------- Testing copy
Passed: Found expected dummy.file
Passed: Found expected dir1\file1
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index bf988f5..de92e0a 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -1364,7 +1364,7 @@ void WCMD_execute (const WCHAR *command, const WCHAR *redirects,
if (cmdList && (*cmdList)->pipeFile[0] != 0x00) {
WINE_TRACE("Input coming from %s\n", wine_dbgstr_w((*cmdList)->pipeFile));
h = CreateFileW((*cmdList)->pipeFile, GENERIC_READ,
- FILE_SHARE_READ, &sa, OPEN_EXISTING,
+ FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, NULL);
if (h == INVALID_HANDLE_VALUE) {
WCMD_print_error ();
@@ -1425,8 +1425,8 @@ void WCMD_execute (const WCHAR *command, const WCHAR *redirects,
} else {
WCHAR *param = WCMD_parameter(p, 0, NULL, FALSE, FALSE);
- h = CreateFileW(param, GENERIC_WRITE, 0, &sa, creationDisposition,
- FILE_ATTRIBUTE_NORMAL, NULL);
+ h = CreateFileW(param, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_DELETE,
+ &sa, creationDisposition, FILE_ATTRIBUTE_NORMAL, NULL);
if (h == INVALID_HANDLE_VALUE) {
WCMD_print_error ();
heap_free(cmd);
--
2.6.4

View File

@ -1 +0,0 @@
Fixes: [34174] Fix sharing violation on temp file for piped output

View File

@ -0,0 +1,32 @@
From cfbee3f0f952769dbf663489c2a209493c7412d3 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sun, 11 Jan 2015 16:18:03 +0100
Subject: d3dx9_36: Add support for FOURCC surface to
save_dds_surface_to_memory.
---
dlls/d3dx9_36/surface.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 4fa2a76..58b676d 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -311,6 +311,14 @@ static HRESULT d3dformat_to_dds_pixel_format(struct dds_pixel_format *pixel_form
}
}
+ /* Reuse dds_fourcc_to_d3dformat as D3DFORMAT and FOURCC are DWORD with same values */
+ if (dds_fourcc_to_d3dformat(d3dformat) != D3DFMT_UNKNOWN)
+ {
+ pixel_format->flags |= DDS_PF_FOURCC;
+ pixel_format->fourcc = d3dformat;
+ return D3D_OK;
+ }
+
WARN("Unknown pixel format %#x\n", d3dformat);
return E_NOTIMPL;
}
--
2.6.4

View File

@ -1,74 +0,0 @@
From 68efe5449591b9b1366d66d87fff1a8c9f8002e5 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 16 Oct 2015 14:06:30 +1100
Subject: d3dx9_36/tests: Add D3DXSaveSurfaceToFileInMemory D3DXIFF_DDS tests
Also updates the structure dds_header to be the same as d3dx9_36/surface.c.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
dlls/d3dx9_36/tests/surface.c | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/dlls/d3dx9_36/tests/surface.c b/dlls/d3dx9_36/tests/surface.c
index 1697a03..77bd142 100644
--- a/dlls/d3dx9_36/tests/surface.c
+++ b/dlls/d3dx9_36/tests/surface.c
@@ -211,7 +211,9 @@ struct dds_header
struct dds_pixel_format pixel_format;
DWORD caps;
DWORD caps2;
- DWORD reserved2[3];
+ DWORD caps3;
+ DWORD caps4;
+ DWORD reserved2;
};
/* fills dds_header with reasonable default values */
@@ -1231,6 +1233,7 @@ static void test_D3DXSaveSurfaceToFileInMemory(IDirect3DDevice9 *device)
RECT rect;
ID3DXBuffer *buffer;
IDirect3DSurface9 *surface;
+ struct dds_header *header;
hr = IDirect3DDevice9_CreateOffscreenPlainSurface(device, 4, 4, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &surface, NULL);
if (FAILED(hr)) {
@@ -1248,6 +1251,35 @@ static void test_D3DXSaveSurfaceToFileInMemory(IDirect3DDevice9 *device)
ID3DXBuffer_Release(buffer);
}
+ SetRect(&rect, 0, 0, 0, 0);
+ hr = D3DXSaveSurfaceToFileInMemory(&buffer, D3DXIFF_DDS, surface, NULL, &rect);
+ todo_wine ok(hr == D3D_OK || broken(hr == D3DERR_INVALIDCALL), "D3DXSaveSurfaceToFileInMemory returned %#x, expected %#x\n", hr, D3D_OK);
+ if (SUCCEEDED(hr)) {
+ header = ID3DXBuffer_GetBufferPointer(buffer);
+
+ ok(header->magic == MAKEFOURCC('D','D','S',' '), "Invalid DDS signature\n");
+ todo_wine ok(header->size == 124, "Invalid DDS size %d\n", header->size);
+ ok(header->height == 0, "Wrong height %d\n", header->height);
+ ok(header->width == 0, "Wrong width %d\n", header->width);
+ ok(header->flags == (DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PIXELFORMAT),
+ "Wrong flags %x\n", header->flags);
+ ID3DXBuffer_Release(buffer);
+ }
+
+ hr = D3DXSaveSurfaceToFileInMemory(&buffer, D3DXIFF_DDS, surface, NULL, NULL);
+ ok(hr == D3D_OK || broken(hr == D3DERR_INVALIDCALL), "D3DXSaveSurfaceToFileInMemory returned %#x, expected %#x\n", hr, D3D_OK);
+ if (SUCCEEDED(hr)) {
+ header = ID3DXBuffer_GetBufferPointer(buffer);
+
+ ok(header->magic == MAKEFOURCC('D','D','S',' '), "Invalid DDS signature\n");
+ todo_wine ok(header->size == 124, "Invalid DDS size %d\n", header->size);
+ ok(header->height == 4, "Wrong height %d\n", header->height);
+ ok(header->width == 4, "Wrong width %d\n", header->width);
+ todo_wine ok(header->flags == (DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PIXELFORMAT),
+ "Wrong flags %x\n", header->flags);
+ ID3DXBuffer_Release(buffer);
+ }
+
IDirect3DSurface9_Release(surface);
}
--
2.6.2

View File

@ -1,52 +0,0 @@
From 88f02c608de86c125cbddd543c34ea2bfce30993 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sun, 11 Jan 2015 16:09:43 +0100
Subject: d3dx9_36: Fix several issues in save_dds_surface_to_memory.
The different fixes are:
- Fix header size of the DDS file
- Remove DDS_MIPMAPCOUNT as mipmap levels are not supported yet
- Fix DDS_WIDTH define to correct value 4
- Do not set depth and miplevels fields as their flags are not set (to match native)
---
dlls/d3dx9_36/surface.c | 7 +++----
dlls/d3dx9_36/tests/surface.c | 2 +-
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index b8bb710..6f6132c 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -487,13 +487,12 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
memset(header, 0, sizeof(*header));
header->signature = MAKEFOURCC('D','D','S',' ');
- header->size = sizeof(*header);
- header->flags = DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PITCH | DDS_PIXELFORMAT | DDS_MIPMAPCOUNT;
+ /* The signature is not really part of the DDS header */
+ header->size = sizeof(*header) - sizeof(header->signature);
+ header->flags = DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PITCH | DDS_PIXELFORMAT;
header->height = src_desc.Height;
header->width = src_desc.Width;
header->pitch_or_linear_size = dst_pitch;
- header->depth = 1;
- header->miplevels = 1;
header->caps = DDS_CAPS_TEXTURE;
hr = d3dformat_to_dds_pixel_format(&header->pixel_format, src_desc.Format);
if (FAILED(hr))
diff --git a/dlls/d3dx9_36/tests/surface.c b/dlls/d3dx9_36/tests/surface.c
index 77bd142..f04fa67 100644
--- a/dlls/d3dx9_36/tests/surface.c
+++ b/dlls/d3dx9_36/tests/surface.c
@@ -1272,7 +1272,7 @@ static void test_D3DXSaveSurfaceToFileInMemory(IDirect3DDevice9 *device)
header = ID3DXBuffer_GetBufferPointer(buffer);
ok(header->magic == MAKEFOURCC('D','D','S',' '), "Invalid DDS signature\n");
- todo_wine ok(header->size == 124, "Invalid DDS size %d\n", header->size);
+ ok(header->size == 124, "Invalid DDS size %d\n", header->size);
ok(header->height == 4, "Wrong height %d\n", header->height);
ok(header->width == 4, "Wrong width %d\n", header->width);
todo_wine ok(header->flags == (DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PIXELFORMAT),
--
2.6.2

View File

@ -1,4 +1,4 @@
From 560676d5a7e14b73de4a1be6e47ee37754c0c331 Mon Sep 17 00:00:00 2001
From f9702dad952fdc873a72b4a2781bf2171ff3f814 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sun, 11 Jan 2015 16:29:30 +0100
Subject: d3dx9_36: Improve D3DXSaveTextureToFile to save simple texture to dds
@ -24,10 +24,10 @@ index 79f3b76..41bed31 100644
unsigned short float_32_to_16(const float in) DECLSPEC_HIDDEN;
float float_16_to_32(const unsigned short in) DECLSPEC_HIDDEN;
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 629c94c..0a9c177 100644
index 58b676d..79e8d53 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -530,6 +530,68 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
@@ -527,6 +527,68 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
return D3D_OK;
}
@ -97,7 +97,7 @@ index 629c94c..0a9c177 100644
const D3DBOX *dst_box, const void *src_data, const D3DBOX *src_box, DWORD filter, D3DCOLOR color_key,
const D3DXIMAGE_INFO *src_info)
diff --git a/dlls/d3dx9_36/texture.c b/dlls/d3dx9_36/texture.c
index de42307..e062379 100644
index 38349e2..5c06700 100644
--- a/dlls/d3dx9_36/texture.c
+++ b/dlls/d3dx9_36/texture.c
@@ -1873,10 +1873,7 @@ HRESULT WINAPI D3DXSaveTextureToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE
@ -113,5 +113,5 @@ index de42307..e062379 100644
type = IDirect3DBaseTexture9_GetType(src_texture);
switch (type)
--
2.2.1
2.6.4

View File

@ -1,43 +0,0 @@
From 26c87c400c478b878b72b9cb7d216f89a9a58d1f Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sun, 11 Jan 2015 16:18:03 +0100
Subject: d3dx9_36: Add support for FOURCC surface to
save_dds_surface_to_memory.
---
dlls/d3dx9_36/surface.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index ae10adc..629c94c 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -311,6 +311,14 @@ static HRESULT d3dformat_to_dds_pixel_format(struct dds_pixel_format *pixel_form
}
}
+ /* Reuse dds_fourcc_to_d3dformat as D3DFORMAT and FOURCC are DWORD with same values */
+ if (dds_fourcc_to_d3dformat(d3dformat) != D3DFMT_UNKNOWN)
+ {
+ pixel_format->flags |= DDS_PF_FOURCC;
+ pixel_format->fourcc = d3dformat;
+ return D3D_OK;
+ }
+
WARN("Unknown pixel format %#x\n", d3dformat);
return E_NOTIMPL;
}
@@ -489,7 +497,9 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
header->signature = MAKEFOURCC('D','D','S',' ');
/* The signature is not really part of the DDS header */
header->size = sizeof(*header) - sizeof(header->signature);
- header->flags = DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PITCH | DDS_PIXELFORMAT;
+ header->flags = DDS_CAPS | DDS_HEIGHT | DDS_WIDTH | DDS_PIXELFORMAT;
+ /* Note that native does not set DDS_LINEARSIZE flag nor pitch_or_linear_size field for DXTn */
+ header->flags |= (pixel_format->block_width != 1) || (pixel_format->block_height != 1) ? DDS_LINEARSIZE : DDS_PITCH;
header->height = src_desc.Height;
header->width = src_desc.Width;
header->pitch_or_linear_size = dst_pitch;
--
2.2.1

View File

@ -1,12 +1,12 @@
From 1e0ee442ec83aa1876edf14279632d844c8b41b3 Mon Sep 17 00:00:00 2001
From 0f20e0be16fd905bef6f4ff1f170a43601c49c69 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Wed, 6 Jan 2016 18:51:06 +0100
Subject: mshtml: Fix some prototypes.
---
dlls/mshtml/mutation.c | 4 ++--
dlls/mshtml/nsiface.idl | 14 +++++++-------
2 files changed, 9 insertions(+), 9 deletions(-)
dlls/mshtml/mutation.c | 4 ++--
dlls/mshtml/nsiface.idl | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c
index a07c52d..22a3e61 100644
@ -28,38 +28,9 @@ index a07c52d..22a3e61 100644
}
diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl
index 962bb6f..52ca1d84 100644
index 75e75e0..52ca1d84 100644
--- a/dlls/mshtml/nsiface.idl
+++ b/dlls/mshtml/nsiface.idl
@@ -2916,7 +2916,7 @@ interface nsIDOMWindowUtils : nsISupports
nsresult SetDisplayPortForElement(float aXPx, float aYPx, float aWidthPx, float aHeightPx,
nsIDOMElement *aElement, uint32_t aPriority);
nsresult SetDisplayPortMarginsForElement(float aLeftMargin, float aTopMargin, float aRightMargin, float aBottomMargin,
- uint32_t aAlignmentX, uint32_t aAlignmentY, nsIDOMElement *aElement, uint32_t aPriority);
+ nsIDOMElement *aElement, uint32_t aPriority);
nsresult SetDisplayPortBaseForElement(int32_t aX, int32_t aY, int32_t aWidth, int32_t aHeight, nsIDOMElement *aElement);
nsresult SetResolution(float aResolution);
nsresult GetResolution(float *aResolution);
@@ -3862,8 +3862,8 @@ interface nsIDocShell : nsIDocShellTreeItem
nsresult GatherCharsetMenuTelemetry();
nsresult GetForcedCharset(nsIAtom **aForcedCharset);
nsresult SetForcedCharset(nsIAtom *aForcedCharset);
- void SetParentCharset(const nsACString *parentCharset, int32_t parentCharsetSource, nsIPrincipal *parentCharsetPrincipal);
- void GetParentCharset(nsACString *parentCharset, int32_t *parentCharsetSource, nsIPrincipal **parentCharsetPrincipal);
+ void /* thiscall */ SetParentCharset(const nsACString *parentCharset, int32_t parentCharsetSource, nsIPrincipal *parentCharsetPrincipal);
+ void /* thiscall */ GetParentCharset(nsACString *parentCharset, int32_t *parentCharsetSource, nsIPrincipal **parentCharsetPrincipal);
nsresult GetRecordProfileTimelineMarkers(bool *aRecordProfileTimelineMarkers);
nsresult SetRecordProfileTimelineMarkers(bool aRecordProfileTimelineMarkers);
nsresult Now(int /* DOMHighResTimeStamp */ *_retval);
@@ -3891,7 +3891,7 @@ interface nsIDocShell : nsIDocShellTreeItem
nsresult SetSandboxFlags(uint32_t aSandboxFlags);
nsresult GetOnePermittedSandboxedNavigator(nsIDocShell **aOnePermittedSandboxedNavigator);
nsresult SetOnePermittedSandboxedNavigator(nsIDocShell *aOnePermittedSandboxedNavigator);
- bool IsSandboxedFrom(nsIDocShell *aTargetDocShell);
+ bool /* thiscall */ IsSandboxedFrom(nsIDocShell *aTargetDocShell);
nsresult GetMixedContentChannel(nsIChannel **aMixedContentChannel);
nsresult SetMixedContentChannel(nsIChannel *aMixedContentChannel);
nsresult GetAllowMixedContentAndConnectionData(bool *rootHasSecureConnection, bool *allowMixedContent, bool *isRootDocShell);
@@ -3948,10 +3948,10 @@ interface nsIMutationObserver : nsISupports
void /*CharacterDataChangeInfo*/ *aInfo);
void CharacterDataChanged(nsIDocument *aDocument, nsIContent *aContent,

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "d7e4193df2f22a87031e44ce358a626a5f92b295"
echo "91dd155e9bc13c1bc1be860cd67fe3e48c20feae"
}
# Show version information
@ -93,7 +93,6 @@ patch_enable_all ()
enable_api_ms_win_crt_Stub_DLLs="$1"
enable_authz_Stub_Functions="$1"
enable_browseui_Progress_Dialog="$1"
enable_cmd_Fix_Sharing="$1"
enable_comctl32_Button_Theming="$1"
enable_comctl32_PROPSHEET_InsertPage="$1"
enable_configure_Absolute_RPATH="$1"
@ -396,9 +395,6 @@ patch_enable ()
category-stable)
enable_category_stable="$2"
;;
cmd-Fix_Sharing)
enable_cmd_Fix_Sharing="$2"
;;
comctl32-Button_Theming)
enable_comctl32_Button_Theming="$2"
;;
@ -2384,21 +2380,6 @@ if test "$enable_browseui_Progress_Dialog" -eq 1; then
) >> "$patchlist"
fi
# Patchset cmd-Fix_Sharing
# |
# | This patchset fixes the following Wine bugs:
# | * [#34174] Fix sharing violation on temp file for piped output
# |
# | Modified files:
# | * programs/cmd/tests/test_builtins.cmd.exp, programs/cmd/wcmdmain.c
# |
if test "$enable_cmd_Fix_Sharing" -eq 1; then
patch_apply cmd-Fix_Sharing/0001-cmd-Fix-sharing-permissions-for-pipe-file.patch
(
echo '+ { "Sebastian Lackner", "cmd: Fix sharing permissions for pipe file.", 1 },';
) >> "$patchlist"
fi
# Patchset comctl32-Button_Theming
# |
# | This patchset fixes the following Wine bugs:
@ -2694,16 +2675,12 @@ fi
# | * [#26898] Support for DDS file format in D3DXSaveTextureToFileInMemory
# |
# | Modified files:
# | * dlls/d3dx9_36/d3dx9_36_private.h, dlls/d3dx9_36/surface.c, dlls/d3dx9_36/tests/surface.c, dlls/d3dx9_36/texture.c
# | * dlls/d3dx9_36/d3dx9_36_private.h, dlls/d3dx9_36/surface.c, dlls/d3dx9_36/texture.c
# |
if test "$enable_d3dx9_36_DDS" -eq 1; then
patch_apply d3dx9_36-DDS/0001-d3dx9_36-tests-Add-D3DXSaveSurfaceToFileInMemory-D3D.patch
patch_apply d3dx9_36-DDS/0002-d3dx9_36-Fix-several-issues-in-save_dds_surface_to_m.patch
patch_apply d3dx9_36-DDS/0003-d3dx9_36-Add-support-for-FOURCC-surface-to-save_dds_.patch
patch_apply d3dx9_36-DDS/0004-d3dx9_36-Improve-D3DXSaveTextureToFile-to-save-simpl.patch
patch_apply d3dx9_36-DDS/0001-d3dx9_36-Add-support-for-FOURCC-surface-to-save_dds_.patch
patch_apply d3dx9_36-DDS/0002-d3dx9_36-Improve-D3DXSaveTextureToFile-to-save-simpl.patch
(
echo '+ { "Alistair Leslie-Hughes", "d3dx9_36/tests: Add D3DXSaveSurfaceToFileInMemory D3DXIFF_DDS tests.", 1 },';
echo '+ { "Christian Costa", "d3dx9_36: Fix several issues in save_dds_surface_to_memory.", 1 },';
echo '+ { "Christian Costa", "d3dx9_36: Add support for FOURCC surface to save_dds_surface_to_memory.", 1 },';
echo '+ { "Christian Costa", "d3dx9_36: Improve D3DXSaveTextureToFile to save simple texture to dds file.", 1 },';
) >> "$patchlist"

View File

@ -1,4 +1,4 @@
From 410c5748849a9467bd5ee302ea96a20bd770f059 Mon Sep 17 00:00:00 2001
From e95849bf089a6b93c67e1927a646a4e8bb35a243 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 10 Oct 2013 16:29:42 +0200
Subject: wined3d: Create dummy textures through the CS.
@ -7,9 +7,9 @@ Hacky version. Just good enough to see if the double context during init is what
crash.
---
dlls/wined3d/cs.c | 30 ++++++++++++++++++++++++++++++
dlls/wined3d/device.c | 17 ++++++-----------
dlls/wined3d/device.c | 19 +++++++------------
dlls/wined3d/wined3d_private.h | 4 +++-
3 files changed, 39 insertions(+), 12 deletions(-)
3 files changed, 40 insertions(+), 13 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index bd83689..383c9a5 100644
@ -74,7 +74,7 @@ index bd83689..383c9a5 100644
static inline void *_wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, BOOL prio)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index c479b80..04a36a2 100644
index 1b0226a..df19923 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -651,7 +651,7 @@ out:
@ -134,12 +134,14 @@ index c479b80..04a36a2 100644
/* Clear the screen */
if (swapchain->back_buffers && swapchain->back_buffers[0])
clear_flags |= WINED3DCLEAR_TARGET;
@@ -4503,7 +4498,7 @@ static HRESULT create_primary_opengl_context(struct wined3d_device *device, stru
@@ -4504,8 +4499,8 @@ static HRESULT create_primary_opengl_context(struct wined3d_device *device, stru
swapchain->context[0] = context;
swapchain->num_contexts = 1;
- create_dummy_textures(device, context);
- create_default_sampler(device);
+ device_create_dummy_textures(device, context);
+ device_create_default_sampler(device);
context_release(context);
return WINED3D_OK;

View File

@ -1,17 +1,17 @@
From bc64eef6fb48de707d8d19cb604e748e207742e4 Mon Sep 17 00:00:00 2001
From 031a0b58fd0d26fabae25fd1ad9f0030f8e58290 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 10 Oct 2013 18:40:04 +0200
Subject: wined3d: Recreate ctx and dummy textures through the CS after resets.
---
dlls/wined3d/device.c | 26 ++++----------------------
1 file changed, 4 insertions(+), 22 deletions(-)
dlls/wined3d/device.c | 27 ++++-----------------------
1 file changed, 4 insertions(+), 23 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 28b1c81..a113e21 100644
index df19923..fe0a014 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4189,8 +4189,6 @@ static void delete_opengl_contexts(struct wined3d_device *device, struct wined3d
@@ -4457,8 +4457,6 @@ static void delete_opengl_contexts(struct wined3d_device *device, struct wined3d
static HRESULT create_primary_opengl_context(struct wined3d_device *device, struct wined3d_swapchain *swapchain)
{
@ -20,7 +20,7 @@ index 28b1c81..a113e21 100644
HRESULT hr;
if (FAILED(hr = device->shader_backend->shader_alloc_private(device,
@@ -4207,32 +4205,16 @@ static HRESULT create_primary_opengl_context(struct wined3d_device *device, stru
@@ -4475,33 +4473,16 @@ static HRESULT create_primary_opengl_context(struct wined3d_device *device, stru
return hr;
}
@ -52,11 +52,12 @@ index 28b1c81..a113e21 100644
- swapchain->context[0] = context;
- swapchain->num_contexts = 1;
- device_create_dummy_textures(device, context);
- device_create_default_sampler(device);
- context_release(context);
+ wined3d_cs_emit_create_dummy_textures(device->cs);
return WINED3D_OK;
}
--
2.1.3
2.6.4

View File

@ -1,14 +1,14 @@
From 166fc2ef37010a9e368cd25a1ee2d3e722c087ed Mon Sep 17 00:00:00 2001
From fd1de8f949ff49edbaff899af7e3a6ce83b99521 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Fri, 11 Oct 2013 10:17:42 +0200
Subject: wined3d: Delete GL contexts through the CS in uninit_3d.
---
dlls/wined3d/device.c | 34 ++++------------------------------
1 file changed, 4 insertions(+), 30 deletions(-)
dlls/wined3d/device.c | 33 +++------------------------------
1 file changed, 3 insertions(+), 30 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 039b645..8941632 100644
index 800944b..8941632 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1091,8 +1091,6 @@ static void device_free_sampler(struct wine_rb_entry *entry, void *context)
@ -67,15 +67,7 @@ index 039b645..8941632 100644
if (device->back_buffer_view)
{
@@ -4432,6 +4404,7 @@ void device_delete_opengl_contexts_cs(struct wined3d_device *device, struct wine
device->blitter->free_private(device);
device->shader_backend->shader_free_private(device);
destroy_dummy_textures(device, gl_info);
+ destroy_default_sampler(device);
context_release(context);
@@ -4442,6 +4415,7 @@ void device_delete_opengl_contexts_cs(struct wined3d_device *device, struct wine
@@ -4443,6 +4415,7 @@ void device_delete_opengl_contexts_cs(struct wined3d_device *device, struct wine
HeapFree(GetProcessHeap(), 0, swapchain->context);
swapchain->context = NULL;

View File

@ -3439,17 +3439,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (device->depth_blt_texture)
{
@@ -4386,7 +5025,9 @@
device->blitter->free_private(device);
device->shader_backend->shader_free_private(device);
destroy_dummy_textures(device, gl_info);
+#if defined(STAGING_CSMT)
destroy_default_sampler(device);
+#endif /* STAGING_CSMT */
context_release(context);
@@ -4397,6 +5038,7 @@
@@ -4397,6 +5036,7 @@
HeapFree(GetProcessHeap(), 0, swapchain->context);
swapchain->context = NULL;
@ -3457,7 +3447,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
swapchain->num_contexts = 0;
}
@@ -4416,6 +5058,14 @@
@@ -4416,6 +5056,14 @@
static HRESULT create_primary_opengl_context(struct wined3d_device *device, struct wined3d_swapchain *swapchain)
{
@ -3472,7 +3462,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
HRESULT hr;
if (FAILED(hr = device->shader_backend->shader_alloc_private(device,
@@ -4432,6 +5082,7 @@
@@ -4432,6 +5080,7 @@
return hr;
}
@ -3480,7 +3470,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
hr = wined3d_cs_emit_create_swapchain_context(device->cs, swapchain);
if (FAILED(hr))
{
@@ -4442,6 +5093,34 @@
@@ -4442,6 +5091,35 @@
}
wined3d_cs_emit_create_dummy_textures(device->cs);
@ -3510,12 +3500,13 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
+ swapchain->context[0] = context;
+ swapchain->num_contexts = 1;
+ create_dummy_textures(device, context);
+ create_default_sampler(device);
+ context_release(context);
+#endif /* STAGING_CSMT */
return WINED3D_OK;
}
@@ -4460,9 +5139,11 @@
@@ -4460,9 +5138,11 @@
TRACE("device %p, swapchain_desc %p, mode %p, callback %p, reset_state %#x.\n",
device, swapchain_desc, mode, callback, reset_state);
@ -3527,7 +3518,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (!(swapchain = wined3d_device_get_swapchain(device, 0)))
{
ERR("Failed to get the first implicit swapchain.\n");
@@ -4477,9 +5158,21 @@
@@ -4477,9 +5157,21 @@
wined3d_texture_decref(device->logo_texture);
device->logo_texture = NULL;
}
@ -3549,7 +3540,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
{
for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i)
{
@@ -4488,6 +5181,7 @@
@@ -4488,6 +5180,7 @@
}
wined3d_device_set_depth_stencil_view(device, NULL);
@ -3557,7 +3548,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (reset_state)
{
state_unbind_resources(&device->state);
@@ -4497,6 +5191,12 @@
@@ -4497,6 +5190,12 @@
{
wined3d_texture_decref(device->cs->onscreen_depth_stencil->container);
device->cs->onscreen_depth_stencil = NULL;
@ -3570,7 +3561,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
}
if (reset_state)
@@ -4509,6 +5209,7 @@
@@ -4509,6 +5208,7 @@
}
}
@ -3578,7 +3569,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
/* Free implicit resources and wait for the command stream before modifying
* swapchain parameters. After modifying the swapchain parameters a new GL
* context may be acquired by the worker thread. This causes problems in the
@@ -4530,6 +5231,7 @@
@@ -4530,6 +5230,7 @@
}
device->cs->ops->finish(device->cs);
@ -3586,7 +3577,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
TRACE("New params:\n");
TRACE("backbuffer_width %u\n", swapchain_desc->backbuffer_width);
TRACE("backbuffer_height %u\n", swapchain_desc->backbuffer_height);
@@ -4656,6 +5358,13 @@
@@ -4656,6 +5357,13 @@
swapchain_desc->multisample_type, swapchain_desc->multisample_quality)))
return hr;
@ -3600,7 +3591,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (swapchain->desc.enable_auto_depth_stencil)
{
struct wined3d_resource_desc texture_desc;
@@ -4698,6 +5407,13 @@
@@ -4698,6 +5406,13 @@
wined3d_device_set_depth_stencil_view(device, device->auto_depth_stencil_view);
}
@ -3614,7 +3605,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (swapchain->desc.backbuffer_count && FAILED(hr = wined3d_rendertarget_view_create_from_surface(
surface_from_resource(wined3d_texture_get_sub_resource(swapchain->back_buffers[0], 0)),
NULL, &wined3d_null_parent_ops, &device->back_buffer_view)))
@@ -4718,12 +5434,20 @@
@@ -4718,12 +5433,20 @@
}
wined3d_cs_emit_reset_state(device->cs);
state_cleanup(&device->state);
@ -3635,7 +3626,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
&device->adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT)))
ERR("Failed to initialize device state, hr %#x.\n", hr);
device->update_state = &device->state;
@@ -4732,6 +5456,7 @@
@@ -4732,6 +5455,7 @@
}
else if (device->back_buffer_view)
{
@ -3643,7 +3634,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
struct wined3d_state *state = &device->state;
wined3d_device_set_rendertarget_view(device, 0, device->back_buffer_view, FALSE);
@@ -4747,6 +5472,24 @@
@@ -4747,6 +5471,24 @@
state->scissor_rect.left = 0;
state->scissor_rect.right = swapchain->desc.backbuffer_width;
state->scissor_rect.bottom = swapchain->desc.backbuffer_height;
@ -3668,7 +3659,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
wined3d_cs_emit_set_scissor_rect(device->cs, &state->scissor_rect);
}
@@ -4822,6 +5565,10 @@
@@ -4822,6 +5564,10 @@
TRACE("device %p, resource %p, type %s.\n", device, resource, debug_d3dresourcetype(type));
@ -3679,7 +3670,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
switch (type)
{
case WINED3D_RTYPE_SURFACE:
@@ -4832,6 +5579,7 @@
@@ -4832,6 +5578,7 @@
for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i)
{
@ -3687,7 +3678,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (wined3d_rendertarget_view_get_surface(device->state.fb.render_targets[i]) == surface)
{
ERR("Surface %p is still in use as render target %u.\n", surface, i);
@@ -4843,6 +5591,19 @@
@@ -4843,6 +5590,19 @@
{
ERR("Surface %p is still in use as depth/stencil buffer.\n", surface);
device->state.fb.depth_stencil = NULL;
@ -3707,7 +3698,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
}
}
break;
@@ -5005,7 +5766,11 @@
@@ -5005,7 +5765,11 @@
device->blitter = adapter->blitter;
@ -3719,7 +3710,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
&adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT)))
{
ERR("Failed to initialize device state, hr %#x.\n", hr);
@@ -5104,6 +5869,7 @@
@@ -5104,6 +5868,7 @@
else
return CallWindowProcA(proc, window, message, wparam, lparam);
}
@ -3727,7 +3718,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
/* Context activation is done by the caller */
struct wined3d_gl_bo *wined3d_device_get_bo(struct wined3d_device *device, UINT size, GLenum gl_usage,
@@ -5157,3 +5923,4 @@
@@ -5157,3 +5922,4 @@
wined3d_device_destroy_bo(device, context, bo);
}
@ -8360,7 +8351,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -3733,7 +3733,11 @@
@@ -3765,7 +3765,11 @@
float y_offset = context->render_offscreen
? (center_offset - (2.0f * y) - h) / h
: (center_offset - (2.0f * y) - h) / -h;
@ -8372,7 +8363,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
state->render_states[WINED3D_RS_ZENABLE] : WINED3D_ZB_FALSE;
float z_scale = zenable ? 2.0f : 0.0f;
float z_offset = zenable ? -1.0f : 0.0f;
@@ -3856,6 +3860,7 @@
@@ -3888,6 +3892,7 @@
/* case WINED3D_TTFF_COUNT1: Won't ever get here. */
case WINED3D_TTFF_COUNT2:
mat._13 = mat._23 = mat._33 = mat._43 = 0.0f;
@ -8380,7 +8371,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
/* OpenGL divides the first 3 vertex coord by the 4th by default,
* which is essentially the same as D3DTTFF_PROJECTED. Make sure that
* the 4th coord evaluates to 1.0 to eliminate that.
@@ -3868,6 +3873,20 @@
@@ -3900,6 +3905,20 @@
* A more serious problem occurs if the app passes 4 coordinates in, and the
* 4th is != 1.0(opengl default). This would have to be fixed in draw_strided_slow
* or a replacement shader. */
@ -8401,7 +8392,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
default:
mat._14 = mat._24 = mat._34 = 0.0f; mat._44 = 1.0f;
}
@@ -4325,7 +4344,11 @@
@@ -4357,7 +4376,11 @@
unsigned int i;
DWORD ttff;
DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2;