Rebase against 8b1737c0fdf1d3d905bea281d9241f1f48f333e9.

This commit is contained in:
Sebastian Lackner 2017-04-10 07:36:39 +02:00
parent 25bd49ecb6
commit e4ac3ea735
12 changed files with 122 additions and 328 deletions

View File

@ -1,4 +1,4 @@
From 9b4d4c9b2097f3134cc276dedfe8804475dcdfa6 Mon Sep 17 00:00:00 2001
From 0c19e06c3931da74e58127739817d2443d8021f8 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Fri, 19 Dec 2014 22:31:46 +0100
Subject: d3dx9_36: Implement ID3DXEffect_FindNextValidTechnique + add tests.
@ -58,10 +58,10 @@ index 76580417e9..fd9c4bd1aa 100644
static BOOL walk_parameter_dep(struct d3dx_parameter *param, walk_parameter_dep_func param_func,
diff --git a/dlls/d3dx9_36/tests/effect.c b/dlls/d3dx9_36/tests/effect.c
index 54f5377106..bcf4f68a57 100644
index fd94e58476..d96a2df1eb 100644
--- a/dlls/d3dx9_36/tests/effect.c
+++ b/dlls/d3dx9_36/tests/effect.c
@@ -4957,6 +4957,65 @@ static void test_effect_commitchanges(IDirect3DDevice9 *device)
@@ -5309,6 +5309,65 @@ static void test_effect_preshader_relative_addressing(IDirect3DDevice9 *device)
effect->lpVtbl->Release(effect);
}
@ -127,10 +127,10 @@ index 54f5377106..bcf4f68a57 100644
START_TEST(effect)
{
HWND wnd;
@@ -5002,6 +5061,7 @@ START_TEST(effect)
test_effect_isparameterused(device);
@@ -5355,6 +5414,7 @@ START_TEST(effect)
test_effect_out_of_bounds_selector(device);
test_effect_commitchanges(device);
test_effect_preshader_relative_addressing(device);
+ test_effect_technique_validation(device);
count = IDirect3DDevice9_Release(device);

View File

@ -1,26 +0,0 @@
From cc25929d3a152ee70f0f779091d82da88010f2ae Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov@codeweavers.com>
Date: Mon, 3 Apr 2017 08:14:08 +0300
Subject: dwrite: Added missing max bitmap size initialization.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
---
dlls/dwrite/font.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index e89d0a825a..4e35ceab2e 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -5203,6 +5203,7 @@ HRESULT create_glyphrunanalysis(const struct glyphrunanalysis_desc *desc, IDWrit
analysis->flags = 0;
analysis->bitmap = NULL;
+ analysis->max_glyph_bitmap_size = 0;
analysis->ppdip = desc->ppdip;
analysis->origin.x = desc->origin_x * desc->ppdip;
analysis->origin.y = desc->origin_y * desc->ppdip;
--
2.11.0

View File

@ -1,4 +1,4 @@
From 0d26f0fea6b78f147597477a4a8a90ac82a1f4a0 Mon Sep 17 00:00:00 2001
From 4300d95851054139480497a5f268c64e152ec5e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 15 Jan 2016 12:58:17 +0100
Subject: msvcr120: Add stub for _SetWinRTOutOfMemoryExceptionCallback.
@ -10,7 +10,7 @@ Subject: msvcr120: Add stub for _SetWinRTOutOfMemoryExceptionCallback.
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 84edf51369..139acab465 100644
index bb14b78433..05a4d28d77 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -844,7 +844,7 @@
@ -23,7 +23,7 @@ index 84edf51369..139acab465 100644
@ stub -arch=win64 _SetThrowImageBase
@ cdecl _Strftime(ptr long str ptr ptr)
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index 46a76da1c8..d9a1e46359 100644
index 060438d720..4a579af34f 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -838,7 +838,7 @@
@ -36,12 +36,12 @@ index 46a76da1c8..d9a1e46359 100644
@ stub -arch=win64 _SetThrowImageBase
@ cdecl _Strftime(ptr long str ptr ptr) msvcr120._Strftime
diff --git a/dlls/msvcrt/misc.c b/dlls/msvcrt/misc.c
index 767972f893..fbbdfcf148 100644
index 9e3836480b..7d3d362ba1 100644
--- a/dlls/msvcrt/misc.c
+++ b/dlls/msvcrt/misc.c
@@ -542,3 +542,11 @@ LONG CDECL MSVCRT__crtUnhandledException(EXCEPTION_POINTERS *ep)
SetUnhandledExceptionFilter(NULL);
return UnhandledExceptionFilter(ep);
@@ -551,3 +551,11 @@ void CDECL MSVCRT__crtSleep(DWORD timeout)
TRACE("(%u)\n", timeout);
Sleep(timeout);
}
+
+/*********************************************************************

View File

@ -1,86 +0,0 @@
From aa89e0ce07424652eb0176dacf32870e9c3193c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 26 Feb 2017 22:11:09 +0100
Subject: msvcrt: Add stub for Concurrency::details::_CurrentScheduler::_Id.
---
dlls/concrt140/concrt140.spec | 2 +-
dlls/msvcr110/msvcr110.spec | 2 +-
dlls/msvcr120/msvcr120.spec | 2 +-
dlls/msvcr120_app/msvcr120_app.spec | 2 +-
dlls/msvcrt/lock.c | 7 +++++++
5 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/dlls/concrt140/concrt140.spec b/dlls/concrt140/concrt140.spec
index 51ac8fee97..2971769d8c 100644
--- a/dlls/concrt140/concrt140.spec
+++ b/dlls/concrt140/concrt140.spec
@@ -346,7 +346,7 @@
@ stub ?_GetNumberOfVirtualProcessors@_CurrentScheduler@details@Concurrency@@SAIXZ
@ stub -arch=i386 ?_GetScheduler@_Scheduler@details@Concurrency@@QAEPAVScheduler@3@XZ
@ stub -arch=win64 ?_GetScheduler@_Scheduler@details@Concurrency@@QEAAPEAVScheduler@3@XZ
-@ stub ?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ
+@ cdecl ?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ() msvcr120.?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ
@ stub -arch=i386 ?_Internal_assign@_Concurrent_vector_base_v4@details@Concurrency@@IAEXABV123@IP6AXPAXI@ZP6AX1PBXI@Z4@Z
@ stub -arch=win64 ?_Internal_assign@_Concurrent_vector_base_v4@details@Concurrency@@IEAAXAEBV123@_KP6AXPEAX1@ZP6AX2PEBX1@Z5@Z
@ stub -arch=i386 ?_Internal_capacity@_Concurrent_vector_base_v4@details@Concurrency@@IBEIXZ
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index 8aa390ee20..451bd265ac 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -540,7 +540,7 @@
@ stub -arch=arm ?_GetScheduler@_Scheduler@details@Concurrency@@QAAPAVScheduler@3@XZ
@ stub -arch=i386 ?_GetScheduler@_Scheduler@details@Concurrency@@QAEPAVScheduler@3@XZ
@ stub -arch=win64 ?_GetScheduler@_Scheduler@details@Concurrency@@QEAAPEAVScheduler@3@XZ
-@ stub ?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ
+@ cdecl ?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ() _CurrentScheduler_Id
@ stub -arch=arm ?_Invoke@_CancellationTokenRegistration@details@Concurrency@@AAAXXZ
@ stub -arch=i386 ?_Invoke@_CancellationTokenRegistration@details@Concurrency@@AAEXXZ
@ stub -arch=win64 ?_Invoke@_CancellationTokenRegistration@details@Concurrency@@AEAAXXZ
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 7a3a83141c..510f0f0cfa 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -533,7 +533,7 @@
@ stub -arch=arm ?_GetScheduler@_Scheduler@details@Concurrency@@QAAPAVScheduler@3@XZ
@ stub -arch=i386 ?_GetScheduler@_Scheduler@details@Concurrency@@QAEPAVScheduler@3@XZ
@ stub -arch=win64 ?_GetScheduler@_Scheduler@details@Concurrency@@QEAAPEAVScheduler@3@XZ
-@ stub ?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ
+@ cdecl ?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ() _CurrentScheduler_Id
@ stub -arch=arm ?_IsCanceling@_StructuredTaskCollection@details@Concurrency@@QAA_NXZ
@ stub -arch=i386 ?_IsCanceling@_StructuredTaskCollection@details@Concurrency@@QAE_NXZ
@ stub -arch=win64 ?_IsCanceling@_StructuredTaskCollection@details@Concurrency@@QEAA_NXZ
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index 62926d469e..7b0f467667 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -529,7 +529,7 @@
@ stub -arch=arm ?_GetScheduler@_Scheduler@details@Concurrency@@QAAPAVScheduler@3@XZ
@ stub -arch=i386 ?_GetScheduler@_Scheduler@details@Concurrency@@QAEPAVScheduler@3@XZ
@ stub -arch=win64 ?_GetScheduler@_Scheduler@details@Concurrency@@QEAAPEAVScheduler@3@XZ
-@ stub ?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ
+@ cdecl ?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ() msvcr120.?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ
@ stub -arch=arm ?_IsCanceling@_StructuredTaskCollection@details@Concurrency@@QAA_NXZ
@ stub -arch=i386 ?_IsCanceling@_StructuredTaskCollection@details@Concurrency@@QAE_NXZ
@ stub -arch=win64 ?_IsCanceling@_StructuredTaskCollection@details@Concurrency@@QEAA_NXZ
diff --git a/dlls/msvcrt/lock.c b/dlls/msvcrt/lock.c
index edfefdbd98..8117713524 100644
--- a/dlls/msvcrt/lock.c
+++ b/dlls/msvcrt/lock.c
@@ -933,6 +933,13 @@ void __thiscall _Condition_variable_notify_all(_Condition_variable *this)
ptr = next;
}
}
+
+/* ?_Id@_CurrentScheduler@details@Concurrency@@SAIXZ */
+unsigned int __cdecl _CurrentScheduler_Id(void)
+{
+ FIXME("stub\n");
+ return -1;
+}
#endif
#if _MSVCR_VER >= 100
--
2.11.0

View File

@ -1 +0,0 @@
Fixes: [40628] Implement stub for Concurrency::details::_CurrentScheduler::_Id

View File

@ -52,13 +52,13 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "64e4a03a92498abea428dc567372f3996fa9dc3a"
echo "8b1737c0fdf1d3d905bea281d9241f1f48f333e9"
}
# Show version information
version()
{
echo "Wine Staging 2.5"
echo "Wine Staging 2.6 (unreleased)"
echo "Copyright (C) 2014-2017 the Wine Staging project authors."
echo ""
echo "Patchset to be applied on upstream Wine:"
@ -147,7 +147,6 @@ patch_enable_all ()
enable_dsound_EAX="$1"
enable_dsound_Fast_Mixer="$1"
enable_dsound_Revert_Cleanup="$1"
enable_dwrite_Missing_Initialization="$1"
enable_dxdiagn_Display_Information="$1"
enable_dxdiagn_Enumerate_DirectSound="$1"
enable_dxdiagn_GetChildContainer_Leaf_Nodes="$1"
@ -213,7 +212,6 @@ patch_enable_all ()
enable_msi_msi_vcl_get_cost="$1"
enable_msidb_Implementation="$1"
enable_msvcr120__SetWinRTOutOfMemoryExceptionCallback="$1"
enable_msvcrt_CurrentScheduler_Id="$1"
enable_msvcrt_Math_Precision="$1"
enable_msvfw32_ICGetDisplayFormat="$1"
enable_ntdll_APC_Performance="$1"
@ -673,9 +671,6 @@ patch_enable ()
dsound-Revert_Cleanup)
enable_dsound_Revert_Cleanup="$2"
;;
dwrite-Missing_Initialization)
enable_dwrite_Missing_Initialization="$2"
;;
dxdiagn-Display_Information)
enable_dxdiagn_Display_Information="$2"
;;
@ -871,9 +866,6 @@ patch_enable ()
msvcr120-_SetWinRTOutOfMemoryExceptionCallback)
enable_msvcr120__SetWinRTOutOfMemoryExceptionCallback="$2"
;;
msvcrt-CurrentScheduler_Id)
enable_msvcrt_CurrentScheduler_Id="$2"
;;
msvcrt-Math_Precision)
enable_msvcrt_Math_Precision="$2"
;;
@ -3956,18 +3948,6 @@ if test "$enable_dsound_EAX" -eq 1; then
) >> "$patchlist"
fi
# Patchset dwrite-Missing_Initialization
# |
# | Modified files:
# | * dlls/dwrite/font.c
# |
if test "$enable_dwrite_Missing_Initialization" -eq 1; then
patch_apply dwrite-Missing_Initialization/0001-dwrite-Added-missing-max-bitmap-size-initialization.patch
(
printf '%s\n' '+ { "Nikolay Sivov", "dwrite: Added missing max bitmap size initialization.", 1 },';
) >> "$patchlist"
fi
# Patchset dxdiagn-Display_Information
# |
# | This patchset fixes the following Wine bugs:
@ -5131,22 +5111,6 @@ if test "$enable_msvcr120__SetWinRTOutOfMemoryExceptionCallback" -eq 1; then
) >> "$patchlist"
fi
# Patchset msvcrt-CurrentScheduler_Id
# |
# | This patchset fixes the following Wine bugs:
# | * [#40628] Implement stub for Concurrency::details::_CurrentScheduler::_Id
# |
# | Modified files:
# | * dlls/concrt140/concrt140.spec, dlls/msvcr110/msvcr110.spec, dlls/msvcr120/msvcr120.spec,
# | dlls/msvcr120_app/msvcr120_app.spec, dlls/msvcrt/lock.c
# |
if test "$enable_msvcrt_CurrentScheduler_Id" -eq 1; then
patch_apply msvcrt-CurrentScheduler_Id/0001-msvcrt-Add-stub-for-Concurrency-details-_CurrentSche.patch
(
printf '%s\n' '+ { "Michael Müller", "msvcrt: Add stub for Concurrency::details::_CurrentScheduler::_Id.", 1 },';
) >> "$patchlist"
fi
# Patchset msvcrt-Math_Precision
# |
# | This patchset fixes the following Wine bugs:
@ -8781,9 +8745,9 @@ fi
# | * [#11674] Support for CSMT (command stream) to increase graphic performance
# |
# | Modified files:
# | * dlls/d3d9/tests/visual.c, dlls/wined3d/buffer.c, dlls/wined3d/context.c, dlls/wined3d/cs.c, dlls/wined3d/device.c,
# | dlls/wined3d/query.c, dlls/wined3d/resource.c, dlls/wined3d/surface.c, dlls/wined3d/swapchain.c, dlls/wined3d/texture.c,
# | dlls/wined3d/view.c, dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h
# | * dlls/wined3d/buffer.c, dlls/wined3d/context.c, dlls/wined3d/cs.c, dlls/wined3d/device.c, dlls/wined3d/query.c,
# | dlls/wined3d/resource.c, dlls/wined3d/surface.c, dlls/wined3d/swapchain.c, dlls/wined3d/texture.c, dlls/wined3d/view.c,
# | dlls/wined3d/wined3d_main.c, dlls/wined3d/wined3d_private.h
# |
if test "$enable_wined3d_CSMT_Main" -eq 1; then
patch_apply wined3d-CSMT_Main/9999-IfDefined.patch

View File

@ -1,4 +1,4 @@
From fe0a9fc45c18dc6dc76f963c9e904a754e1792d1 Mon Sep 17 00:00:00 2001
From ad8dcad06c9094763b2fe04f469d07701a74abeb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 24 May 2015 03:56:52 +0200
Subject: wbemdisp: Add ISWbemSecurity stub interface.
@ -8,7 +8,7 @@ Subject: wbemdisp: Add ISWbemSecurity stub interface.
1 file changed, 244 insertions(+), 5 deletions(-)
diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c
index 3465eb1..756205d 100644
index 6fdd608458..0a0b7d9d9b 100644
--- a/dlls/wbemdisp/locator.c
+++ b/dlls/wbemdisp/locator.c
@@ -37,6 +37,7 @@
@ -19,25 +19,25 @@ index 3465eb1..756205d 100644
enum type_id
{
@@ -44,6 +45,7 @@ enum type_id
ISWbemObject_tid,
ISWbemObjectSet_tid,
@@ -46,6 +47,7 @@ enum type_id
ISWbemProperty_tid,
ISWbemPropertySet_tid,
ISWbemServices_tid,
+ ISWbemSecurity_tid,
last_tid
};
@@ -55,7 +57,8 @@ static REFIID wbemdisp_tid_id[] =
&IID_ISWbemLocator,
&IID_ISWbemObject,
@@ -59,7 +61,8 @@ static REFIID wbemdisp_tid_id[] =
&IID_ISWbemObjectSet,
&IID_ISWbemProperty,
&IID_ISWbemPropertySet,
- &IID_ISWbemServices
+ &IID_ISWbemServices,
+ &IID_ISWbemSecurity
};
static HRESULT get_typeinfo( enum type_id tid, ITypeInfo **ret )
@@ -1146,8 +1149,12 @@ static HRESULT WINAPI services_get_Security_(
@@ -1872,8 +1875,12 @@ static HRESULT WINAPI services_get_Security_(
ISWbemServices *iface,
ISWbemSecurity **objWbemSecurity )
{
@ -52,7 +52,7 @@ index 3465eb1..756205d 100644
}
static const ISWbemServicesVtbl services_vtbl =
@@ -1400,8 +1407,12 @@ static HRESULT WINAPI locator_get_Security_(
@@ -2127,8 +2134,12 @@ static HRESULT WINAPI locator_get_Security_(
ISWbemLocator *iface,
ISWbemSecurity **objWbemSecurity )
{
@ -67,7 +67,7 @@ index 3465eb1..756205d 100644
}
static const ISWbemLocatorVtbl locator_vtbl =
@@ -1432,3 +1443,231 @@ HRESULT SWbemLocator_create( void **obj )
@@ -2159,3 +2170,231 @@ HRESULT SWbemLocator_create( void **obj )
TRACE( "returning iface %p\n", *obj );
return S_OK;
}
@ -300,5 +300,5 @@ index 3465eb1..756205d 100644
+ return S_OK;
+}
--
2.4.0
2.11.0

View File

@ -1,40 +1,36 @@
From ea8d7d6e5661a0cf96ca5a224a60474535ff8157 Mon Sep 17 00:00:00 2001
From df6bff3ca093f772ae40bc98ae32fcd3c19aa963 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Tue, 4 Oct 2016 18:20:31 +0800
Subject: windowscodecs/tests: Make create_decoder() return an error code in
PNG tests.
---
dlls/windowscodecs/tests/pngformat.c | 51 ++++++++++++++++++------------------
1 file changed, 26 insertions(+), 25 deletions(-)
dlls/windowscodecs/tests/pngformat.c | 63 ++++++++++++++++++------------------
1 file changed, 32 insertions(+), 31 deletions(-)
diff --git a/dlls/windowscodecs/tests/pngformat.c b/dlls/windowscodecs/tests/pngformat.c
index 296866f..95393c9 100644
index 58f698d987..5d11c65f1d 100644
--- a/dlls/windowscodecs/tests/pngformat.c
+++ b/dlls/windowscodecs/tests/pngformat.c
@@ -275,16 +275,17 @@ static const char png_color_profile[] = {
@@ -276,37 +276,38 @@ static const char png_color_profile[] = {
static IWICImagingFactory *factory;
-static IWICBitmapDecoder *create_decoder(const void *image_data, UINT image_size)
+static HRESULT create_decoder(const void *image_data, UINT image_size, IWICBitmapDecoder **decoder)
{
HGLOBAL hmem;
BYTE *data;
HRESULT hr;
- IWICBitmapDecoder *decoder = NULL;
IStream *stream;
GUID format;
LONG refcount;
ULARGE_INTEGER pos;
LARGE_INTEGER zero;
+ *decoder = NULL;
+
hmem = GlobalAlloc(0, image_size);
data = GlobalLock(hmem);
memcpy(data, image_data, image_size);
@@ -293,19 +294,19 @@ static IWICBitmapDecoder *create_decoder(const void *image_data, UINT image_size
hr = CreateStreamOnHGlobal(hmem, TRUE, &stream);
ok(hr == S_OK, "CreateStreamOnHGlobal error %#x\n", hr);
stream = SHCreateMemStream (image_data, image_size);
ok(stream != NULL, "SHCreateMemStream error\n");
- hr = IWICImagingFactory_CreateDecoderFromStream(factory, stream, NULL, 0, &decoder);
- ok(hr == S_OK, "CreateDecoderFromStream error %#x\n", hr);
@ -44,6 +40,14 @@ index 296866f..95393c9 100644
- ok(hr == S_OK, "GetContainerFormat error %#x\n", hr);
- ok(IsEqualGUID(&format, &GUID_ContainerFormatPng),
- "wrong container format %s\n", wine_dbgstr_guid(&format));
-
- zero.QuadPart = 0;
- IStream_Seek (stream, zero, STREAM_SEEK_CUR, &pos);
- ok(pos.QuadPart < image_size, "seek beyond the end of stream: %x%08x >= %x\n",
- (UINT)(pos.QuadPart >> 32), (UINT)pos.QuadPart, image_size);
-
- refcount = IStream_Release(stream);
- ok(refcount > 0, "expected stream refcount > 0\n");
+ hr = IWICImagingFactory_CreateDecoderFromStream(factory, stream, NULL, 0, decoder);
+ if (hr == S_OK)
+ {
@ -51,9 +55,12 @@ index 296866f..95393c9 100644
+ ok(hr == S_OK, "GetContainerFormat error %#x\n", hr);
+ ok(IsEqualGUID(&format, &GUID_ContainerFormatPng),
+ "wrong container format %s\n", wine_dbgstr_guid(&format));
- refcount = IStream_Release(stream);
- ok(refcount > 0, "expected stream refcount > 0\n");
+
+ zero.QuadPart = 0;
+ IStream_Seek (stream, zero, STREAM_SEEK_CUR, &pos);
+ ok(pos.QuadPart < image_size, "seek beyond the end of stream: %x%08x >= %x\n",
+ (UINT)(pos.QuadPart >> 32), (UINT)pos.QuadPart, image_size);
+
+ refcount = IStream_Release(stream);
+ ok(refcount > 0, "expected stream refcount > 0\n");
+ }
@ -63,7 +70,7 @@ index 296866f..95393c9 100644
}
static WCHAR *save_profile( BYTE *buffer, UINT size )
@@ -341,9 +342,9 @@ static void test_color_contexts(void)
@@ -342,9 +343,9 @@ static void test_color_contexts(void)
BYTE *buffer;
BOOL ret;
@ -76,7 +83,7 @@ index 296866f..95393c9 100644
/* global color context */
hr = IWICBitmapDecoder_GetColorContexts(decoder, 0, NULL, NULL);
@@ -369,9 +370,9 @@ static void test_color_contexts(void)
@@ -370,9 +371,9 @@ static void test_color_contexts(void)
IWICBitmapFrameDecode_Release(frame);
IWICBitmapDecoder_Release(decoder);
@ -89,7 +96,7 @@ index 296866f..95393c9 100644
/* global color context */
count = 0xdeadbeef;
@@ -547,9 +548,9 @@ static void test_png_palette(void)
@@ -548,9 +549,9 @@ static void test_png_palette(void)
UINT count, ret;
WICColor color[256];
@ -102,7 +109,7 @@ index 296866f..95393c9 100644
hr = IWICBitmapDecoder_GetFrame(decoder, 0, &frame);
ok(hr == S_OK, "GetFrame error %#x\n", hr);
@@ -617,9 +618,9 @@ static void test_color_formats(void)
@@ -618,9 +619,9 @@ static void test_color_formats(void)
buf[24] = td[i].bit_depth;
buf[25] = td[i].color_type;
@ -116,5 +123,5 @@ index 296866f..95393c9 100644
hr = IWICBitmapDecoder_GetFrame(decoder, 0, &frame);
ok(hr == S_OK, "GetFrame error %#x\n", hr);
--
2.9.0
2.11.0

View File

@ -1,39 +1,16 @@
From 8ec257b616f5e216f9c41eb5a08c8e1e10e57495 Mon Sep 17 00:00:00 2001
From 31bc8f2369c91f82e5773ce8be5de3701030387a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 4 Jul 2013 21:10:16 +0200
Subject: wined3d: Send render target view clears through the command stream
---
dlls/d3d9/tests/visual.c | 4 ++--
dlls/wined3d/cs.c | 49 ++++++++++++++++++++++++++++++++++++++++++
dlls/wined3d/device.c | 6 ++----
dlls/wined3d/cs.c | 46 ++++++++++++++++++++++++++++++++++++++++++
dlls/wined3d/device.c | 2 +-
dlls/wined3d/wined3d_private.h | 3 +++
4 files changed, 56 insertions(+), 6 deletions(-)
3 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 7070895aa2..c14ac9e938 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -1337,7 +1337,7 @@ static void color_fill_test(void)
* result on Wine.
* {D3DFMT_YUY2, "D3DFMT_YUY2", BLOCKS, 0},
* {D3DFMT_UYVY, "D3DFMT_UYVY", BLOCKS, 0}, */
- {D3DFMT_DXT1, "D3DFMT_DXT1", BLOCKS | TODO_FILL_RETURN, 0},
+ {D3DFMT_DXT1, "D3DFMT_DXT1", BLOCKS, 0},
/* Vendor-specific formats like ATI2N are a non-issue here since they're not
* supported as offscreen plain surfaces and do not support D3DUSAGE_RENDERTARGET
* when created as texture. */
@@ -1458,7 +1458,7 @@ static void color_fill_test(void)
{
hr = IDirect3DDevice9_ColorFill(device, surface, &rect2, 0xdeadbeef);
if (formats[i].flags & BLOCKS)
- todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x, fmt=%s.\n", hr, formats[i].name);
+ ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x, fmt=%s.\n", hr, formats[i].name);
else
ok(SUCCEEDED(hr), "Failed to color fill, hr %#x, fmt=%s.\n", hr, formats[i].name);
}
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 80a9322224..c30dfbc898 100644
index 80a9322224..04dac9b4ed 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -68,6 +68,7 @@ enum wined3d_cs_op
@ -63,7 +40,7 @@ index 80a9322224..c30dfbc898 100644
static void wined3d_cs_exec_sync(struct wined3d_cs *cs, const void *data)
{
}
@@ -1952,6 +1965,41 @@ void wined3d_cs_emit_push_constants(struct wined3d_cs *cs, enum wined3d_push_con
@@ -1952,6 +1965,38 @@ void wined3d_cs_emit_push_constants(struct wined3d_cs *cs, enum wined3d_push_con
cs->ops->submit(cs);
}
@ -72,10 +49,7 @@ index 80a9322224..c30dfbc898 100644
+ const struct wined3d_cs_clear_rtv *op = data;
+ struct wined3d_device *device = cs->device;
+
+ if (op->flags & WINED3DCLEAR_TARGET)
+ op->blitter->color_fill(device, op->view, &op->rect, &op->color);
+ else
+ op->blitter->depth_fill(device, op->view, &op->rect, op->flags, op->depth, op->stencil);
+ op->blitter->blitter_clear(device, op->view, &op->rect, op->flags, &op->color, op->depth, op->stencil);
+
+ wined3d_resource_release(op->view->resource);
+}
@ -105,7 +79,7 @@ index 80a9322224..c30dfbc898 100644
static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_SYNC */ wined3d_cs_exec_sync,
@@ -1996,6 +2044,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -1996,6 +2041,7 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_BLT_SUB_RESOURCE */ wined3d_cs_exec_blt_sub_resource,
/* WINED3D_CS_OP_UPDATE_SUB_RESOURCE */ wined3d_cs_exec_update_sub_resource,
/* WINED3D_CS_OP_PUSH_CONSTANTS */ wined3d_cs_exec_push_constants,
@ -114,27 +88,23 @@ index 80a9322224..c30dfbc898 100644
static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 9dc893bfeb..33c1451a99 100644
index 1fa212fd33..e019982d29 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4324,10 +4324,8 @@ HRESULT CDECL wined3d_device_clear_rendertarget_view(struct wined3d_device *devi
@@ -4324,7 +4324,7 @@ HRESULT CDECL wined3d_device_clear_rendertarget_view(struct wined3d_device *devi
return WINED3DERR_INVALIDCALL;
}
- if (blit_op == WINED3D_BLIT_OP_COLOR_FILL)
- return blitter->color_fill(device, view, rect, color);
- else
- return blitter->depth_fill(device, view, rect, flags, depth, stencil);
- blitter->blitter_clear(device, view, rect, flags, color, depth, stencil);
+ wined3d_cs_emit_clear_rtv(device->cs, view, rect, flags, color, depth, stencil, blitter);
+ return WINED3D_OK;
}
struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(const struct wined3d_device *device,
return WINED3D_OK;
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 26df981c77..43cca136d1 100644
index c0327d6ce2..87f111e1ab 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3237,6 +3237,9 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
@@ -3235,6 +3235,9 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects,
DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN;

View File

@ -1,4 +1,4 @@
From 45ae4084e646d64789015cf7d78b1ca80c1a01b9 Mon Sep 17 00:00:00 2001
From dbcafaa6d9d1c5e1ab39ea4e8afa970edce76e58 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Tue, 1 Oct 2013 14:31:56 +0200
Subject: wined3d: Hackily introduce a multithreaded command stream
@ -26,7 +26,7 @@ index 1d0aedd7ce..d0297d38e3 100644
current_context = NULL;
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index a2fecf1cd4..b9c206ef78 100644
index 41d639c329..bb8eefaa19 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -18,6 +18,7 @@
@ -816,8 +816,8 @@ index a2fecf1cd4..b9c206ef78 100644
{
const struct wined3d_cs_clear_rtv *op = data;
struct wined3d_device *device = cs->device;
@@ -2031,6 +2123,8 @@ static void wined3d_cs_exec_clear_rtv(struct wined3d_cs *cs, const void *data)
op->blitter->depth_fill(device, op->view, &op->rect, op->flags, op->depth, op->stencil);
@@ -2028,6 +2120,8 @@ static void wined3d_cs_exec_clear_rtv(struct wined3d_cs *cs, const void *data)
op->blitter->blitter_clear(device, op->view, &op->rect, op->flags, &op->color, op->depth, op->stencil);
wined3d_resource_release(op->view->resource);
+
@ -825,7 +825,7 @@ index a2fecf1cd4..b9c206ef78 100644
}
void wined3d_cs_emit_clear_rtv(struct wined3d_cs *cs, struct wined3d_rendertarget_view *view,
@@ -2055,7 +2149,7 @@ void wined3d_cs_emit_clear_rtv(struct wined3d_cs *cs, struct wined3d_rendertarge
@@ -2052,7 +2146,7 @@ void wined3d_cs_emit_clear_rtv(struct wined3d_cs *cs, struct wined3d_rendertarge
cs->ops->submit(cs);
}
@ -834,7 +834,7 @@ index a2fecf1cd4..b9c206ef78 100644
{
const struct wined3d_cs_update_texture *op = data;
struct wined3d_context *context;
@@ -2066,6 +2160,8 @@ static void wined3d_cs_exec_update_texture(struct wined3d_cs *cs, const void *da
@@ -2063,6 +2157,8 @@ static void wined3d_cs_exec_update_texture(struct wined3d_cs *cs, const void *da
wined3d_resource_release(&op->src->resource);
wined3d_resource_release(&op->dst->resource);
@ -843,7 +843,7 @@ index a2fecf1cd4..b9c206ef78 100644
}
void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_texture *src,
@@ -2084,11 +2180,13 @@ void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_textur
@@ -2081,11 +2177,13 @@ void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_textur
cs->ops->submit(cs);
}
@ -858,7 +858,7 @@ index a2fecf1cd4..b9c206ef78 100644
}
void wined3d_cs_emit_update_swap_interval(struct wined3d_cs *cs, struct wined3d_swapchain *swapchain)
@@ -2102,7 +2200,7 @@ void wined3d_cs_emit_update_swap_interval(struct wined3d_cs *cs, struct wined3d_
@@ -2099,7 +2197,7 @@ void wined3d_cs_emit_update_swap_interval(struct wined3d_cs *cs, struct wined3d_
cs->ops->submit_and_wait(cs);
}
@ -867,7 +867,7 @@ index a2fecf1cd4..b9c206ef78 100644
{
const struct wined3d_cs_texture_add_dirty_region *op = data;
struct wined3d_texture *texture = op->texture;
@@ -2120,6 +2218,8 @@ static void wined3d_cs_exec_texture_add_dirty_region(struct wined3d_cs *cs, cons
@@ -2117,6 +2215,8 @@ static void wined3d_cs_exec_texture_add_dirty_region(struct wined3d_cs *cs, cons
context_release(context);
wined3d_resource_release(&texture->resource);
@ -876,7 +876,7 @@ index a2fecf1cd4..b9c206ef78 100644
}
void wined3d_cs_emit_texture_add_dirty_region(struct wined3d_cs *cs,
@@ -2141,7 +2241,7 @@ void wined3d_cs_emit_texture_add_dirty_region(struct wined3d_cs *cs,
@@ -2138,7 +2238,7 @@ void wined3d_cs_emit_texture_add_dirty_region(struct wined3d_cs *cs,
cs->ops->submit(cs);
}
@ -885,7 +885,7 @@ index a2fecf1cd4..b9c206ef78 100644
{
/* WINED3D_CS_OP_SYNC */ wined3d_cs_exec_sync,
/* WINED3D_CS_OP_GLFINISH */ wined3d_cs_exec_glfinish,
@@ -2243,6 +2343,201 @@ static const struct wined3d_cs_ops wined3d_cs_st_ops =
@@ -2240,6 +2340,201 @@ static const struct wined3d_cs_ops wined3d_cs_st_ops =
wined3d_cs_st_submit,
};
@ -1087,7 +1087,7 @@ index a2fecf1cd4..b9c206ef78 100644
struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device)
{
const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
@@ -2272,12 +2567,41 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device)
@@ -2269,12 +2564,41 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device)
return NULL;
}
@ -1130,7 +1130,7 @@ index a2fecf1cd4..b9c206ef78 100644
HeapFree(GetProcessHeap(), 0, cs->data);
HeapFree(GetProcessHeap(), 0, cs);
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 603bb27c6c..324219870b 100644
index cb80c8521f..c6fb75ac12 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1304,7 +1304,7 @@ UINT CDECL wined3d_device_get_available_texture_mem(const struct wined3d_device
@ -1173,7 +1173,7 @@ index 1ce5937f17..4ef747ca89 100644
if (hkey) RegCloseKey( hkey );
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index d2484ba2c0..7ce9ab2ad3 100644
index 4de44297ea..be616e9701 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -390,6 +390,7 @@ struct wined3d_settings
@ -1184,7 +1184,7 @@ index d2484ba2c0..7ce9ab2ad3 100644
};
extern struct wined3d_settings wined3d_settings DECLSPEC_HIDDEN;
@@ -2806,11 +2807,6 @@ static inline void wined3d_resource_release(struct wined3d_resource *resource)
@@ -2804,11 +2805,6 @@ static inline void wined3d_resource_release(struct wined3d_resource *resource)
InterlockedDecrement(&resource->access_count);
}
@ -1196,7 +1196,7 @@ index d2484ba2c0..7ce9ab2ad3 100644
void resource_cleanup(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device *device,
enum wined3d_resource_type type, const struct wined3d_format *format,
@@ -3222,6 +3218,21 @@ enum wined3d_push_constants
@@ -3220,6 +3216,21 @@ enum wined3d_push_constants
WINED3D_PUSH_CONSTANTS_PS_B,
};
@ -1218,7 +1218,7 @@ index d2484ba2c0..7ce9ab2ad3 100644
struct wined3d_cs_ops
{
void *(*require_space)(struct wined3d_cs *cs, size_t size);
@@ -3239,9 +3250,21 @@ struct wined3d_cs
@@ -3237,9 +3248,21 @@ struct wined3d_cs
size_t data_size, start, end;
void *data;

View File

@ -8,33 +8,6 @@ Based on patches by:
Stefan Dösinger <stefan@codeweavers.com>
Stefan Dösinger <stefandoesinger@gmx.at>
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -1337,7 +1337,11 @@ static void color_fill_test(void)
* result on Wine.
* {D3DFMT_YUY2, "D3DFMT_YUY2", BLOCKS, 0},
* {D3DFMT_UYVY, "D3DFMT_UYVY", BLOCKS, 0}, */
+#if !defined(STAGING_CSMT)
{D3DFMT_DXT1, "D3DFMT_DXT1", BLOCKS | TODO_FILL_RETURN, 0},
+#else /* STAGING_CSMT */
+ {D3DFMT_DXT1, "D3DFMT_DXT1", BLOCKS, 0},
+#endif /* STAGING_CSMT */
/* Vendor-specific formats like ATI2N are a non-issue here since they're not
* supported as offscreen plain surfaces and do not support D3DUSAGE_RENDERTARGET
* when created as texture. */
@@ -1458,7 +1462,11 @@ static void color_fill_test(void)
{
hr = IDirect3DDevice9_ColorFill(device, surface, &rect2, 0xdeadbeef);
if (formats[i].flags & BLOCKS)
+#if !defined(STAGING_CSMT)
todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x, fmt=%s.\n", hr, formats[i].name);
+#else /* STAGING_CSMT */
+ ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x, fmt=%s.\n", hr, formats[i].name);
+#endif /* STAGING_CSMT */
else
ok(SUCCEEDED(hr), "Failed to color fill, hr %#x, fmt=%s.\n", hr, formats[i].name);
}
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@ -1485,12 +1458,12 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
const struct wined3d_cs_query_issue *op = data;
struct wined3d_query *query = op->query;
+#if !defined(STAGING_CSMT)
+
+ query->query_ops->query_issue(query, op->flags);
+#else /* STAGING_CSMT */
+ struct wined3d_context *context;
query->query_ops->query_issue(query, op->flags);
+#else /* STAGING_CSMT */
+ struct wined3d_context *context;
+
+ query->query_ops->query_issue(query, op->flags);
+
+ InterlockedDecrement(&query->pending);
+
@ -1810,7 +1783,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
op->resource = resource;
op->sub_resource_idx = sub_resource_idx;
op->box = *box;
@@ -1821,11 +2618,210 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
@@ -1821,11 +2618,207 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
wined3d_resource_acquire(resource);
@ -1884,10 +1857,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
+ const struct wined3d_cs_clear_rtv *op = data;
+ struct wined3d_device *device = cs->device;
+
+ if (op->flags & WINED3DCLEAR_TARGET)
+ op->blitter->color_fill(device, op->view, &op->rect, &op->color);
+ else
+ op->blitter->depth_fill(device, op->view, &op->rect, op->flags, op->depth, op->stencil);
+ op->blitter->blitter_clear(device, op->view, &op->rect, op->flags, &op->color, op->depth, op->stencil);
+
+ wined3d_resource_release(op->view->resource);
+
@ -2021,7 +1991,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
/* WINED3D_CS_OP_PRESENT */ wined3d_cs_exec_present,
/* WINED3D_CS_OP_CLEAR */ wined3d_cs_exec_clear,
/* WINED3D_CS_OP_DISPATCH */ wined3d_cs_exec_dispatch,
@@ -1859,15 +2855,29 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -1859,15 +2852,29 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_RESET_STATE */ wined3d_cs_exec_reset_state,
/* WINED3D_CS_OP_CALLBACK */ wined3d_cs_exec_callback,
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
@ -2051,7 +2021,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
{
if (size > (cs->data_size - cs->end))
{
@@ -1911,6 +2921,7 @@ static void wined3d_cs_st_submit(struct wined3d_cs *cs)
@@ -1911,6 +2918,7 @@ static void wined3d_cs_st_submit(struct wined3d_cs *cs)
HeapFree(GetProcessHeap(), 0, data);
}
@ -2059,7 +2029,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
static void wined3d_cs_st_push_constants(struct wined3d_cs *cs, enum wined3d_push_constants p,
unsigned int start_idx, unsigned int count, const void *constants)
{
@@ -1951,15 +2962,271 @@ static void wined3d_cs_st_push_constants(struct wined3d_cs *cs, enum wined3d_pus
@@ -1951,15 +2959,271 @@ static void wined3d_cs_st_push_constants(struct wined3d_cs *cs, enum wined3d_pus
for (i = 0, context_count = device->context_count; i < context_count; ++i)
{
device->contexts[i]->constant_update_mask |= push_constant_info[p].mask;
@ -2090,14 +2060,14 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
+ {
+ LeaveCriticalSection(&list->lock);
+ return NULL;
}
+ }
+ list_remove(head);
+ LeaveCriticalSection(&list->lock);
+ InterlockedDecrement(&list->count);
+
+ return LIST_ENTRY(head, struct wined3d_cs_block, entry);
}
+}
+
+static void wined3d_cs_wait_event(struct wined3d_cs *cs)
+{
+ InterlockedExchange(&cs->waiting_for_event, TRUE);
@ -2119,9 +2089,9 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
+ {
+ WaitForSingleObject(cs->event, INFINITE);
+#endif /* STAGING_CSMT */
+ }
+}
+
}
}
+#if !defined(STAGING_CSMT)
static const struct wined3d_cs_ops wined3d_cs_st_ops =
{
@ -2331,7 +2301,7 @@ diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device)
{
@@ -1990,12 +3257,57 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device)
@@ -1990,12 +3254,57 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device)
return NULL;
}
@ -2785,23 +2755,19 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
}
if (!src_box)
@@ -4322,10 +4518,15 @@ HRESULT CDECL wined3d_device_clear_rendertarget_view(struct wined3d_device *devi
@@ -4322,7 +4518,11 @@ HRESULT CDECL wined3d_device_clear_rendertarget_view(struct wined3d_device *devi
return WINED3DERR_INVALIDCALL;
}
+#if !defined(STAGING_CSMT)
if (blit_op == WINED3D_BLIT_OP_COLOR_FILL)
return blitter->color_fill(device, view, rect, color);
else
return blitter->depth_fill(device, view, rect, flags, depth, stencil);
blitter->blitter_clear(device, view, rect, flags, color, depth, stencil);
+#else /* STAGING_CSMT */
+ wined3d_cs_emit_clear_rtv(device->cs, view, rect, flags, color, depth, stencil, blitter);
+ return WINED3D_OK;
+#endif /* STAGING_CSMT */
}
struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(const struct wined3d_device *device,
@@ -4897,7 +5098,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
return WINED3D_OK;
}
@@ -4896,7 +5096,11 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
{
if (reset_state)
hr = wined3d_device_create_primary_opengl_context(device);
@ -2813,7 +2779,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
}
/* All done. There is no need to reload resources or shaders, this will happen automatically on the
@@ -5212,3 +5417,58 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL
@@ -5211,3 +5415,58 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL
else
return CallWindowProcA(proc, window, message, wparam, lparam);
}
@ -3502,7 +3468,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_timestamp_query
@@ -2604,6 +2614,16 @@ struct wined3d_state
@@ -2602,6 +2612,16 @@ struct wined3d_state
struct wined3d_rasterizer_state *rasterizer_state;
};
@ -3519,7 +3485,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
#define WINED3D_UNMAPPED_STAGE ~0u
/* Multithreaded flag. Removed from the public header to signal that
@@ -2716,6 +2736,14 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL
@@ -2714,6 +2734,14 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL
void device_resource_add(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN;
@ -3534,7 +3500,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state)
{
@@ -2791,11 +2819,13 @@ static inline void wined3d_resource_release(struct wined3d_resource *resource)
@@ -2789,11 +2817,13 @@ static inline void wined3d_resource_release(struct wined3d_resource *resource)
InterlockedDecrement(&resource->access_count);
}
@ -3548,7 +3514,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void resource_cleanup(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device *device,
enum wined3d_resource_type type, const struct wined3d_format *format,
@@ -2906,7 +2936,11 @@ struct wined3d_texture
@@ -2904,7 +2934,11 @@ struct wined3d_texture
unsigned int map_count;
DWORD locations;
@ -3560,7 +3526,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
} sub_resources[1];
};
@@ -3207,6 +3241,7 @@ enum wined3d_push_constants
@@ -3205,6 +3239,7 @@ enum wined3d_push_constants
WINED3D_PUSH_CONSTANTS_PS_B,
};
@ -3568,7 +3534,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_cs_ops
{
void *(*require_space)(struct wined3d_cs *cs, size_t size);
@@ -3214,6 +3249,33 @@ struct wined3d_cs_ops
@@ -3212,6 +3247,33 @@ struct wined3d_cs_ops
void (*push_constants)(struct wined3d_cs *cs, enum wined3d_push_constants p,
unsigned int start_idx, unsigned int count, const void *constants);
};
@ -3602,7 +3568,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_cs
{
@@ -3224,8 +3286,31 @@ struct wined3d_cs
@@ -3222,8 +3284,31 @@ struct wined3d_cs
size_t data_size, start, end;
void *data;
@ -3634,7 +3600,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) DECLSPEC_HIDDEN;
void wined3d_cs_destroy(struct wined3d_cs *cs) DECLSPEC_HIDDEN;
void wined3d_cs_destroy_object(struct wined3d_cs *cs,
@@ -3236,15 +3321,30 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
@@ -3234,15 +3319,30 @@ void wined3d_cs_emit_blt_sub_resource(struct wined3d_cs *cs, struct wined3d_reso
const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects,
DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN;
@ -3665,7 +3631,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_emit_reset_state(struct wined3d_cs *cs) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_clip_plane(struct wined3d_cs *cs, UINT plane_idx,
const struct wined3d_vec4 *plane) DECLSPEC_HIDDEN;
@@ -3292,10 +3392,20 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
@@ -3290,10 +3390,20 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN;
@ -3686,7 +3652,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_init_object(struct wined3d_cs *cs,
void (*callback)(void *object), void *object) DECLSPEC_HIDDEN;
HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource, unsigned int sub_resource_idx,
@@ -3303,12 +3413,14 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource,
@@ -3301,12 +3411,14 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource,
HRESULT wined3d_cs_unmap(struct wined3d_cs *cs, struct wined3d_resource *resource,
unsigned int sub_resource_idx) DECLSPEC_HIDDEN;

View File

@ -1 +1 @@
Wine Staging 2.5
Wine Staging 2.6 (unreleased)