diff --git a/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch b/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch index 05daedad..93881d2f 100644 --- a/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch +++ b/patches/d3dx9_36-FindNextValidTechnique/0001-d3dx9_36-Implement-ID3DXEffect_FindNextValidTechniqu.patch @@ -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 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); diff --git a/patches/dwrite-Missing_Initialization/0001-dwrite-Added-missing-max-bitmap-size-initialization.patch b/patches/dwrite-Missing_Initialization/0001-dwrite-Added-missing-max-bitmap-size-initialization.patch deleted file mode 100644 index 37d7ffa2..00000000 --- a/patches/dwrite-Missing_Initialization/0001-dwrite-Added-missing-max-bitmap-size-initialization.patch +++ /dev/null @@ -1,26 +0,0 @@ -From cc25929d3a152ee70f0f779091d82da88010f2ae Mon Sep 17 00:00:00 2001 -From: Nikolay Sivov -Date: Mon, 3 Apr 2017 08:14:08 +0300 -Subject: dwrite: Added missing max bitmap size initialization. - -Signed-off-by: Nikolay Sivov -Signed-off-by: Alexandre Julliard ---- - 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 - diff --git a/patches/msvcr120-_SetWinRTOutOfMemoryExceptionCallback/0001-msvcr120-Add-stub-for-_SetWinRTOutOfMemoryExceptionC.patch b/patches/msvcr120-_SetWinRTOutOfMemoryExceptionCallback/0001-msvcr120-Add-stub-for-_SetWinRTOutOfMemoryExceptionC.patch index 29f52b8a..58cb0073 100644 --- a/patches/msvcr120-_SetWinRTOutOfMemoryExceptionCallback/0001-msvcr120-Add-stub-for-_SetWinRTOutOfMemoryExceptionC.patch +++ b/patches/msvcr120-_SetWinRTOutOfMemoryExceptionCallback/0001-msvcr120-Add-stub-for-_SetWinRTOutOfMemoryExceptionC.patch @@ -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?= 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); } + +/********************************************************************* diff --git a/patches/msvcrt-CurrentScheduler_Id/0001-msvcrt-Add-stub-for-Concurrency-details-_CurrentSche.patch b/patches/msvcrt-CurrentScheduler_Id/0001-msvcrt-Add-stub-for-Concurrency-details-_CurrentSche.patch deleted file mode 100644 index 1523c820..00000000 --- a/patches/msvcrt-CurrentScheduler_Id/0001-msvcrt-Add-stub-for-Concurrency-details-_CurrentSche.patch +++ /dev/null @@ -1,86 +0,0 @@ -From aa89e0ce07424652eb0176dacf32870e9c3193c5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -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 - diff --git a/patches/msvcrt-CurrentScheduler_Id/definition b/patches/msvcrt-CurrentScheduler_Id/definition deleted file mode 100644 index 71ecebb1..00000000 --- a/patches/msvcrt-CurrentScheduler_Id/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [40628] Implement stub for Concurrency::details::_CurrentScheduler::_Id diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 04318529..e49c6168 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -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 diff --git a/patches/wbemdisp-ISWbemSecurity/0001-wbemdisp-Add-ISWbemSecurity-stub-interface.patch b/patches/wbemdisp-ISWbemSecurity/0001-wbemdisp-Add-ISWbemSecurity-stub-interface.patch index c786407b..36cf1726 100644 --- a/patches/wbemdisp-ISWbemSecurity/0001-wbemdisp-Add-ISWbemSecurity-stub-interface.patch +++ b/patches/wbemdisp-ISWbemSecurity/0001-wbemdisp-Add-ISWbemSecurity-stub-interface.patch @@ -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?= 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 diff --git a/patches/windowscodecs-Palette_Images/0018-windowscodecs-tests-Make-create_decoder-return-an-er.patch b/patches/windowscodecs-Palette_Images/0018-windowscodecs-tests-Make-create_decoder-return-an-er.patch index 1f2f7bf4..421c5259 100644 --- a/patches/windowscodecs-Palette_Images/0018-windowscodecs-tests-Make-create_decoder-return-an-er.patch +++ b/patches/windowscodecs-Palette_Images/0018-windowscodecs-tests-Make-create_decoder-return-an-er.patch @@ -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 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 diff --git a/patches/wined3d-CSMT_Main/0009-wined3d-Send-render-target-view-clears-through-the-c.patch b/patches/wined3d-CSMT_Main/0009-wined3d-Send-render-target-view-clears-through-the-c.patch index ba8b1ab7..b3f45b1b 100644 --- a/patches/wined3d-CSMT_Main/0009-wined3d-Send-render-target-view-clears-through-the-c.patch +++ b/patches/wined3d-CSMT_Main/0009-wined3d-Send-render-target-view-clears-through-the-c.patch @@ -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?= 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; diff --git a/patches/wined3d-CSMT_Main/0029-wined3d-Hackily-introduce-a-multithreaded-command-st.patch b/patches/wined3d-CSMT_Main/0029-wined3d-Hackily-introduce-a-multithreaded-command-st.patch index 72f60bc4..92587d4a 100644 --- a/patches/wined3d-CSMT_Main/0029-wined3d-Hackily-introduce-a-multithreaded-command-st.patch +++ b/patches/wined3d-CSMT_Main/0029-wined3d-Hackily-introduce-a-multithreaded-command-st.patch @@ -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?= 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; diff --git a/patches/wined3d-CSMT_Main/9999-IfDefined.patch b/patches/wined3d-CSMT_Main/9999-IfDefined.patch index d3b0656c..7e1fc8f8 100644 --- a/patches/wined3d-CSMT_Main/9999-IfDefined.patch +++ b/patches/wined3d-CSMT_Main/9999-IfDefined.patch @@ -8,33 +8,6 @@ Based on patches by: Stefan Dösinger Stefan Dösinger -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; diff --git a/staging/VERSION b/staging/VERSION index 0fb805cc..142ce937 100644 --- a/staging/VERSION +++ b/staging/VERSION @@ -1 +1 @@ -Wine Staging 2.5 +Wine Staging 2.6 (unreleased)