From 5088fc67ba6de777dfa724946ecbc969545788ec Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 14 Nov 2022 17:51:19 -0600 Subject: [PATCH] Rebase against a8c1d5c108fc57e4d78e9db126f395c89083a83d. --- ...for-sys-eventfd.h-ppoll-and-shm_open.patch | 22 ++-- ...ort-for-FreeBSD-style-extended-attri.patch | 116 ------------------ ...eparse-points-during-path-resolution.patch | 40 +++--- patches/patchinstall.sh | 2 +- ...ending-RIM_TYPEMOUSE-through-__wine_.patch | 14 +-- ...for-vertex-shader-float-constants-if.patch | 80 ++++++------ ...drv-Add-more-tracing-to-ClosePrinter.patch | 8 +- staging/upstream-commit | 2 +- 8 files changed, 84 insertions(+), 200 deletions(-) delete mode 100644 patches/ntdll-DOS_Attributes/0006-libport-Add-support-for-FreeBSD-style-extended-attri.patch diff --git a/patches/eventfd_synchronization/0001-configure-Check-for-sys-eventfd.h-ppoll-and-shm_open.patch b/patches/eventfd_synchronization/0001-configure-Check-for-sys-eventfd.h-ppoll-and-shm_open.patch index 98335b2b..614f2c4e 100644 --- a/patches/eventfd_synchronization/0001-configure-Check-for-sys-eventfd.h-ppoll-and-shm_open.patch +++ b/patches/eventfd_synchronization/0001-configure-Check-for-sys-eventfd.h-ppoll-and-shm_open.patch @@ -1,4 +1,4 @@ -From f2401390227b40c68bb97983fc028d5060a70e8c Mon Sep 17 00:00:00 2001 +From f2fe168b2ca8099c7afd06873ec77daef2ddf243 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Wed, 13 Jun 2018 10:44:49 -0500 Subject: [PATCH] configure: Check for sys/eventfd.h, ppoll(), and shm_open(). @@ -12,18 +12,18 @@ Although perhaps we shouldn't since the server doesn't do this. 2 files changed, 17 insertions(+) diff --git a/configure.ac b/configure.ac -index 9683798b57b..b4465a98794 100644 +index fe6a773d1c3..3e8eaca6b7c 100644 --- a/configure.ac +++ b/configure.ac -@@ -478,6 +478,7 @@ AC_CHECK_HEADERS(\ +@@ -467,6 +467,7 @@ AC_CHECK_HEADERS(\ sys/cdio.h \ sys/epoll.h \ sys/event.h \ + sys/eventfd.h \ + sys/extattr.h \ sys/filio.h \ sys/ipc.h \ - sys/link.h \ -@@ -1991,6 +1992,7 @@ AC_CHECK_FUNCS(\ +@@ -2039,6 +2040,7 @@ AC_CHECK_FUNCS(\ port_create \ posix_fadvise \ posix_fallocate \ @@ -31,7 +31,7 @@ index 9683798b57b..b4465a98794 100644 prctl \ proc_pidinfo \ sched_yield \ -@@ -2033,6 +2035,12 @@ case $host_os in +@@ -2078,6 +2080,12 @@ case $host_os in ;; esac @@ -45,10 +45,10 @@ index 9683798b57b..b4465a98794 100644 if test "x$with_ldap" != "xno" then diff --git a/include/config.h.in b/include/config.h.in -index 197c3b97f09..13f822cb36c 100644 +index 3a06d36bd02..b29582c6029 100644 --- a/include/config.h.in +++ b/include/config.h.in -@@ -362,6 +362,9 @@ +@@ -344,6 +344,9 @@ /* Define to 1 if you have the `posix_fallocate' function. */ #undef HAVE_POSIX_FALLOCATE @@ -58,7 +58,7 @@ index 197c3b97f09..13f822cb36c 100644 /* Define to 1 if you have the `prctl' function. */ #undef HAVE_PRCTL -@@ -434,6 +437,9 @@ +@@ -416,6 +419,9 @@ /* Define to 1 if `interface_id' is a member of `sg_io_hdr_t'. */ #undef HAVE_SG_IO_HDR_T_INTERFACE_ID @@ -68,7 +68,7 @@ index 197c3b97f09..13f822cb36c 100644 /* Define if sigaddset is supported */ #undef HAVE_SIGADDSET -@@ -574,6 +580,9 @@ +@@ -565,6 +571,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_EPOLL_H @@ -79,5 +79,5 @@ index 197c3b97f09..13f822cb36c 100644 #undef HAVE_SYS_EVENT_H -- -2.33.0 +2.35.1 diff --git a/patches/ntdll-DOS_Attributes/0006-libport-Add-support-for-FreeBSD-style-extended-attri.patch b/patches/ntdll-DOS_Attributes/0006-libport-Add-support-for-FreeBSD-style-extended-attri.patch deleted file mode 100644 index c0c0ac83..00000000 --- a/patches/ntdll-DOS_Attributes/0006-libport-Add-support-for-FreeBSD-style-extended-attri.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 691c8c2dfe1c14d968cf91f2356d4fca0611d579 Mon Sep 17 00:00:00 2001 -From: "Erich E. Hoover" -Date: Mon, 6 Oct 2014 14:26:24 -0600 -Subject: [PATCH] ntdll: Add support for FreeBSD style extended attributes. - ---- - configure.ac | 2 +- - dlls/ntdll/unix/file.c | 37 +++++++++++++++++++++++++++++++++++++ - 2 files changed, 38 insertions(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 57f76f09b96..b99be0623b9 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -645,7 +645,7 @@ AC_CHECK_HEADERS([libprocstat.h],,, - - if test "x$with_xattr" != "xno" - then -- AC_CHECK_HEADERS(attr/xattr.h, [HAVE_XATTR=1]) -+ AC_CHECK_HEADERS(attr/xattr.h sys/extattr.h, [HAVE_XATTR=1]) - AC_CHECK_HEADERS(sys/xattr.h, [HAVE_XATTR=1] - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[getxattr("", "", "", 0, 0, 0);]])], - [AC_DEFINE(XATTR_ADDITIONAL_OPTIONS, 1, [Define if xattr functions take additional arguments (Mac OS X)])])]) -diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index d4cb708336c..63fff5f7697 100644 ---- a/dlls/ntdll/unix/file.c -+++ b/dlls/ntdll/unix/file.c -@@ -104,6 +104,10 @@ - #elif defined(HAVE_SYS_XATTR_H) - #include - #endif -+#ifdef HAVE_SYS_EXTATTR_H -+#undef XATTR_ADDITIONAL_OPTIONS -+#include -+#endif - #include - #include - -@@ -364,6 +368,21 @@ NTSTATUS errno_to_status( int err ) - #ifndef XATTR_USER_PREFIX - #define XATTR_USER_PREFIX "user." - #endif -+#ifndef XATTR_USER_PREFIX_LEN -+#define XATTR_USER_PREFIX_LEN (sizeof(XATTR_USER_PREFIX) - 1) -+#endif -+ -+#ifdef HAVE_SYS_EXTATTR_H -+static inline int xattr_valid_namespace( const char *name ) -+{ -+ if (strncmp( XATTR_USER_PREFIX, name, XATTR_USER_PREFIX_LEN ) != 0) -+ { -+ errno = EPERM; -+ return 0; -+ } -+ return 1; -+} -+#endif - - static int xattr_fremove( int filedes, const char *name ) - { -@@ -371,6 +390,9 @@ static int xattr_fremove( int filedes, const char *name ) - return fremovexattr( filedes, name, 0 ); - #elif defined(HAVE_SYS_XATTR_H) || defined(HAVE_ATTR_XATTR_H) - return fremovexattr( filedes, name ); -+#elif defined(HAVE_SYS_EXTATTR_H) -+ if (!xattr_valid_namespace( name )) return -1; -+ return extattr_delete_fd( filedes, EXTATTR_NAMESPACE_USER, &name[XATTR_USER_PREFIX_LEN] ); - #else - errno = ENOSYS; - return -1; -@@ -383,6 +405,10 @@ static int xattr_fset( int filedes, const char *name, void *value, size_t size ) - return fsetxattr( filedes, name, value, size, 0, 0 ); - #elif defined(HAVE_SYS_XATTR_H) || defined(HAVE_ATTR_XATTR_H) - return fsetxattr( filedes, name, value, size, 0 ); -+#elif defined(HAVE_SYS_EXTATTR_H) -+ if (!xattr_valid_namespace( name )) return -1; -+ return extattr_set_fd( filedes, EXTATTR_NAMESPACE_USER, &name[XATTR_USER_PREFIX_LEN], -+ value, size ); - #else - errno = ENOSYS; - return -1; -@@ -395,6 +421,10 @@ static int xattr_get( const char *path, const char *name, void *value, size_t si - return getxattr( path, name, value, size, 0, 0 ); - #elif defined(HAVE_SYS_XATTR_H) || defined(HAVE_ATTR_XATTR_H) - return getxattr( path, name, value, size ); -+#elif defined(HAVE_SYS_EXTATTR_H) -+ if (!xattr_valid_namespace( name )) return -1; -+ return extattr_get_file( path, EXTATTR_NAMESPACE_USER, &name[XATTR_USER_PREFIX_LEN], -+ value, size ); - #else - errno = ENOSYS; - return -1; -@@ -407,6 +437,9 @@ static int xattr_remove( const char *path, const char *name ) - return removexattr( path, name, 0 ); - #elif defined(HAVE_SYS_XATTR_H) || defined(HAVE_ATTR_XATTR_H) - return removexattr( path, name ); -+#elif defined(HAVE_SYS_EXTATTR_H) -+ if (!xattr_valid_namespace( name )) return -1; -+ return extattr_delete_file( path, EXTATTR_NAMESPACE_USER, &name[XATTR_USER_PREFIX_LEN] ); - #else - errno = ENOSYS; - return -1; -@@ -419,6 +452,10 @@ static int xattr_set( const char *path, const char *name, void *value, size_t si - return setxattr( path, name, value, size, 0, 0 ); - #elif defined(HAVE_SYS_XATTR_H) || defined(HAVE_ATTR_XATTR_H) - return setxattr( path, name, value, size, 0 ); -+#elif defined(HAVE_SYS_EXTATTR_H) -+ if (!xattr_valid_namespace( name )) return -1; -+ return extattr_set_file( path, EXTATTR_NAMESPACE_USER, &name[XATTR_USER_PREFIX_LEN], -+ value, size ); - #else - errno = ENOSYS; - return -1; --- -2.33.0 - diff --git a/patches/ntdll-Junction_Points/0011-ntdll-Follow-reparse-points-during-path-resolution.patch b/patches/ntdll-Junction_Points/0011-ntdll-Follow-reparse-points-during-path-resolution.patch index c5ebe733..c1cf157a 100644 --- a/patches/ntdll-Junction_Points/0011-ntdll-Follow-reparse-points-during-path-resolution.patch +++ b/patches/ntdll-Junction_Points/0011-ntdll-Follow-reparse-points-during-path-resolution.patch @@ -1,7 +1,7 @@ -From a3eedb8eb82f841ae48633d1e3c0416a362ccd34 Mon Sep 17 00:00:00 2001 +From beaeb1935534ce99aa19b8009184b07bd602a24c Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Sat, 3 Sep 2022 11:23:31 -0600 -Subject: ntdll: Follow reparse points during path resolution. +Subject: [PATCH] ntdll: Follow reparse points during path resolution. Signed-off-by: Erich E. Hoover --- @@ -44,10 +44,10 @@ index 390768f557d..a0b84849490 100644 ok(bret, "Failed to remove temporary reparse point directory!\n"); bret = RemoveDirectoryW(target_path); diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c -index 9ae5e194c6d..ba844e90272 100644 +index 9211c6964a6..e90670ffc71 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c -@@ -3516,6 +3516,35 @@ done: +@@ -3548,6 +3548,35 @@ done: } @@ -83,7 +83,7 @@ index 9ae5e194c6d..ba844e90272 100644 /* * Retrieve the unix name corresponding to a file handle, remove that directory, and then symlink * the requested directory to the location of the old directory. -@@ -3692,16 +3721,14 @@ cleanup: +@@ -3724,16 +3753,14 @@ cleanup: /* @@ -102,7 +102,7 @@ index 9ae5e194c6d..ba844e90272 100644 char *encoded = NULL; int link_dir_fd = -1; NTSTATUS status; -@@ -3709,9 +3736,6 @@ NTSTATUS get_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer, ULONG *si +@@ -3741,9 +3768,6 @@ NTSTATUS get_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer, ULONG *si int depth; char *p; @@ -112,7 +112,7 @@ index 9ae5e194c6d..ba844e90272 100644 ret = readlink( unix_name, link_path, sizeof(link_path) ); if (ret < 0) { -@@ -3811,12 +3835,76 @@ NTSTATUS get_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer, ULONG *si +@@ -3843,12 +3867,76 @@ NTSTATUS get_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer, ULONG *si cleanup: if (link_dir_fd != -1) close( link_dir_fd ); @@ -190,7 +190,7 @@ index 9ae5e194c6d..ba844e90272 100644 /* * Retrieve the unix name corresponding to a file handle, remove that symlink, and then recreate * a directory at the location of the old filename. -@@ -3910,15 +3998,25 @@ cleanup: +@@ -3942,15 +4030,25 @@ cleanup: } @@ -218,7 +218,7 @@ index 9ae5e194c6d..ba844e90272 100644 NTSTATUS status; int ret; struct stat st; -@@ -3975,6 +4073,8 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer +@@ -4007,6 +4105,8 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer while (name_len) { const WCHAR *end, *next; @@ -227,7 +227,7 @@ index 9ae5e194c6d..ba844e90272 100644 end = name; while (end < name + name_len && *end != '\\') end++; -@@ -3994,8 +4094,31 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer +@@ -4026,8 +4126,31 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer status = find_file_in_dir( unix_name, pos, name, end - name, is_unix ); @@ -260,7 +260,7 @@ index 9ae5e194c6d..ba844e90272 100644 { if (status == STATUS_OBJECT_NAME_NOT_FOUND) { -@@ -4034,12 +4157,12 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer +@@ -4066,12 +4189,12 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer /****************************************************************************** * nt_to_unix_file_name_no_root */ @@ -275,7 +275,7 @@ index 9ae5e194c6d..ba844e90272 100644 NTSTATUS status = STATUS_SUCCESS; const WCHAR *name; struct stat st; -@@ -4129,7 +4252,7 @@ static NTSTATUS nt_to_unix_file_name_no_root( const UNICODE_STRING *nameW, char +@@ -4161,7 +4284,7 @@ static NTSTATUS nt_to_unix_file_name_no_root( const UNICODE_STRING *nameW, char name += prefix_len; name_len -= prefix_len; @@ -284,17 +284,17 @@ index 9ae5e194c6d..ba844e90272 100644 if (status == STATUS_SUCCESS || status == STATUS_NO_SUCH_FILE) { TRACE( "%s -> %s\n", debugstr_us(nameW), debugstr_a(unix_name) ); -@@ -4137,7 +4260,8 @@ static NTSTATUS nt_to_unix_file_name_no_root( const UNICODE_STRING *nameW, char +@@ -4169,7 +4292,8 @@ static NTSTATUS nt_to_unix_file_name_no_root( const UNICODE_STRING *nameW, char } else { -- TRACE( "%s not found in %s\n", debugstr_w(name), unix_name ); +- TRACE( "%s not found in %s\n", debugstr_w(name), debugstr_an(unix_name, pos) ); + if (status != STATUS_REPARSE) -+ TRACE( "%s not found in %s\n", debugstr_w(name), unix_name ); ++ TRACE( "%s not found in %s\n", debugstr_w(name), debugstr_an(unix_name, pos) ); free( unix_name ); } return status; -@@ -4155,18 +4279,30 @@ static NTSTATUS nt_to_unix_file_name_no_root( const UNICODE_STRING *nameW, char +@@ -4187,18 +4311,30 @@ static NTSTATUS nt_to_unix_file_name_no_root( const UNICODE_STRING *nameW, char */ NTSTATUS nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char **name_ret, UINT disposition ) { @@ -329,7 +329,7 @@ index 9ae5e194c6d..ba844e90272 100644 if (name_len && name[0] == '\\') return STATUS_INVALID_PARAMETER; -@@ -4174,7 +4310,7 @@ NTSTATUS nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char **name_ret, U +@@ -4206,7 +4342,7 @@ NTSTATUS nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char **name_ret, U if (!(unix_name = malloc( unix_len ))) return STATUS_NO_MEMORY; unix_name[0] = '.'; @@ -338,7 +338,7 @@ index 9ae5e194c6d..ba844e90272 100644 { if (type != FD_TYPE_DIR) { -@@ -4186,7 +4322,8 @@ NTSTATUS nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char **name_ret, U +@@ -4218,7 +4354,8 @@ NTSTATUS nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char **name_ret, U mutex_lock( &dir_mutex ); if ((old_cwd = open( ".", O_RDONLY )) != -1 && fchdir( root_fd ) != -1) { @@ -348,7 +348,7 @@ index 9ae5e194c6d..ba844e90272 100644 if (fchdir( old_cwd ) == -1) chdir( "/" ); } else status = errno_to_status( errno ); -@@ -4199,14 +4336,22 @@ NTSTATUS nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char **name_ret, U +@@ -4231,14 +4368,22 @@ NTSTATUS nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char **name_ret, U if (status == STATUS_SUCCESS || status == STATUS_NO_SUCH_FILE) { @@ -373,5 +373,5 @@ index 9ae5e194c6d..ba844e90272 100644 } -- -2.17.1 +2.35.1 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 3d197995..b518fbe9 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "053ee2d23d825f800baa16e455a218834aa2dec0" + echo "a8c1d5c108fc57e4d78e9db126f395c89083a83d" } # Show version information diff --git a/patches/user32-rawinput-mouse/0007-user32-Support-sending-RIM_TYPEMOUSE-through-__wine_.patch b/patches/user32-rawinput-mouse/0007-user32-Support-sending-RIM_TYPEMOUSE-through-__wine_.patch index 4ecc626f..e8ea6b2c 100644 --- a/patches/user32-rawinput-mouse/0007-user32-Support-sending-RIM_TYPEMOUSE-through-__wine_.patch +++ b/patches/user32-rawinput-mouse/0007-user32-Support-sending-RIM_TYPEMOUSE-through-__wine_.patch @@ -1,4 +1,4 @@ -From 21c24cc9858431164dadf4882e83831c216defef Mon Sep 17 00:00:00 2001 +From 565e6c2d8207d6014bd8d22015419fc587329e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Thu, 25 Mar 2021 14:26:35 +0100 Subject: [PATCH] user32: Support sending RIM_TYPEMOUSE through @@ -10,10 +10,10 @@ Subject: [PATCH] user32: Support sending RIM_TYPEMOUSE through 2 files changed, 9 insertions(+) diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c -index 72b0e77fc6d..67926b79d89 100644 +index 60deeb38bce..0167c35b53b 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c -@@ -1932,6 +1932,12 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r +@@ -2622,6 +2622,12 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r req->input.hw.rawinput.type = rawinput->header.dwType; switch (rawinput->header.dwType) { @@ -27,10 +27,10 @@ index 72b0e77fc6d..67926b79d89 100644 req->input.hw.rawinput.hid.device = HandleToUlong( rawinput->header.hDevice ); req->input.hw.rawinput.hid.param = rawinput->header.wParam; diff --git a/server/queue.c b/server/queue.c -index 950a2cdce22..46a7870d7d1 100644 +index bec57c85d1a..a7b8ce35347 100644 --- a/server/queue.c +++ b/server/queue.c -@@ -2101,6 +2101,9 @@ static void queue_custom_hardware_message( struct desktop *desktop, user_handle_ +@@ -2042,6 +2042,9 @@ static void queue_custom_hardware_message( struct desktop *desktop, user_handle_ msg_data->size = sizeof(*msg_data) + report_size; msg_data->rawinput = input->hw.rawinput; @@ -38,8 +38,8 @@ index 950a2cdce22..46a7870d7d1 100644 + msg_data->flags = input->hw.lparam; + enum_processes( queue_rawinput_message, &raw_msg ); - - if (raw_msg.foreground) release_object( raw_msg.foreground ); + return; + } -- 2.35.1 diff --git a/patches/wined3d-SWVP-shaders/0001-wined3d-Use-UBO-for-vertex-shader-float-constants-if.patch b/patches/wined3d-SWVP-shaders/0001-wined3d-Use-UBO-for-vertex-shader-float-constants-if.patch index 2706b1b3..cf65511a 100644 --- a/patches/wined3d-SWVP-shaders/0001-wined3d-Use-UBO-for-vertex-shader-float-constants-if.patch +++ b/patches/wined3d-SWVP-shaders/0001-wined3d-Use-UBO-for-vertex-shader-float-constants-if.patch @@ -1,4 +1,4 @@ -From 13edfeb4deb5766367080ff778d16d94b5afbabc Mon Sep 17 00:00:00 2001 +From e18ad6deca23d2e49f898692a3127f58fd5cc5d8 Mon Sep 17 00:00:00 2001 From: Paul Gofman Date: Mon, 25 Feb 2019 13:17:01 +0300 Subject: [PATCH] wined3d: Use UBO for vertex shader float constants if @@ -16,36 +16,36 @@ Subject: [PATCH] wined3d: Use UBO for vertex shader float constants if 8 files changed, 148 insertions(+), 14 deletions(-) diff --git a/dlls/d3d8/directx.c b/dlls/d3d8/directx.c -index 3818cb79952..f5ae6af08ad 100644 +index 973c7fea779..3c2f270015e 100644 --- a/dlls/d3d8/directx.c +++ b/dlls/d3d8/directx.c @@ -476,7 +476,7 @@ BOOL d3d8_init(struct d3d8 *d3d8) DWORD flags = WINED3D_LEGACY_DEPTH_BIAS | WINED3D_VIDMEM_ACCOUNTING | WINED3D_HANDLE_RESTORE | WINED3D_PIXEL_CENTER_INTEGER | WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR | WINED3D_NO_PRIMITIVE_RESTART -- | WINED3D_LEGACY_CUBEMAP_FILTERING; -+ | WINED3D_LEGACY_CUBEMAP_FILTERING | WINED3D_LEGACY_SHADER_CONSTANTS; +- | WINED3D_LEGACY_CUBEMAP_FILTERING | WINED3D_NO_DRAW_INDIRECT; ++ | WINED3D_LEGACY_CUBEMAP_FILTERING | WINED3D_NO_DRAW_INDIRECT | WINED3D_LEGACY_SHADER_CONSTANTS; unsigned int adapter_idx, output_idx, adapter_count, output_count = 0; struct wined3d_adapter *wined3d_adapter; diff --git a/dlls/d3d9/directx.c b/dlls/d3d9/directx.c -index a1ebc986226..7ac9e9010ec 100644 +index 64291c586bb..cd76dfdcf74 100644 --- a/dlls/d3d9/directx.c +++ b/dlls/d3d9/directx.c -@@ -686,7 +686,7 @@ BOOL d3d9_init(struct d3d9 *d3d9, BOOL extended) +@@ -685,7 +685,7 @@ BOOL d3d9_init(struct d3d9 *d3d9, BOOL extended) DWORD flags = WINED3D_PRESENT_CONVERSION | WINED3D_HANDLE_RESTORE | WINED3D_PIXEL_CENTER_INTEGER | WINED3D_SRGB_READ_WRITE_CONTROL | WINED3D_LEGACY_UNBOUND_RESOURCE_COLOR | WINED3D_NO_PRIMITIVE_RESTART | WINED3D_LEGACY_CUBEMAP_FILTERING -- | WINED3D_NORMALIZED_DEPTH_BIAS; -+ | WINED3D_NORMALIZED_DEPTH_BIAS | WINED3D_LEGACY_SHADER_CONSTANTS; +- | WINED3D_NORMALIZED_DEPTH_BIAS | WINED3D_NO_DRAW_INDIRECT; ++ | WINED3D_NORMALIZED_DEPTH_BIAS | WINED3D_NO_DRAW_INDIRECT | WINED3D_LEGACY_SHADER_CONSTANTS; unsigned int adapter_idx, output_idx, adapter_count, output_count = 0; struct wined3d_adapter *wined3d_adapter; diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c -index 9328ae3d587..01a9cf990f9 100644 +index 60a168b5cef..02643b7b3fe 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c -@@ -3113,6 +3113,9 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) +@@ -3095,6 +3095,9 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info) gl_info->limits.uniform_blocks[WINED3D_SHADER_TYPE_VERTEX] = min(gl_max, WINED3D_MAX_CBS); TRACE("Max vertex uniform blocks: %u (%d).\n", gl_info->limits.uniform_blocks[WINED3D_SHADER_TYPE_VERTEX], gl_max); @@ -56,10 +56,10 @@ index 9328ae3d587..01a9cf990f9 100644 } if (gl_info->supported[ARB_TESSELLATION_SHADER]) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c -index adfbf60e726..c68a3ad3d55 100644 +index 40b5442ed04..3e3f9f79da0 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c -@@ -135,6 +135,10 @@ struct shader_glsl_priv +@@ -132,6 +132,10 @@ struct shader_glsl_priv unsigned char *stack; UINT next_constant_version; @@ -70,7 +70,7 @@ index adfbf60e726..c68a3ad3d55 100644 const struct wined3d_vertex_pipe_ops *vertex_pipe; const struct wined3d_fragment_pipe_ops *fragment_pipe; struct wine_rb_tree ffp_vertex_shaders; -@@ -186,6 +190,7 @@ struct glsl_vs_program +@@ -183,6 +187,7 @@ struct glsl_vs_program GLint pointsize_l_att_location; GLint pointsize_q_att_location; GLint clip_planes_location; @@ -78,7 +78,7 @@ index adfbf60e726..c68a3ad3d55 100644 }; struct glsl_hs_program -@@ -283,6 +288,7 @@ struct glsl_context_data +@@ -280,6 +285,7 @@ struct glsl_context_data struct glsl_shader_prog_link *glsl_program; GLenum vertex_color_clamp; BOOL rasterization_disabled; @@ -86,7 +86,7 @@ index adfbf60e726..c68a3ad3d55 100644 }; struct glsl_ps_compiled_shader -@@ -1182,12 +1188,54 @@ static void walk_constant_heap_clamped(const struct wined3d_gl_info *gl_info, +@@ -1179,12 +1185,54 @@ static void walk_constant_heap_clamped(const struct wined3d_gl_info *gl_info, checkGLcall("walk_constant_heap_clamped()"); } @@ -142,7 +142,7 @@ index adfbf60e726..c68a3ad3d55 100644 /* 1.X pshaders have the constants clamped to [-1;1] implicitly. */ if (shader->reg_maps.shader_version.major == 1 -@@ -1522,7 +1570,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context +@@ -1517,7 +1565,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context { const struct wined3d_shader *vshader = state->shader[WINED3D_SHADER_TYPE_VERTEX]; const struct wined3d_shader *pshader = state->shader[WINED3D_SHADER_TYPE_PIXEL]; @@ -151,7 +151,7 @@ index adfbf60e726..c68a3ad3d55 100644 struct wined3d_context_gl *context_gl = wined3d_context_gl(context); struct glsl_shader_prog_link *prog = ctx_data->glsl_program; const struct wined3d_gl_info *gl_info = context_gl->gl_info; -@@ -1539,9 +1587,32 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context +@@ -1534,9 +1582,32 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context constant_version = prog->constant_version; update_mask = context->constant_update_mask & prog->constant_update_mask; @@ -185,7 +185,7 @@ index adfbf60e726..c68a3ad3d55 100644 if (update_mask & WINED3D_SHADER_CONST_VS_I) shader_glsl_load_constants_i(vshader, gl_info, state->vs_consts_i, -@@ -1694,7 +1765,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context +@@ -1689,7 +1760,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context if (update_mask & WINED3D_SHADER_CONST_PS_F) shader_glsl_load_constants_f(pshader, gl_info, state->ps_consts_f, @@ -194,7 +194,7 @@ index adfbf60e726..c68a3ad3d55 100644 if (update_mask & WINED3D_SHADER_CONST_PS_I) shader_glsl_load_constants_i(pshader, gl_info, state->ps_consts_i, -@@ -1833,6 +1904,12 @@ static void shader_glsl_update_float_vertex_constants(struct wined3d_device *dev +@@ -1828,6 +1899,12 @@ static void shader_glsl_update_float_vertex_constants(struct wined3d_device *dev struct constant_heap *heap = &priv->vconst_heap; UINT i; @@ -207,7 +207,7 @@ index adfbf60e726..c68a3ad3d55 100644 for (i = start; i < count + start; ++i) { update_heap_entry(heap, i, priv->next_constant_version); -@@ -1845,6 +1922,9 @@ static void shader_glsl_update_float_pixel_constants(struct wined3d_device *devi +@@ -1840,6 +1917,9 @@ static void shader_glsl_update_float_pixel_constants(struct wined3d_device *devi struct constant_heap *heap = &priv->pconst_heap; UINT i; @@ -217,7 +217,7 @@ index adfbf60e726..c68a3ad3d55 100644 for (i = start; i < count + start; ++i) { update_heap_entry(heap, i, priv->next_constant_version); -@@ -2162,6 +2242,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c +@@ -2157,6 +2237,7 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c const struct wined3d_shader_reg_maps *reg_maps, const struct shader_glsl_ctx_priv *ctx_priv) { const struct wined3d_shader_version *version = ®_maps->shader_version; @@ -225,7 +225,7 @@ index adfbf60e726..c68a3ad3d55 100644 const struct vs_compile_args *vs_args = ctx_priv->cur_vs_args; const struct ps_compile_args *ps_args = ctx_priv->cur_ps_args; const struct wined3d_gl_info *gl_info = context_gl->gl_info; -@@ -2185,7 +2266,15 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c +@@ -2190,7 +2271,15 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c } /* Declare the constants (aka uniforms) */ @@ -242,7 +242,7 @@ index adfbf60e726..c68a3ad3d55 100644 { unsigned max_constantsF; -@@ -2250,11 +2339,12 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c +@@ -2255,11 +2344,12 @@ static void shader_generate_glsl_declarations(const struct wined3d_context_gl *c } else { @@ -257,7 +257,7 @@ index adfbf60e726..c68a3ad3d55 100644 } /* Always declare the full set of constants, the compiler can remove the -@@ -9933,17 +10023,36 @@ static struct glsl_ffp_fragment_shader *shader_glsl_find_ffp_fragment_shader(str +@@ -9942,17 +10032,36 @@ static struct glsl_ffp_fragment_shader *shader_glsl_find_ffp_fragment_shader(str static void shader_glsl_init_vs_uniform_locations(const struct wined3d_gl_info *gl_info, @@ -299,7 +299,7 @@ index adfbf60e726..c68a3ad3d55 100644 for (i = 0; i < WINED3D_MAX_CONSTS_I; ++i) { -@@ -11021,6 +11130,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win +@@ -11024,6 +11133,7 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win const struct wined3d_fragment_pipe_ops *fragment_pipe) { SIZE_T stack_size = wined3d_log2i(max(WINED3D_MAX_VS_CONSTS_F, WINED3D_MAX_PS_CONSTS_F)) + 1; @@ -307,7 +307,7 @@ index adfbf60e726..c68a3ad3d55 100644 struct fragment_caps fragment_caps; void *vertex_priv, *fragment_priv; struct shader_glsl_priv *priv; -@@ -11028,6 +11138,8 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win +@@ -11031,6 +11141,8 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win if (!(priv = heap_alloc_zero(sizeof(*priv)))) return E_OUTOFMEMORY; @@ -316,7 +316,7 @@ index adfbf60e726..c68a3ad3d55 100644 string_buffer_list_init(&priv->string_buffers); if (!(vertex_priv = vertex_pipe->vp_alloc(&glsl_shader_backend, priv))) -@@ -11082,6 +11194,8 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win +@@ -11085,6 +11197,8 @@ static HRESULT shader_glsl_alloc(struct wined3d_device *device, const struct win device->fragment_priv = fragment_priv; device->shader_priv = priv; @@ -325,7 +325,7 @@ index adfbf60e726..c68a3ad3d55 100644 return WINED3D_OK; fail: -@@ -11109,6 +11223,13 @@ static void shader_glsl_free(struct wined3d_device *device, struct wined3d_conte +@@ -11112,6 +11226,13 @@ static void shader_glsl_free(struct wined3d_device *device, struct wined3d_conte priv->fragment_pipe->free_private(device, context); priv->vertex_pipe->vp_free(device, context); @@ -340,10 +340,10 @@ index adfbf60e726..c68a3ad3d55 100644 device->shader_priv = NULL; } diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c -index 957710dbd43..896e8d37690 100644 +index c2e77021bb3..3c22e01094e 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c -@@ -767,6 +767,8 @@ static BOOL shader_record_register_usage(struct wined3d_shader *shader, struct w +@@ -765,6 +765,8 @@ static BOOL shader_record_register_usage(struct wined3d_shader *shader, struct w } else { @@ -353,10 +353,10 @@ index 957710dbd43..896e8d37690 100644 } } diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c -index a39eefa4387..566404d7887 100644 +index ee3e083e812..0569eafd48f 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c -@@ -4569,6 +4569,11 @@ static void state_cb(struct wined3d_context *context, const struct wined3d_state +@@ -4594,6 +4594,11 @@ static void state_cb(struct wined3d_context *context, const struct wined3d_state struct wined3d_bo_gl *bo_gl; TRACE("context %p, state %p, state_id %#x.\n", context, state, state_id); @@ -369,10 +369,10 @@ index a39eefa4387..566404d7887 100644 if (STATE_IS_GRAPHICS_CONSTANT_BUFFER(state_id)) shader_type = state_id - STATE_GRAPHICS_CONSTANT_BUFFER(0); diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h -index 08f5dc6b862..6503c6cd38a 100644 +index b7d3b579ed2..8b1ac25321f 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h -@@ -1138,6 +1138,7 @@ struct wined3d_shader_reg_maps +@@ -1217,6 +1217,7 @@ struct wined3d_shader_reg_maps struct wined3d_shader_tgsm *tgsm; SIZE_T tgsm_capacity; unsigned int tgsm_count; @@ -380,7 +380,7 @@ index 08f5dc6b862..6503c6cd38a 100644 }; /* Keeps track of details for TEX_M#x# instructions which need to maintain -@@ -3259,6 +3260,7 @@ struct wined3d_gl_limits +@@ -3355,6 +3356,7 @@ struct wined3d_gl_limits UINT glsl_varyings; UINT glsl_vs_float_constants; UINT glsl_ps_float_constants; @@ -389,17 +389,17 @@ index 08f5dc6b862..6503c6cd38a 100644 UINT arb_vs_float_constants; UINT arb_vs_native_constants; diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h -index 9c17135570c..6c865929836 100644 +index a18dcda45be..14c89680771 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h -@@ -1343,6 +1343,7 @@ enum wined3d_pipeline - #define WINED3D_NO_PRIMITIVE_RESTART 0x00000800 +@@ -1323,6 +1323,7 @@ enum wined3d_memory_segment_group #define WINED3D_LEGACY_CUBEMAP_FILTERING 0x00001000 #define WINED3D_NORMALIZED_DEPTH_BIAS 0x00002000 -+#define WINED3D_LEGACY_SHADER_CONSTANTS 0x00004000 + #define WINED3D_NO_DRAW_INDIRECT 0x00004000 ++#define WINED3D_LEGACY_SHADER_CONSTANTS 0x00008000 #define WINED3D_RESZ_CODE 0x7fa05000 -- -2.33.0 +2.35.1 diff --git a/patches/winspool.drv-ClosePrinter/0001-winspool.drv-Add-more-tracing-to-ClosePrinter.patch b/patches/winspool.drv-ClosePrinter/0001-winspool.drv-Add-more-tracing-to-ClosePrinter.patch index b6592782..932c6810 100644 --- a/patches/winspool.drv-ClosePrinter/0001-winspool.drv-Add-more-tracing-to-ClosePrinter.patch +++ b/patches/winspool.drv-ClosePrinter/0001-winspool.drv-Add-more-tracing-to-ClosePrinter.patch @@ -1,4 +1,4 @@ -From 98ceaf4ecb3682152baebf2aa38d2de839ac7cea Mon Sep 17 00:00:00 2001 +From 1791ceee2e4f4c677ef65aef8dd79c85fb06d947 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Sat, 30 Jul 2022 18:08:00 +1000 Subject: [PATCH] winspool.drv: Add more tracing to ClosePrinter @@ -8,17 +8,17 @@ Subject: [PATCH] winspool.drv: Add more tracing to ClosePrinter 1 file changed, 3 insertions(+) diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c -index e1cd0338207..0faced259e5 100644 +index 5a74cb29bd9..fe6782daf40 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c -@@ -2857,15 +2857,18 @@ BOOL WINAPI ClosePrinter(HANDLE hPrinter) +@@ -2925,15 +2925,18 @@ BOOL WINAPI ClosePrinter(HANDLE hPrinter) LIST_FOR_EACH_SAFE(cursor, cursor2, &printer->queue->jobs) { job_t *job = LIST_ENTRY(cursor, job_t, entry); + TRACE("Scheduling Job: %p\n", job); ScheduleJob(hPrinter, job->job_id); } - HeapFree(GetProcessHeap(), 0, printer->queue); + free(printer->queue); } if (printer->backend_printer) { diff --git a/staging/upstream-commit b/staging/upstream-commit index 02f33347..f450c63c 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -384b0b35c357ca31ccb080162e1f39f93ec70054 +a8c1d5c108fc57e4d78e9db126f395c89083a83d