diff --git a/patches/kernel32-SetFileCompletionNotificationModes/0001-ntdll-Implement-FileIoCompletionNotificationInformat.patch b/patches/kernel32-SetFileCompletionNotificationModes/0001-ntdll-Implement-FileIoCompletionNotificationInformat.patch index 81027c73..20646096 100644 --- a/patches/kernel32-SetFileCompletionNotificationModes/0001-ntdll-Implement-FileIoCompletionNotificationInformat.patch +++ b/patches/kernel32-SetFileCompletionNotificationModes/0001-ntdll-Implement-FileIoCompletionNotificationInformat.patch @@ -1,4 +1,4 @@ -From 624410b16ab0e56d0f87ce4cb2382df29710ba73 Mon Sep 17 00:00:00 2001 +From 3743bfb6a418605e3d30f9b4dad57ec8e498ed71 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 15 Oct 2016 19:50:46 +0200 Subject: ntdll: Implement FileIoCompletionNotificationInformation info class. @@ -16,10 +16,10 @@ FIXME: Could we use the existing wineserver call instead? 6 files changed, 195 insertions(+), 4 deletions(-) diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c -index cc7ead1cdd6..5fe22686bb1 100644 +index 3e93b0dfd78..f4e63bcaae6 100644 --- a/dlls/kernel32/file.c +++ b/dlls/kernel32/file.c -@@ -1061,13 +1061,20 @@ BOOL WINAPI SetEndOfFile( HANDLE hFile ) +@@ -1064,13 +1064,20 @@ BOOL WINAPI SetEndOfFile( HANDLE hFile ) return FALSE; } @@ -44,10 +44,10 @@ index cc7ead1cdd6..5fe22686bb1 100644 } diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c -index c7669ee02fe..5560762b3cd 100644 +index fd7f3dd955a..00131f11cf7 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c -@@ -2787,6 +2787,23 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io, +@@ -2802,6 +2802,23 @@ NTSTATUS WINAPI NtSetInformationFile(HANDLE handle, PIO_STATUS_BLOCK io, io->u.Status = STATUS_INVALID_PARAMETER_3; break; @@ -72,7 +72,7 @@ index c7669ee02fe..5560762b3cd 100644 io->u.Status = STATUS_INVALID_INFO_CLASS; break; diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index 57d7df9c00a..f9c61e2f25b 100644 +index 1a02ce5eaa5..0a114e7cc73 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -3261,6 +3261,135 @@ static void test_file_all_name_information(void) @@ -208,22 +208,22 @@ index 57d7df9c00a..f9c61e2f25b 100644 + CloseHandle(h); +} + - static void test_query_volume_information_file(void) + static void test_file_id_information(void) { - NTSTATUS status; -@@ -4260,6 +4389,7 @@ START_TEST(file) + BY_HANDLE_FILE_INFORMATION info; +@@ -4299,6 +4428,7 @@ START_TEST(file) test_file_rename_information(); test_file_link_information(); test_file_disposition_information(); + test_file_completion_information(); + test_file_id_information(); test_query_volume_information_file(); test_query_attribute_information_file(); - } diff --git a/include/winternl.h b/include/winternl.h -index f35091cba1a..7613d8b9264 100644 +index 2f2ea866ae7..08af643b334 100644 --- a/include/winternl.h +++ b/include/winternl.h -@@ -725,6 +725,14 @@ typedef struct _FILE_ALL_INFORMATION { +@@ -741,6 +741,14 @@ typedef struct _FILE_ALL_INFORMATION { FILE_NAME_INFORMATION NameInformation; } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION; diff --git a/patches/kernel32-SetFileCompletionNotificationModes/0002-ntdll-Allow-to-query-file-IO-completion-notification.patch b/patches/kernel32-SetFileCompletionNotificationModes/0002-ntdll-Allow-to-query-file-IO-completion-notification.patch index f792b390..63883102 100644 --- a/patches/kernel32-SetFileCompletionNotificationModes/0002-ntdll-Allow-to-query-file-IO-completion-notification.patch +++ b/patches/kernel32-SetFileCompletionNotificationModes/0002-ntdll-Allow-to-query-file-IO-completion-notification.patch @@ -1,4 +1,4 @@ -From 50ce3a32218828dafd18daea3649ca36a203f2a7 Mon Sep 17 00:00:00 2001 +From 723fa05be459725140a88f614b315b19f90cc235 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sun, 5 Feb 2017 11:27:49 +0100 Subject: ntdll: Allow to query file IO completion notification mode. @@ -11,10 +11,10 @@ Subject: ntdll: Allow to query file IO completion notification mode. 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c -index 5560762b3cd..db65c2b40cd 100644 +index 00131f11cf7..fc72833e1a4 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c -@@ -2359,7 +2359,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE hFile, PIO_STATUS_BLOCK io, +@@ -2357,7 +2357,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE hFile, PIO_STATUS_BLOCK io, 0, /* FileIdFullDirectoryInformation */ 0, /* FileValidDataLengthInformation */ 0, /* FileShortNameInformation */ @@ -23,7 +23,7 @@ index 5560762b3cd..db65c2b40cd 100644 0, /* FileIoStatusBlockRangeInformation */ 0, /* FileIoPriorityHintInformation */ 0, /* FileSfioReserveInformation */ -@@ -2612,6 +2612,22 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE hFile, PIO_STATUS_BLOCK io, +@@ -2617,6 +2617,22 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE hFile, PIO_STATUS_BLOCK io, } } break; @@ -43,11 +43,11 @@ index 5560762b3cd..db65c2b40cd 100644 + SERVER_END_REQ; + } + break; - default: - FIXME("Unsupported class (%d)\n", class); - io->u.Status = STATUS_NOT_IMPLEMENTED; + case FileIdInformation: + if (fd_get_file_info( fd, &st, &attr ) == -1) io->u.Status = FILE_GetNtStatus(); + else diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index f9c61e2f25b..ee14f85d6b6 100644 +index 0a114e7cc73..214c51a726a 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -3303,6 +3303,11 @@ static void test_file_completion_information(void) diff --git a/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch b/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch index 7f2b9816..c6c08e9a 100644 --- a/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch +++ b/patches/ntdll-NtQueryEaFile/0001-ntdll-Improve-stub-of-NtQueryEaFile.patch @@ -1,4 +1,4 @@ -From c45a1755627f278008043315b5ef9a05b796cbec Mon Sep 17 00:00:00 2001 +From 44eb9473fbeb5ce2feb0626286c99e8944d5f297 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 6 Jun 2015 07:03:33 +0800 Subject: ntdll: Improve stub of NtQueryEaFile. @@ -10,10 +10,10 @@ Based on a patch by Qian Hong. 2 files changed, 98 insertions(+), 4 deletions(-) diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c -index 14715b1..ae3219a 100644 +index fc72833e1a4..210c8e385d9 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c -@@ -3367,14 +3367,25 @@ NTSTATUS WINAPI NtQueryVolumeInformationFile( HANDLE handle, PIO_STATUS_BLOCK io +@@ -3397,14 +3397,25 @@ NTSTATUS WINAPI NtQueryVolumeInformationFile( HANDLE handle, PIO_STATUS_BLOCK io * Success: 0. Atrributes read into buffer * Failure: An NTSTATUS error code describing the error. */ @@ -44,7 +44,7 @@ index 14715b1..ae3219a 100644 diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c -index dfaf4a5..1dbaf30 100644 +index 214c51a726a..5f9aab482f0 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -79,6 +79,7 @@ static NTSTATUS (WINAPI *pNtQueryDirectoryFile)(HANDLE,HANDLE,PIO_APC_ROUTINE,PV @@ -55,7 +55,7 @@ index dfaf4a5..1dbaf30 100644 static inline BOOL is_signaled( HANDLE obj ) { -@@ -4288,6 +4289,86 @@ static void test_read_write(void) +@@ -4388,6 +4389,86 @@ static void test_read_write(void) CloseHandle(hfile); } @@ -142,7 +142,7 @@ index dfaf4a5..1dbaf30 100644 START_TEST(file) { HMODULE hkernel32 = GetModuleHandleA("kernel32.dll"); -@@ -4324,6 +4405,7 @@ START_TEST(file) +@@ -4424,6 +4505,7 @@ START_TEST(file) pNtQueryDirectoryFile = (void *)GetProcAddress(hntdll, "NtQueryDirectoryFile"); pNtQueryVolumeInformationFile = (void *)GetProcAddress(hntdll, "NtQueryVolumeInformationFile"); pNtQueryFullAttributesFile = (void *)GetProcAddress(hntdll, "NtQueryFullAttributesFile"); @@ -150,12 +150,12 @@ index dfaf4a5..1dbaf30 100644 test_read_write(); test_NtCreateFile(); -@@ -4346,4 +4428,5 @@ START_TEST(file) - test_file_completion_information(); +@@ -4447,4 +4529,5 @@ START_TEST(file) + test_file_id_information(); test_query_volume_information_file(); test_query_attribute_information_file(); + test_query_ea(); } -- -2.9.0 +2.11.0 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index c6c78917..298b413c 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "d00f7315e0cec0c2fe34ba5ab2b55cf5718860dd" + echo "a2f2de1e960d37840bb0df541e31d64941e65197" } # Show version information @@ -401,7 +401,6 @@ patch_enable_all () enable_wined3d_1DTextures="$1" enable_wined3d_Accounting="$1" enable_wined3d_CSMT_Helper="$1" - enable_wined3d_CSMT_Main="$1" enable_wined3d_DXTn="$1" enable_wined3d_GTX_560M="$1" enable_wined3d_Limit_Vram="$1" @@ -1416,9 +1415,6 @@ patch_enable () wined3d-CSMT_Helper) enable_wined3d_CSMT_Helper="$2" ;; - wined3d-CSMT_Main) - enable_wined3d_CSMT_Main="$2" - ;; wined3d-DXTn) enable_wined3d_DXTn="$2" ;; @@ -1955,13 +1951,6 @@ if test "$enable_winex11_WM_WINDOWPOSCHANGING" -eq 1; then enable_winex11__NET_ACTIVE_WINDOW=1 fi -if test "$enable_wined3d_CSMT_Main" -eq 1; then - if test "$enable_wined3d_CSMT_Helper" -gt 1; then - abort "Patchset wined3d-CSMT_Helper disabled, but wined3d-CSMT_Main depends on that." - fi - enable_wined3d_CSMT_Helper=1 -fi - if test "$enable_wined3d_CSMT_Helper" -eq 1; then if test "$enable_d3d11_Deferred_Context" -gt 1; then abort "Patchset d3d11-Deferred_Context disabled, but wined3d-CSMT_Helper depends on that." @@ -8380,81 +8369,6 @@ if test "$enable_wined3d_check_format_support" -eq 1; then ) >> "$patchlist" fi -# Patchset wined3d-CSMT_Main -# | -# | This patchset has the following (direct or indirect) dependencies: -# | * d3d11-Deferred_Context, makedep-PARENTSPEC, ntdll-Attach_Process_DLLs, ntdll-DllOverrides_WOW64, ntdll- -# | Loader_Machine_Type, ntdll-DllRedirects, wined3d-1DTextures, wined3d-Accounting, wined3d-DXTn, wined3d-QUERY_Stubs, -# | wined3d-Revert_Buffer_Upload, wined3d-Revert_Pixel_Center_Offset, wined3d-Silence_FIXMEs, wined3d-CSMT_Helper -# | -# | This patchset fixes the following Wine bugs: -# | * [#11674] Support for CSMT (command stream) to increase graphic performance -# | -# | Modified files: -# | * dlls/d3d10core/tests/device.c, dlls/d3d11/tests/d3d11.c, dlls/d3d9/tests/visual.c, dlls/wined3d/arb_program_shader.c, -# | dlls/wined3d/context.c, dlls/wined3d/cs.c, dlls/wined3d/device.c, dlls/wined3d/drawprim.c, dlls/wined3d/glsl_shader.c, -# | dlls/wined3d/query.c, dlls/wined3d/resource.c, dlls/wined3d/sampler.c, dlls/wined3d/shader.c, dlls/wined3d/state.c, -# | dlls/wined3d/stateblock.c, dlls/wined3d/surface.c, dlls/wined3d/swapchain.c, dlls/wined3d/texture.c, -# | dlls/wined3d/utils.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 - ( - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Hackily introduce a multithreaded command stream.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Send push_constants through the CS.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Give the cs its own state.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Send primitive type updates through the command stream.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Send light updates through the command stream.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Pass the depth stencil to swapchain->present.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Prevent the command stream from running ahead too far.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Wait for the cs to finish before destroying the device.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Send blits through the command stream.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Send render target view clears through the command stream.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Get rid of the end_scene flush and finish.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Send update_texture calls through the CS.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Send update_sub_resource calls through the command stream.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Unload resources through the CS in device_reset.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Send getdc and releasedc through the command stream.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Create dummy textures through the CS.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Create the initial context through the CS.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Recreate ctx and dummy textures through the CS after resets.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Call create_default_sampler from create_dummy_textures.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Update the swap interval through the CS in reset.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Do the sampler GL init through the CS.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Create initial DCs through the CS.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Do not query available GPU memory on main thread when CSMT is enabled.", 1 },'; - printf '%s\n' '+ { "Nils Kuhnhenn", "wined3d: Fix context_acquire not being called from the command thread in wined3d_texture_add_dirty_region.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Wrap GL BOs in a structure.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Send buffer update subresource requests through CS.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Send buffer copy requests through CS.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Send create_buffer_texture / create_texture_view through the CS.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Move the framebuffer into wined3d_state.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Don'\''t access device state in clears.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Delete GL contexts through the CS in reset.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Add swapchain waits.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Avoid destroying views in color and depth fills.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Run the cs asynchronously.", 1 },'; - printf '%s\n' '+ { "Michael Müller", "wined3d: Map vertex buffers through cs.", 1 },'; - printf '%s\n' '+ { "Michael Müller", "wined3d: Optimize cs queue empty check.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Introduce a separate priority queue.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Use priority queue for maps/unmaps.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Do not allow to disable CSMT.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Use priority queue for query polls.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Don'\''t call glFinish before swapping.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Use an event to block the worker thread when it is idle.", 1 },'; - printf '%s\n' '+ { "Stefan Dösinger", "wined3d: Unset some objects in state_init_default.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Use priority queue for get_dc / release_dc.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Simplify the fence handling.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Do not immediately submit stateblock updates.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Get rid of TLS for command stream.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Clean up cs lists on shutdown.", 1 },'; - printf '%s\n' '+ { "Michael Müller", "wined3d: Use a separate lock for each CS list.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Don'\''t crash in context_release when device was not fully created.", 1 },'; - printf '%s\n' '+ { "Sebastian Lackner", "wined3d: Use priority queue for update_sub_resource.", 1 },'; - printf '%s\n' '+ { "Michael Müller", "wined3d: Use spin lock for cs list critical sections.", 1 },'; - ) >> "$patchlist" -fi - # Patchset winedbg-Process_Arguments # | # | Modified files: diff --git a/patches/wined3d-CSMT_Main/definition b/patches/wined3d-CSMT_Main/definition index b3acc9dd..dcae18bb 100644 --- a/patches/wined3d-CSMT_Main/definition +++ b/patches/wined3d-CSMT_Main/definition @@ -5,6 +5,7 @@ Fixes: [11674] Support for CSMT (command stream) to increase graphic performance Apply-After: dlls/wined3d/* Depends: wined3d-CSMT_Helper IfDefined: STAGING_CSMT +Disabled: true # Known issues: # https://bugs.wine-staging.com/buglist.cgi?component=Bugs&keywords=csmt%2C%20&keywords_type=allwords&list_id=3690&query_format=advanced&resolution=---