Rebase against 48aeef69fc99ff1460da934f4933f0499ff33b13

This commit is contained in:
Alistair Leslie-Hughes 2018-05-18 11:31:57 +10:00
parent 7715ae4be5
commit 41b4cfa2c4
14 changed files with 109 additions and 530 deletions

View File

@ -1,100 +0,0 @@
From 98c0534337d1057e68369b939769dfed30f065ed Mon Sep 17 00:00:00 2001
From: Thomas Crider <gloriouseggroll@gmail.com>
Date: Fri, 13 Apr 2018 18:04:09 -0400
Subject: kernel32: add SetProcessAffinityUpdateMode stub
---
.../api-ms-win-core-processthreads-l1-1-0.spec | 2 +-
.../api-ms-win-core-processthreads-l1-1-1.spec | 2 +-
.../api-ms-win-core-processthreads-l1-1-2.spec | 2 +-
dlls/kernel32/kernel32.spec | 2 +-
dlls/kernel32/process.c | 7 +++++++
dlls/kernelbase/kernelbase.spec | 2 +-
6 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec b/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec
index ff13d48..154c875 100644
--- a/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec
+++ b/dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec
@@ -32,7 +32,7 @@
@ stdcall QueueUserAPC(ptr long long) kernel32.QueueUserAPC
@ stdcall ResumeThread(long) kernel32.ResumeThread
@ stdcall SetPriorityClass(long long) kernel32.SetPriorityClass
-@ stub SetProcessAffinityUpdateMode
+@ stdcall SetProcessAffinityUpdateMode(long long) kernel32.SetProcessAffinityUpdateMode
@ stdcall SetProcessShutdownParameters(long long) kernel32.SetProcessShutdownParameters
@ stdcall SetThreadPriority(long long) kernel32.SetThreadPriority
@ stdcall SetThreadPriorityBoost(long long) kernel32.SetThreadPriorityBoost
diff --git a/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec b/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec
index 381db8a..ebbe55f 100644
--- a/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec
+++ b/dlls/api-ms-win-core-processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec
@@ -43,7 +43,7 @@
@ stdcall QueueUserAPC(ptr long long) kernel32.QueueUserAPC
@ stdcall ResumeThread(long) kernel32.ResumeThread
@ stdcall SetPriorityClass(long long) kernel32.SetPriorityClass
-@ stub SetProcessAffinityUpdateMode
+@ stdcall SetProcessAffinityUpdateMode(long long) kernel32.SetProcessAffinityUpdateMode
@ stub SetProcessMitigationPolicy
@ stdcall SetProcessShutdownParameters(long long) kernel32.SetProcessShutdownParameters
@ stdcall SetThreadContext(long ptr) kernel32.SetThreadContext
diff --git a/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec b/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec
index fc2feec..db94c2e 100644
--- a/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec
+++ b/dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-core-processthreads-l1-1-2.spec
@@ -48,7 +48,7 @@
@ stdcall QueueUserAPC(ptr long long) kernel32.QueueUserAPC
@ stdcall ResumeThread(long) kernel32.ResumeThread
@ stdcall SetPriorityClass(long long) kernel32.SetPriorityClass
-@ stub SetProcessAffinityUpdateMode
+@ stdcall SetProcessAffinityUpdateMode(long long) kernel32.SetProcessAffinityUpdateMode
@ stub SetProcessMitigationPolicy
@ stdcall SetProcessPriorityBoost(long long) kernel32.SetProcessPriorityBoost
@ stdcall SetProcessShutdownParameters(long long) kernel32.SetProcessShutdownParameters
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 7470d2b..8b8fa3a 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -1425,7 +1425,7 @@
@ stdcall SetNamedPipeHandleState(long ptr ptr ptr)
@ stdcall SetPriorityClass(long long)
@ stdcall SetProcessAffinityMask(long long)
-# @ stub SetProcessAffinityUpdateMode
+@ stdcall SetProcessAffinityUpdateMode(long long)
@ stdcall SetProcessDEPPolicy(long)
# @ stub SetProcessPreferredUILanguages
@ stdcall SetProcessPriorityBoost(long long)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 47f1cfb..613b30b 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -3647,6 +3647,13 @@ cleanup:
return !status;
}
+BOOL WINAPI SetProcessAffinityUpdateMode(HANDLE hProcess, DWORD flags)
+{
+ FIXME("(%p,0x%08x): stub\n", hProcess, flags);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
/***********************************************************************
* K32GetProcessImageFileNameA (KERNEL32.@)
*/
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index be1e5b5..768eadf 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1452,7 +1452,7 @@
@ stdcall SetPriorityClass(long long) kernel32.SetPriorityClass
@ stdcall SetPrivateObjectSecurity(long ptr ptr ptr long) advapi32.SetPrivateObjectSecurity
@ stub SetPrivateObjectSecurityEx
-@ stub SetProcessAffinityUpdateMode
+@ stdcall SetProcessAffinityUpdateMode(long long) kernel32.SetProcessAffinityUpdateMode
# @ stub SetProcessDefaultCpuSets
# @ stub SetProcessGroupAffinity
# @ stub SetProcessInformation
--
2.7.4

View File

@ -1 +0,0 @@
Fixes: Crash in Dead Rising 4

View File

@ -1,4 +1,4 @@
From ac83666eff8a7a92177d048f719d5494e32a098c Mon Sep 17 00:00:00 2001
From 225b86d4fb6f51854f173076564f6bea9a9e5ac0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Mon, 3 Apr 2017 05:30:27 +0200
Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data.
@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data.
3 files changed, 144 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index f1c33eef84..5ea7f5ecd8 100644
index ac62d28..0f5ddf1 100644
--- a/dlls/kernel32/tests/loader.c
+++ b/dlls/kernel32/tests/loader.c
@@ -29,6 +29,7 @@
@ -21,7 +21,7 @@ index f1c33eef84..5ea7f5ecd8 100644
#include "wine/test.h"
#include "delayloadhandler.h"
@@ -3546,6 +3547,79 @@ static void test_InMemoryOrderModuleList(void)
@@ -3573,6 +3574,79 @@ static void test_InMemoryOrderModuleList(void)
ok(entry2 == mark2, "expected entry2 == mark2, got %p and %p\n", entry2, mark2);
}
@ -101,14 +101,14 @@ index f1c33eef84..5ea7f5ecd8 100644
START_TEST(loader)
{
int argc;
@@ -3610,4 +3684,5 @@ START_TEST(loader)
@@ -3637,4 +3711,5 @@ START_TEST(loader)
test_import_resolution();
test_ExitProcess();
test_InMemoryOrderModuleList();
+ test_HashLinks();
}
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 7d7c29ec1e..a2a72dd571 100644
index 06915aa..722ab44 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -86,6 +86,9 @@ static const char * const reason_names[] =
@ -121,11 +121,10 @@ index 7d7c29ec1e..a2a72dd571 100644
/* internal representation of 32bit modules. per process. */
typedef struct _wine_modref
{
@@ -347,6 +350,52 @@ static inline ULONG_PTR allocate_stub( const char *dll, const char *name ) { ret
#endif /* __i386__ */
@@ -349,6 +352,52 @@ static inline ULONG_PTR allocate_stub( const char *dll, const char *name ) { ret
+/*************************************************************************
/*************************************************************************
+ * hash_basename
+ *
+ * Calculates the bucket index of a dll using the basename.
@ -171,10 +170,11 @@ index 7d7c29ec1e..a2a72dd571 100644
+ }
+}
+
/*************************************************************************
+/*************************************************************************
* get_modref
*
@@ -1059,7 +1108,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename, LPCWSTR fak
* Looks for the referenced HMODULE in the current process
@@ -1067,7 +1116,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename, LPCWSTR fak
&wm->ldr.InLoadOrderModuleList);
InsertTailList(&NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList,
&wm->ldr.InMemoryOrderModuleList);
@ -187,7 +187,7 @@ index 7d7c29ec1e..a2a72dd571 100644
if (!(nt->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_NX_COMPAT))
{
@@ -1768,6 +1822,7 @@ static void load_builtin_callback( void *module, const char *filename )
@@ -1795,6 +1849,7 @@ static void load_builtin_callback( void *module, const char *filename )
/* the module has only be inserted in the load & memory order lists */
RemoveEntryList(&wm->ldr.InLoadOrderModuleList);
RemoveEntryList(&wm->ldr.InMemoryOrderModuleList);
@ -195,7 +195,7 @@ index 7d7c29ec1e..a2a72dd571 100644
/* FIXME: free the modref */
builtin_load_info->status = STATUS_DLL_NOT_FOUND;
return;
@@ -2024,6 +2079,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, LPCWSTR fakemo
@@ -2055,6 +2110,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, LPCWSTR fakemo
/* the module has only be inserted in the load & memory order lists */
RemoveEntryList(&wm->ldr.InLoadOrderModuleList);
RemoveEntryList(&wm->ldr.InMemoryOrderModuleList);
@ -203,7 +203,7 @@ index 7d7c29ec1e..a2a72dd571 100644
/* FIXME: there are several more dangling references
* left. Including dlls loaded by this dll before the
@@ -3171,6 +3227,7 @@ static void free_modref( WINE_MODREF *wm )
@@ -3230,6 +3286,7 @@ static void free_modref( WINE_MODREF *wm )
{
RemoveEntryList(&wm->ldr.InLoadOrderModuleList);
RemoveEntryList(&wm->ldr.InMemoryOrderModuleList);
@ -211,7 +211,7 @@ index 7d7c29ec1e..a2a72dd571 100644
if (wm->ldr.InInitializationOrderModuleList.Flink)
RemoveEntryList(&wm->ldr.InInitializationOrderModuleList);
@@ -3568,6 +3625,9 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
@@ -3627,6 +3684,9 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2,
RemoveEntryList( &wm->ldr.InMemoryOrderModuleList );
InsertHeadList( &peb->LdrData->InMemoryOrderModuleList, &wm->ldr.InMemoryOrderModuleList );
@ -221,7 +221,7 @@ index 7d7c29ec1e..a2a72dd571 100644
if ((status = virtual_alloc_thread_stack( NtCurrentTeb(), 0, 0, NULL )) != STATUS_SUCCESS)
{
ERR( "Main exe initialization for %s failed, status %x\n",
@@ -3717,6 +3777,7 @@ void __wine_process_init(void)
@@ -3773,6 +3833,7 @@ void __wine_process_init(void)
NTSTATUS status;
ANSI_STRING func_name;
void (* DECLSPEC_NORETURN CDECL init_func)(void);
@ -229,7 +229,7 @@ index 7d7c29ec1e..a2a72dd571 100644
main_exe_file = thread_init();
@@ -3726,6 +3787,10 @@ void __wine_process_init(void)
@@ -3782,6 +3843,10 @@ void __wine_process_init(void)
load_global_options();
@ -241,10 +241,10 @@ index 7d7c29ec1e..a2a72dd571 100644
wine_dll_set_callback( load_builtin_callback );
diff --git a/include/winternl.h b/include/winternl.h
index 8c7071071c..144c27a629 100644
index 3659db1..bd6a8af 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2147,8 +2147,7 @@ typedef struct _LDR_MODULE
@@ -2164,8 +2164,7 @@ typedef struct _LDR_MODULE
ULONG Flags;
SHORT LoadCount;
SHORT TlsIndex;
@ -254,7 +254,7 @@ index 8c7071071c..144c27a629 100644
ULONG TimeDateStamp;
HANDLE ActivationContext;
PVOID PatchInformation;
@@ -2158,6 +2157,9 @@ typedef struct _LDR_MODULE
@@ -2175,6 +2174,9 @@ typedef struct _LDR_MODULE
PVOID ContextInformation;
ULONG_PTR OriginalBase;
LARGE_INTEGER LoadTime;
@ -263,7 +263,7 @@ index 8c7071071c..144c27a629 100644
+ HANDLE SectionHandle;
} LDR_MODULE, *PLDR_MODULE;
/* those defines are (some of the) regular LDR_MODULE.Flags values */
typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
--
2.16.1
1.9.1

View File

@ -1,17 +1,17 @@
From 4b74342ce0dd261a93f5a2d30140078696b5a46d Mon Sep 17 00:00:00 2001
From 85dae537010f21064aea63c24888609169cf249a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 7 Mar 2017 15:26:50 +0100
Subject: include: Update LDR_MODULE to more recent windows versions.
Subject: [PATCH] include: Update LDR_MODULE to more recent windows versions.
---
include/winternl.h | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/include/winternl.h b/include/winternl.h
index 5cd1664f1f..ef9a5bad1c 100644
index 7612f8a..3659db1 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2103,6 +2103,13 @@ typedef struct _LDR_MODULE
@@ -2168,6 +2168,13 @@ typedef struct _LDR_MODULE
ULONG CheckSum;
ULONG TimeDateStamp;
HANDLE ActivationContext;
@ -24,7 +24,7 @@ index 5cd1664f1f..ef9a5bad1c 100644
+ LARGE_INTEGER LoadTime;
} LDR_MODULE, *PLDR_MODULE;
/* those defines are (some of the) regular LDR_MODULE.Flags values */
typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
--
2.11.0
1.9.1

View File

@ -1,18 +1,16 @@
From 99b6bb4e3d0136d51ef3f1b03b3ca8f2b6bdca3d Mon Sep 17 00:00:00 2001
From 1a105dee7bff64ffe5280b29e4274c0d375cacf9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 22 Jul 2017 03:56:26 +0200
Subject: [PATCH] ntdll: Implement LdrRegisterDllNotification and
LdrUnregisterDllNotification.
---
dlls/ntdll/loader.c | 90 ++++++++++++++++++
dlls/ntdll/ntdll.spec | 2 +
dlls/ntdll/loader.c | 79 +++++++++++++++-
dlls/ntdll/tests/rtl.c | 250 +++++++++++++++++++++++++++++++++++++++++++++++++
include/winternl.h | 29 ++++++
4 files changed, 371 insertions(+)
2 files changed, 325 insertions(+), 4 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 0a9069f..adde9ee 100644
index ba3e2df..6495bb3 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -40,6 +40,7 @@
@ -39,7 +37,7 @@ index 0a9069f..adde9ee 100644
#define IS_OPTION_TRUE(ch) ((ch) == 'y' || (ch) == 'Y' || (ch) == 't' || (ch) == 'T' || (ch) == '1')
static BOOL imports_fixup_done = FALSE; /* set once the imports have been fixed up, before attaching them */
@@ -345,6 +355,29 @@ static ULONG_PTR allocate_stub( const char *dll, const char *name )
@@ -350,6 +360,29 @@ static ULONG_PTR allocate_stub( const char *dll, const char *name )
static inline ULONG_PTR allocate_stub( const char *dll, const char *name ) { return 0xdeadbeef; }
#endif /* __i386__ */
@ -69,7 +67,7 @@ index 0a9069f..adde9ee 100644
/*************************************************************************
* hash_basename
@@ -1295,16 +1328,23 @@ static NTSTATUS process_attach( WINE_MODREF *wm, LPVOID lpReserved )
@@ -1334,16 +1367,23 @@ static NTSTATUS process_attach( WINE_MODREF *wm, LPVOID lpReserved )
{
WINE_MODREF *prev = current_modref;
current_modref = wm;
@ -93,7 +91,7 @@ index 0a9069f..adde9ee 100644
current_modref = prev;
}
@@ -1373,6 +1413,7 @@ static void process_detach(void)
@@ -1412,6 +1452,7 @@ static void process_detach(void)
mod->Flags &= ~LDR_PROCESS_ATTACHED;
MODULE_InitDLL( CONTAINING_RECORD(mod, WINE_MODREF, ldr),
DLL_PROCESS_DETACH, ULongToPtr(process_detaching) );
@ -101,15 +99,12 @@ index 0a9069f..adde9ee 100644
/* Restart at head of WINE_MODREF list, as entries might have
been added and/or removed while performing the call ... */
@@ -1482,6 +1523,54 @@ NTSTATUS WINAPI LdrEnumerateLoadedModules( void *unknown, LDRENUMPROC callback,
}
/******************************************************************
+ * LdrRegisterDllNotification (NTDLL.@)
+ */
+NTSTATUS WINAPI LdrRegisterDllNotification(ULONG flags, PLDR_DLL_NOTIFICATION_FUNCTION callback,
+ void *context, void **cookie)
+{
@@ -1526,8 +1567,27 @@ NTSTATUS WINAPI LdrEnumerateLoadedModules( void *unknown, LDRENUMPROC callback,
NTSTATUS WINAPI LdrRegisterDllNotification(ULONG flags, PLDR_DLL_NOTIFICATION_FUNCTION callback,
void *context, void **cookie)
{
- FIXME( "(%04x, %p, %p, %p) stub\n", flags, callback, context, cookie );
- return STATUS_NOT_IMPLEMENTED;
+ struct ldr_notification *notify;
+
+ TRACE( "(%x, %p, %p, %p)\n", flags, callback, context, cookie );
@ -131,13 +126,15 @@ index 0a9069f..adde9ee 100644
+
+ *cookie = notify;
+ return STATUS_SUCCESS;
+}
+
+/******************************************************************
+ * LdrUnregisterDllNotification (NTDLL.@)
+ */
+NTSTATUS WINAPI LdrUnregisterDllNotification(void *cookie)
+{
}
/******************************************************************
@@ -1535,8 +1595,18 @@ NTSTATUS WINAPI LdrRegisterDllNotification(ULONG flags, PLDR_DLL_NOTIFICATION_FU
*/
NTSTATUS WINAPI LdrUnregisterDllNotification( void *cookie )
{
- FIXME( "(%p) stub\n", cookie );
- return STATUS_NOT_IMPLEMENTED;
+ struct ldr_notification *notify = cookie;
+
+ TRACE( "(%p)\n", cookie );
@ -150,13 +147,10 @@ index 0a9069f..adde9ee 100644
+
+ RtlFreeHeap( GetProcessHeap(), 0, notify );
+ return STATUS_SUCCESS;
+}
+
+/******************************************************************
* LdrLockLoaderLock (NTDLL.@)
*
* Note: some flags are not implemented.
@@ -2068,6 +2157,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file,
}
/******************************************************************
@@ -2141,6 +2211,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, LPCWSTR fakemo
TRACE_(loaddll)( "Loaded %s at %p: native\n", debugstr_w(wm->ldr.FullDllName.Buffer), module );
wm->ldr.LoadCount = 1;
@ -164,26 +158,6 @@ index 0a9069f..adde9ee 100644
*pwm = wm;
return STATUS_SUCCESS;
}
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index 2257a93..4c34e10 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -83,6 +83,7 @@
@ stdcall LdrProcessRelocationBlock(ptr long ptr long)
@ stdcall LdrQueryImageFileExecutionOptions(ptr wstr long ptr long ptr)
@ stdcall LdrQueryProcessModuleInformation(ptr long ptr)
+@ stdcall LdrRegisterDllNotification(long ptr long ptr)
@ stdcall LdrResolveDelayLoadedAPI(ptr ptr ptr ptr ptr long)
@ stub LdrSetAppCompatDllRedirectionCallback
@ stub LdrSetDllManifestProber
@@ -91,6 +92,7 @@
@ stub LdrUnloadAlternateResourceModule
@ stdcall LdrUnloadDll(ptr)
@ stdcall LdrUnlockLoaderLock(long long)
+@ stdcall LdrUnregisterDllNotification(ptr)
@ stub LdrVerifyImageMatchesChecksum
@ extern NlsAnsiCodePage
@ extern NlsMbCodePageTag
diff --git a/dlls/ntdll/tests/rtl.c b/dlls/ntdll/tests/rtl.c
index 02ae1c1..8358cd5 100644
--- a/dlls/ntdll/tests/rtl.c
@ -471,53 +445,6 @@ index 02ae1c1..8358cd5 100644
test_RtlMakeSelfRelativeSD();
+ test_LdrRegisterDllNotification();
}
diff --git a/include/winternl.h b/include/winternl.h
index 743f3d7..d24e3f9 100644
--- a/include/winternl.h
+++ b/include/winternl.h
@@ -2161,6 +2161,32 @@ typedef struct _LDR_MODULE
HANDLE SectionHandle;
} LDR_MODULE, *PLDR_MODULE;
+typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA
+{
+ ULONG Flags;
+ PCUNICODE_STRING FullDllName;
+ PCUNICODE_STRING BaseDllName;
+ PVOID DllBase;
+ ULONG SizeOfImage;
+} LDR_DLL_LOADED_NOTIFICATION_DATA, *PLDR_DLL_LOADED_NOTIFICATION_DATA;
+
+typedef struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA
+{
+ ULONG Flags;
+ PCUNICODE_STRING FullDllName;
+ PCUNICODE_STRING BaseDllName;
+ PVOID DllBase;
+ ULONG SizeOfImage;
+} LDR_DLL_UNLOADED_NOTIFICATION_DATA, *PLDR_DLL_UNLOADED_NOTIFICATION_DATA;
+
+typedef union _LDR_DLL_NOTIFICATION_DATA
+{
+ LDR_DLL_LOADED_NOTIFICATION_DATA Loaded;
+ LDR_DLL_UNLOADED_NOTIFICATION_DATA Unloaded;
+} LDR_DLL_NOTIFICATION_DATA, *PLDR_DLL_NOTIFICATION_DATA;
+
+typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICATION_DATA*, void*);
+
/* those defines are (some of the) regular LDR_MODULE.Flags values */
#define LDR_IMAGE_IS_DLL 0x00000004
#define LDR_LOAD_IN_PROGRESS 0x00001000
@@ -2180,6 +2206,9 @@ typedef struct _LDR_MODULE
/* FIXME: to be checked */
#define MAXIMUM_FILENAME_LENGTH 256
+#define LDR_DLL_NOTIFICATION_REASON_LOADED 1
+#define LDR_DLL_NOTIFICATION_REASON_UNLOADED 2
+
typedef struct _SYSTEM_MODULE
{
PVOID Reserved1; /* 00/00 */
--
2.7.4
1.9.1

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "ba1d9f3aad85303997635ce8328caffa08992c14"
echo "48aeef69fc99ff1460da934f4933f0499ff33b13"
}
# Show version information
@ -181,7 +181,6 @@ patch_enable_all ()
enable_kernel32_Profile="$1"
enable_kernel32_SCSI_Sysfs="$1"
enable_kernel32_SetFileCompletionNotificationModes="$1"
enable_kernel32_SetProcessAffinityUpdateMode="$1"
enable_kernelbase_PathCchCombineEx="$1"
enable_krnl386_exe16_GDT_LDT_Emulation="$1"
enable_krnl386_exe16_Invalid_Console_Handles="$1"
@ -307,7 +306,6 @@ patch_enable_all ()
enable_shdocvw_ParseURLFromOutsideSource_Tests="$1"
enable_shell32_ACE_Viewer="$1"
enable_shell32_Context_Menu="$1"
enable_shell32_Microsoft_Windows_Themes="$1"
enable_shell32_NewMenu_Interface="$1"
enable_shell32_Placeholder_Icons="$1"
enable_shell32_Progress_Dialog="$1"
@ -346,7 +344,6 @@ patch_enable_all ()
enable_user32_lpCreateParams="$1"
enable_uxtheme_CloseThemeClass="$1"
enable_uxtheme_GTK_Theming="$1"
enable_version_GetFileVersionInfoSizeExW="$1"
enable_version_VerFindFileA="$1"
enable_version_VerQueryValue="$1"
enable_virtdisk_GetStorageDependencyInformation="$1"
@ -376,7 +373,6 @@ patch_enable_all ()
enable_wined3d_CSMT_Main="$1"
enable_wined3d_DXTn="$1"
enable_wined3d_Dual_Source_Blending="$1"
enable_wined3d_Implement_oMask="$1"
enable_wined3d_Indexed_Vertex_Blending="$1"
enable_wined3d_QUERY_Stubs="$1"
enable_wined3d_Silence_FIXMEs="$1"
@ -724,9 +720,6 @@ patch_enable ()
kernel32-SetFileCompletionNotificationModes)
enable_kernel32_SetFileCompletionNotificationModes="$2"
;;
kernel32-SetProcessAffinityUpdateMode)
enable_kernel32_SetProcessAffinityUpdateMode="$2"
;;
kernelbase-PathCchCombineEx)
enable_kernelbase_PathCchCombineEx="$2"
;;
@ -1102,9 +1095,6 @@ patch_enable ()
shell32-Context_Menu)
enable_shell32_Context_Menu="$2"
;;
shell32-Microsoft_Windows_Themes)
enable_shell32_Microsoft_Windows_Themes="$2"
;;
shell32-NewMenu_Interface)
enable_shell32_NewMenu_Interface="$2"
;;
@ -1219,9 +1209,6 @@ patch_enable ()
uxtheme-GTK_Theming)
enable_uxtheme_GTK_Theming="$2"
;;
version-GetFileVersionInfoSizeExW)
enable_version_GetFileVersionInfoSizeExW="$2"
;;
version-VerFindFileA)
enable_version_VerFindFileA="$2"
;;
@ -1309,9 +1296,6 @@ patch_enable ()
wined3d-Dual_Source_Blending)
enable_wined3d_Dual_Source_Blending="$2"
;;
wined3d-Implement-oMask)
enable_wined3d_Implement_oMask="$2"
;;
wined3d-Indexed_Vertex_Blending)
enable_wined3d_Indexed_Vertex_Blending="$2"
;;
@ -4415,20 +4399,6 @@ if test "$enable_kernel32_SetFileCompletionNotificationModes" -eq 1; then
) >> "$patchlist"
fi
# Patchset kernel32-SetProcessAffinityUpdateMode
# |
# | Modified files:
# | * dlls/api-ms-win-core-processthreads-l1-1-0/api-ms-win-core-processthreads-l1-1-0.spec, dlls/api-ms-win-core-
# | processthreads-l1-1-1/api-ms-win-core-processthreads-l1-1-1.spec, dlls/api-ms-win-core-processthreads-l1-1-2/api-ms-win-
# | core-processthreads-l1-1-2.spec, dlls/kernel32/kernel32.spec, dlls/kernel32/process.c, dlls/kernelbase/kernelbase.spec
# |
if test "$enable_kernel32_SetProcessAffinityUpdateMode" -eq 1; then
patch_apply kernel32-SetProcessAffinityUpdateMode/0001-kernel32-add-SetProcessAffinityUpdateMode-stub.patch
(
printf '%s\n' '+ { "Thomas Crider", "kernel32: Add SetProcessAffinityUpdateMode stub.", 1 },';
) >> "$patchlist"
fi
# Patchset kernelbase-PathCchCombineEx
# |
# | This patchset fixes the following Wine bugs:
@ -5177,7 +5147,7 @@ fi
# | * [#44585] Implement LdrRegisterDllNotification/LdrUnregisterDllNotification
# |
# | Modified files:
# | * dlls/ntdll/loader.c, dlls/ntdll/ntdll.spec, dlls/ntdll/tests/rtl.c, include/winternl.h
# | * dlls/ntdll/loader.c, dlls/ntdll/tests/rtl.c
# |
if test "$enable_ntdll_LdrRegisterDllNotification" -eq 1; then
patch_apply ntdll-LdrRegisterDllNotification/0001-ntdll-Implement-LdrRegisterDllNotification-and-LdrUn.patch
@ -6521,21 +6491,6 @@ if test "$enable_shell32_Context_Menu" -eq 1; then
) >> "$patchlist"
fi
# Patchset shell32-Microsoft_Windows_Themes
# |
# | This patchset fixes the following Wine bugs:
# | * [#34910] Create Microsoft\Windows\Themes directory during Wineprefix creation
# |
# | Modified files:
# | * dlls/shell32/shellpath.c
# |
if test "$enable_shell32_Microsoft_Windows_Themes" -eq 1; then
patch_apply shell32-Microsoft_Windows_Themes/0001-shell32-Create-Microsoft-Windows-Themes-directory-du.patch
(
printf '%s\n' '+ { "Sebastian Lackner", "shell32: Create Microsoft\\Windows\\Themes directory during Wineprefix creation.", 1 },';
) >> "$patchlist"
fi
# Patchset shell32-NewMenu_Interface
# |
# | This patchset fixes the following Wine bugs:
@ -7191,18 +7146,6 @@ if test "$enable_uxtheme_GTK_Theming" -eq 1; then
) >> "$patchlist"
fi
# Patchset version-GetFileVersionInfoSizeExW
# |
# | Modified files:
# | * dlls/version/version.c
# |
if test "$enable_version_GetFileVersionInfoSizeExW" -eq 1; then
patch_apply version-GetFileVersionInfoSizeExW/0001-version-Return-ERROR_FILE_NOT_FOUND-for-Win-9X-when-.patch
(
printf '%s\n' '+ { "Michael Müller", "version: Return ERROR_FILE_NOT_FOUND for Win 9X when a file was not found in GetFileVersionInfoSizeEx.", 1 },';
) >> "$patchlist"
fi
# Patchset version-VerFindFileA
# |
# | Modified files:
@ -7784,21 +7727,6 @@ if test "$enable_wined3d_CSMT_Main" -eq 1; then
) >> "$patchlist"
fi
# Patchset wined3d-Implement-oMask
# |
# | This patchset fixes the following Wine bugs:
# | * [#44964] Implement oMask.
# |
# | Modified files:
# | * dlls/wined3d/glsl_shader.c, dlls/wined3d/shader.c, dlls/wined3d/wined3d_private.h
# |
if test "$enable_wined3d_Implement_oMask" -eq 1; then
patch_apply wined3d-Implement-oMask/0001-wined3d-Implement-oMask.patch
(
printf '%s\n' '+ { "Józef Kucia", "wined3d: Implement oMask.", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-WINED3D_RS_COLORWRITEENABLE
# |
# | This patchset has the following (direct or indirect) dependencies:

View File

@ -1,47 +0,0 @@
From f3cfd0b818d3dd45034a4ba90fb3cd170b8fd32e Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 3 Sep 2015 04:56:23 +0200
Subject: [PATCH] shell32: Create Microsoft\Windows\Themes directory during
Wineprefix creation.
---
dlls/shell32/shellpath.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index e14f533..bd07574 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -857,6 +857,7 @@ static const WCHAR Microsoft_Windows_Start_Menu_Admin_ToolsW[] = {'M','i','c','r
static const WCHAR Microsoft_Windows_Start_Menu_StartupW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','S','t','a','r','t',' ','M','e','n','u','\\','P','r','o','g','r','a','m','s','\\','S','t','a','r','t','U','p','\0'};
static const WCHAR Microsoft_Windows_TemplatesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','T','e','m','p','l','a','t','e','s',0};
static const WCHAR Microsoft_Windows_Temporary_Internet_FilesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','T','e','m','p','o','r','a','r','y',' ','I','n','t','e','r','n','e','t',' ','F','i','l','e','s',0};
+static const WCHAR Microsoft_Windows_ThemesW[] = {'M','i','c','r','o','s','o','f','t','\\','W','i','n','d','o','w','s','\\','T','h','e','m','e','s',0};
static const WCHAR MoviesW[] = {'M','o','v','i','e','s','\0'};
static const WCHAR MusicW[] = {'M','u','s','i','c','\0'};
static const WCHAR MusicLibraryW[] = {'M','u','s','i','c','L','i','b','r','a','r','y',0};
@@ -4267,6 +4268,7 @@ static HRESULT _SHRegisterUserShellFolders(BOOL bDefault)
};
WCHAR userShellFolderPath[MAX_PATH], shellFolderPath[MAX_PATH];
LPCWSTR pUserShellFolderPath, pShellFolderPath;
+ WCHAR path[MAX_PATH];
HRESULT hr = S_OK;
HKEY hRootKey;
HANDLE hToken;
@@ -4295,6 +4297,13 @@ static HRESULT _SHRegisterUserShellFolders(BOOL bDefault)
hr = _SHRegisterFolders(hRootKey, hToken, pUserShellFolderPath,
pShellFolderPath, folders, ARRAY_SIZE(folders));
+
+ if (SUCCEEDED(hr))
+ {
+ hr = SHGetFolderPathAndSubDirW(0, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL,
+ SHGFP_TYPE_DEFAULT, Microsoft_Windows_ThemesW, path);
+ }
+
TRACE("returning 0x%08x\n", hr);
return hr;
}
--
1.9.1

View File

@ -1 +0,0 @@
Fixes: [34910] Create Microsoft\Windows\Themes directory during Wineprefix creation

View File

@ -1,31 +0,0 @@
From de85bfa7d218a6a4a938aefffda709dbec7e7b4f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Wed, 2 Mar 2016 22:59:57 +0100
Subject: version: Return ERROR_FILE_NOT_FOUND for Win 9X when a file was not
found in GetFileVersionInfoSizeEx.
---
dlls/version/version.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dlls/version/version.c b/dlls/version/version.c
index 43f5c18..71bfc67 100644
--- a/dlls/version/version.c
+++ b/dlls/version/version.c
@@ -694,7 +694,12 @@ DWORD WINAPI GetFileVersionInfoSizeExW( DWORD flags, LPCWSTR filename, LPDWORD h
return (len * 2) + 4;
default:
- SetLastError( lzfd == HFILE_ERROR ? ofs.nErrCode : ERROR_RESOURCE_DATA_NOT_FOUND );
+ if (lzfd == HFILE_ERROR)
+ SetLastError(ofs.nErrCode);
+ else if (GetVersion() & 0x80000000)
+ SetLastError(ERROR_FILE_NOT_FOUND);
+ else
+ SetLastError(ERROR_RESOURCE_DATA_NOT_FOUND);
return 0;
}
}
--
2.7.1

View File

@ -1 +0,0 @@
Fixes: Return ERROR_FILE_NOT_FOUND for Win 9X when a file was not found in GetFileVersionInfoSizeEx

View File

@ -1,94 +0,0 @@
From 18de08ab2090d87ae9a313362fa254c350e5c730 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B3zef=20Kucia?= <joseph.kucia@gmail.com>
Date: Sat, 12 May 2018 09:29:10 +1000
Subject: [PATCH] wined3d: Implement oMask
---
dlls/wined3d/glsl_shader.c | 10 ++++++++++
dlls/wined3d/shader.c | 4 ++++
dlls/wined3d/wined3d_private.h | 6 ++++--
3 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index c79fbb5f4fc..e250f34b89a 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -2955,6 +2955,10 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register *
sprintf(register_name, "vpc[%u]", reg->idx[0].offset);
break;
+ case WINED3DSPR_SAMPLEMASK:
+ sprintf(register_name, "sample_mask");
+ break;
+
default:
FIXME("Unhandled register type %#x.\n", reg->type);
sprintf(register_name, "unrecognized_register");
@@ -7268,6 +7272,9 @@ static void shader_glsl_generate_ps_epilogue(const struct wined3d_gl_info *gl_in
shader_glsl_generate_fog_code(buffer, gl_info, args->fog);
shader_glsl_generate_alpha_test(buffer, gl_info, args->alpha_test_func + 1);
+
+ if (reg_maps->sample_mask)
+ shader_addline(buffer, "gl_SampleMask[0] = floatBitsToInt(sample_mask);\n");
}
/* Context activation is done by the caller. */
@@ -7476,6 +7483,9 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
shader_addline(buffer, "void main()\n{\n");
+ if (reg_maps->sample_mask)
+ shader_addline(buffer, "float sample_mask = uintBitsToFloat(0xffffffffu);\n");
+
/* Direct3D applications expect integer vPos values, while OpenGL drivers
* add approximately 0.5. This causes off-by-one problems as spotted by
* the vPos d3d9 visual test. Unfortunately ATI cards do not add exactly
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index 624dc55e900..da7b8134add 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -810,6 +810,10 @@ static BOOL shader_record_register_usage(struct wined3d_shader *shader, struct w
reg_maps->vocp = 1;
break;
+ case WINED3DSPR_SAMPLEMASK:
+ reg_maps->sample_mask = 1;
+ break;
+
default:
TRACE("Not recording register of type %#x and [%#x][%#x].\n",
reg->type, reg->idx[0].offset, reg->idx[1].offset);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index f8f4bd59149..bb2a1068087 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1043,7 +1043,8 @@ struct wined3d_shader_reg_maps
DWORD vocp : 1;
DWORD input_rel_addressing : 1;
DWORD viewport_array : 1;
- DWORD padding : 15;
+ DWORD sample_mask : 1;
+ DWORD padding : 14;
DWORD rt_mask; /* Used render targets, 32 max. */
@@ -4143,13 +4144,14 @@ static inline BOOL shader_is_scalar(const struct wined3d_shader_register *reg)
/* oPos */
return FALSE;
+ case WINED3DSPR_CONSTBOOL: /* b# */
case WINED3DSPR_DEPTHOUT: /* oDepth */
case WINED3DSPR_DEPTHOUTGE:
case WINED3DSPR_DEPTHOUTLE:
- case WINED3DSPR_CONSTBOOL: /* b# */
case WINED3DSPR_LOOP: /* aL */
case WINED3DSPR_PREDICATE: /* p0 */
case WINED3DSPR_PRIMID: /* primID */
+ case WINED3DSPR_SAMPLEMASK:
return TRUE;
case WINED3DSPR_MISCTYPE:
--
2.17.0

View File

@ -1,2 +0,0 @@
Fixes: [44964] Implement oMask.

View File

@ -1,7 +1,8 @@
From 67cb3d1151bf787bb66d54e4fa4e06dc6b5cb0ac Mon Sep 17 00:00:00 2001
From ece98fdbc8cdf819452f91ee713542d7d13b3d49 Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Sat, 26 Aug 2017 00:59:29 +0200
Subject: wined3d: Implement hardware indexed vertex blending with 9 matrices.
Subject: [PATCH] wined3d: Implement hardware indexed vertex blending with 9
matrices.
---
dlls/d3d9/tests/visual.c | 2 +-
@ -12,10 +13,10 @@ Subject: wined3d: Implement hardware indexed vertex blending with 9 matrices.
5 files changed, 51 insertions(+), 12 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 9e0c33b..6d05d68 100644
index bb5410e..a6408c0 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -20392,7 +20392,7 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
@@ -20491,7 +20491,7 @@ static void do_test_indexed_vertex_blending(IDirect3DDevice9 *device, const char
ok(SUCCEEDED(hr), "Failed to get device caps, hr %#x.\n", hr);
if (caps.MaxVertexBlendMatrixIndex < 7 || caps.MaxVertexBlendMatrices < 4)
{
@ -25,7 +26,7 @@ index 9e0c33b..6d05d68 100644
return;
}
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
index 6cc030a..12100a5 100644
index a8ed36a..586991e 100644
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -143,7 +143,7 @@ struct glsl_vs_program
@ -37,7 +38,7 @@ index 6cc030a..12100a5 100644
GLint projection_matrix_location;
GLint normal_matrix_location;
GLint texture_matrix_location[MAX_TEXTURES];
@@ -1818,7 +1818,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
@@ -1831,7 +1831,7 @@ static void shader_glsl_load_constants(void *shader_priv, struct wined3d_context
{
struct wined3d_matrix mat;
@ -46,7 +47,7 @@ index 6cc030a..12100a5 100644
{
if (prog->vs.modelview_matrix_location[i] == -1)
break;
@@ -8755,8 +8755,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8956,8 +8956,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
{
{"vec4", "ffp_attrib_position"}, /* WINED3D_FFP_POSITION */
{"vec4", "ffp_attrib_blendweight"}, /* WINED3D_FFP_BLENDWEIGHT */
@ -56,7 +57,7 @@ index 6cc030a..12100a5 100644
{"vec3", "ffp_attrib_normal"}, /* WINED3D_FFP_NORMAL */
{"float", "ffp_attrib_psize"}, /* WINED3D_FFP_PSIZE */
{"vec4", "ffp_attrib_diffuse"}, /* WINED3D_FFP_DIFFUSE */
@@ -8768,6 +8767,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8969,6 +8968,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
BOOL legacy_lighting = priv->legacy_lighting;
GLuint shader_obj;
unsigned int i;
@ -64,7 +65,7 @@ index 6cc030a..12100a5 100644
string_buffer_clear(buffer);
@@ -8786,7 +8786,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -8987,7 +8987,7 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
}
shader_addline(buffer, "\n");
@ -73,7 +74,7 @@ index 6cc030a..12100a5 100644
shader_addline(buffer, "uniform mat4 ffp_projection_matrix;\n");
shader_addline(buffer, "uniform mat3 ffp_normal_matrix;\n");
shader_addline(buffer, "uniform mat4 ffp_texture_matrix[%u];\n", MAX_TEXTURES);
@@ -8878,7 +8878,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -9079,7 +9079,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
shader_addline(buffer, "vec4 ec_pos = vec4(0.0);\n");
for (i = 0; i < settings->vertexblends + 1; ++i)
@ -85,7 +86,7 @@ index 6cc030a..12100a5 100644
shader_addline(buffer, "gl_Position = ffp_projection_matrix * ec_pos;\n");
if (settings->clipping)
@@ -8902,7 +8905,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
@@ -9103,7 +9106,10 @@ static GLuint shader_glsl_generate_ffp_vertex_shader(struct shader_glsl_priv *pr
else
{
for (i = 0; i < settings->vertexblends + 1; ++i)
@ -97,7 +98,7 @@ index 6cc030a..12100a5 100644
}
if (settings->normalize)
@@ -9775,7 +9781,7 @@ static void shader_glsl_init_vs_uniform_locations(const struct wined3d_gl_info *
@@ -9973,7 +9979,7 @@ static void shader_glsl_init_vs_uniform_locations(const struct wined3d_gl_info *
vs->pos_fixup_location = GL_EXTCALL(glGetUniformLocation(program_id, "pos_fixup"));
@ -106,7 +107,7 @@ index 6cc030a..12100a5 100644
{
string_buffer_sprintf(name, "ffp_modelview_matrix[%u]", i);
vs->modelview_matrix_location[i] = GL_EXTCALL(glGetUniformLocation(program_id, name->buffer));
@@ -10349,7 +10355,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
@@ -10565,7 +10571,7 @@ static void set_glsl_shader_program(const struct wined3d_context *context, const
entry->constant_update_mask |= WINED3D_SHADER_CONST_FFP_MODELVIEW
| WINED3D_SHADER_CONST_FFP_PROJ;
@ -115,7 +116,7 @@ index 6cc030a..12100a5 100644
{
if (entry->vs.modelview_matrix_location[i] != -1)
{
@@ -11321,7 +11327,7 @@ static void glsl_vertex_pipe_vp_get_caps(const struct wined3d_gl_info *gl_info,
@@ -11538,7 +11544,7 @@ static void glsl_vertex_pipe_vp_get_caps(const struct wined3d_gl_info *gl_info,
caps->ffp_generic_attributes = TRUE;
caps->max_active_lights = MAX_ACTIVE_LIGHTS;
caps->max_vertex_blend_matrices = MAX_VERTEX_BLENDS;
@ -124,7 +125,7 @@ index 6cc030a..12100a5 100644
caps->vertex_processing_caps = WINED3DVTXPCAPS_TEXGEN
| WINED3DVTXPCAPS_MATERIALSOURCE7
| WINED3DVTXPCAPS_VERTEXFOG
@@ -11699,6 +11705,11 @@ static const struct StateEntryTemplate glsl_vertex_pipe_vp_states[] =
@@ -11916,6 +11922,11 @@ static const struct StateEntryTemplate glsl_vertex_pipe_vp_states[] =
{STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(1)), {STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(1)), glsl_vertex_pipe_vertexblend }, WINED3D_GL_EXT_NONE },
{STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(2)), {STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(2)), glsl_vertex_pipe_vertexblend }, WINED3D_GL_EXT_NONE },
{STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(3)), {STATE_TRANSFORM(WINED3D_TS_WORLD_MATRIX(3)), glsl_vertex_pipe_vertexblend }, WINED3D_GL_EXT_NONE },
@ -137,10 +138,10 @@ index 6cc030a..12100a5 100644
{STATE_TEXTURESTAGE(1, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), {STATE_TEXTURESTAGE(1, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), glsl_vertex_pipe_texmatrix}, WINED3D_GL_EXT_NONE },
{STATE_TEXTURESTAGE(2, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), {STATE_TEXTURESTAGE(2, WINED3D_TSS_TEXTURE_TRANSFORM_FLAGS), glsl_vertex_pipe_texmatrix}, WINED3D_GL_EXT_NONE },
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 7cb2007..60a9ee0 100644
index ab9fc45..8df1a49 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -5957,6 +5957,9 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
@@ -5910,6 +5910,9 @@ void wined3d_ffp_get_vs_settings(const struct wined3d_context *context,
break;
}
@ -171,18 +172,18 @@ index 3d1518d..82348b4 100644
switch(element->format)
{
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 45a7903..64dad01 100644
index 7c813bf..e7892ea 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -275,6 +275,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
@@ -276,6 +276,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
#define MAX_UNORDERED_ACCESS_VIEWS 8
#define MAX_TGSM_REGISTERS 8192
#define MAX_VERTEX_BLENDS 4
+#define MAX_VERTEX_INDEX_BLENDS 9
#define MAX_MULTISAMPLE_TYPES 8
#define MAX_RENDER_TARGETS 8
@@ -2741,7 +2742,8 @@ struct wined3d_ffp_vs_settings
struct min_lookup
@@ -2778,7 +2779,8 @@ struct wined3d_ffp_vs_settings
DWORD ortho_fog : 1;
DWORD flatshading : 1;
DWORD swizzle_map : 16; /* MAX_ATTRIBS, 16 */
@ -192,7 +193,7 @@ index 45a7903..64dad01 100644
DWORD texgen[MAX_TEXTURES];
};
@@ -4326,6 +4328,20 @@ static inline BOOL wined3d_format_is_typeless(const struct wined3d_format *forma
@@ -4372,6 +4374,20 @@ static inline BOOL wined3d_format_is_typeless(const struct wined3d_format *forma
return format->id == format->typeless_id && format->id != WINED3DFMT_UNKNOWN;
}
@ -214,5 +215,5 @@ index 45a7903..64dad01 100644
{
/* Check state->vertex_declaration to allow this to be used before the
--
2.7.4
1.9.1

View File

@ -1,4 +1,4 @@
From d144b219097df75232e1c17ca2ba06b1a12b2e41 Mon Sep 17 00:00:00 2001
From 75844a9945a5b9f6c5580c54346af548e29cbf02 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 20 Jul 2017 13:50:07 +0200
Subject: [PATCH] wined3d: Implement all 8 d3d11 color write masks.
@ -17,10 +17,10 @@ Subject: [PATCH] wined3d: Implement all 8 d3d11 color write masks.
10 files changed, 73 insertions(+), 71 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index 73cfd1a..73b0050 100644
index 82901c2..8779980 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -688,6 +688,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
@@ -2068,6 +2068,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
static const float default_blend_factor[] = {1.0f, 1.0f, 1.0f, 1.0f};
struct d3d_blend_state *blend_state_impl;
const D3D11_BLEND_DESC *desc;
@ -28,7 +28,7 @@ index 73cfd1a..73b0050 100644
TRACE("iface %p, blend_state %p, blend_factor %s, sample_mask 0x%08x.\n",
iface, blend_state, debug_float4(blend_factor), sample_mask);
@@ -702,14 +703,11 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
@@ -2082,14 +2083,11 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
{
wined3d_device_set_blend_state(device->wined3d_device, NULL);
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_ALPHABLENDENABLE, FALSE);
@ -48,7 +48,7 @@ index 73cfd1a..73b0050 100644
wined3d_mutex_unlock();
return;
}
@@ -737,14 +735,13 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
@@ -2117,14 +2115,13 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetBlendState(ID3D11Devi
|| d->DestBlendAlpha == D3D11_BLEND_BLEND_FACTOR || d->DestBlendAlpha == D3D11_BLEND_INV_BLEND_FACTOR))
FIXME("Ignoring blend factor %s.\n", debug_float4(blend_factor));
}
@ -71,7 +71,7 @@ index 73cfd1a..73b0050 100644
}
diff --git a/dlls/d3d11/state.c b/dlls/d3d11/state.c
index a14c9d3..2bec92e 100644
index f880a23..e5bd1de 100644
--- a/dlls/d3d11/state.c
+++ b/dlls/d3d11/state.c
@@ -335,10 +335,6 @@ HRESULT d3d_blend_state_create(struct d3d_device *device, const D3D11_BLEND_DESC
@ -86,10 +86,10 @@ index a14c9d3..2bec92e 100644
/* glEnableIndexedEXT(GL_BLEND, ...) */
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index e85e20d..6075a68 100644
index b1a28b8..3681cb8 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -2730,7 +2730,7 @@ void context_apply_blit_state(struct wined3d_context *context, const struct wine
@@ -2746,7 +2746,7 @@ void context_apply_blit_state(struct wined3d_context *context, const struct wine
const struct wined3d_gl_info *gl_info = context->gl_info;
struct wined3d_texture *rt = context->current_rt.texture;
DWORD rt_mask, *cur_mask;
@ -98,7 +98,7 @@ index e85e20d..6075a68 100644
SIZE rt_size;
TRACE("Setting up context %p for blitting.\n", context);
@@ -2834,10 +2834,8 @@ void context_apply_blit_state(struct wined3d_context *context, const struct wine
@@ -2851,10 +2851,8 @@ void context_apply_blit_state(struct wined3d_context *context, const struct wine
context_invalidate_state(context, STATE_RENDER(WINED3D_RS_SRGBWRITEENABLE));
}
gl_info->gl_ops.gl.p_glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
@ -111,7 +111,7 @@ index e85e20d..6075a68 100644
context->last_was_rhw = TRUE;
context_invalidate_state(context, STATE_VDECL); /* because of last_was_rhw = TRUE */
@@ -4809,7 +4807,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
@@ -4836,7 +4834,7 @@ void draw_primitive(struct wined3d_device *device, const struct wined3d_state *s
if (!(rtv = fb->render_targets[i]) || rtv->format->id == WINED3DFMT_NULL)
continue;
@ -121,7 +121,7 @@ index e85e20d..6075a68 100644
wined3d_rendertarget_view_load_location(rtv, context, rtv->resource->draw_binding);
wined3d_rendertarget_view_invalidate_location(rtv, ~rtv->resource->draw_binding);
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 4ff1f06..0e7b7a0 100644
index 50452b5..0067199 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -392,10 +392,8 @@ void device_clear_render_targets(struct wined3d_device *device, UINT rt_count, c
@ -138,10 +138,10 @@ index 4ff1f06..0e7b7a0 100644
checkGLcall("glClearColor");
clear_mask = clear_mask | GL_COLOR_BUFFER_BIT;
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index f20507b..69ea814 100644
index ab7e033..b5f39e5 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -1556,9 +1556,6 @@ static void state_debug_monitor(struct wined3d_context *context, const struct wi
@@ -1565,9 +1565,6 @@ static void state_debug_monitor(struct wined3d_context *context, const struct wi
static void state_colorwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
DWORD mask0 = state->render_states[WINED3D_RS_COLORWRITEENABLE];
@ -151,7 +151,7 @@ index f20507b..69ea814 100644
const struct wined3d_gl_info *gl_info = context->gl_info;
TRACE("Color mask: r(%d) g(%d) b(%d) a(%d)\n",
@@ -1572,13 +1569,7 @@ static void state_colorwrite(struct wined3d_context *context, const struct wined
@@ -1581,13 +1578,7 @@ static void state_colorwrite(struct wined3d_context *context, const struct wined
mask0 & WINED3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE);
checkGLcall("glColorMask(...)");
@ -166,7 +166,7 @@ index f20507b..69ea814 100644
}
static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DWORD mask)
@@ -1591,24 +1582,20 @@ static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DW
@@ -1600,24 +1591,20 @@ static void set_color_mask(const struct wined3d_gl_info *gl_info, UINT index, DW
checkGLcall("glColorMaski");
}
@ -201,7 +201,7 @@ index f20507b..69ea814 100644
}
static void state_localviewer(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
@@ -5128,18 +5115,26 @@ const struct StateEntryTemplate misc_state_template[] =
@@ -4689,18 +4676,26 @@ const struct StateEntryTemplate misc_state_template[] =
{ STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), { STATE_RENDER(WINED3D_RS_MULTISAMPLEANTIALIAS), state_msaa_w }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_MULTISAMPLEMASK), { STATE_RENDER(WINED3D_RS_MULTISAMPLEMASK), state_multisampmask }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_DEBUGMONITORTOKEN), { STATE_RENDER(WINED3D_RS_DEBUGMONITORTOKEN), state_debug_monitor }, WINED3D_GL_EXT_NONE },
@ -236,7 +236,7 @@ index f20507b..69ea814 100644
{ STATE_RENDER(WINED3D_RS_BLENDFACTOR), { STATE_RENDER(WINED3D_RS_BLENDFACTOR), state_blendfactor_w }, WINED3D_GL_EXT_NONE },
{ STATE_RENDER(WINED3D_RS_DEPTHBIAS), { STATE_RENDER(WINED3D_RS_DEPTHBIAS), state_depthbias }, WINED3D_GL_EXT_NONE },
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index b9efcec..c9b3527 100644
index 2f5f24a..e5025ce 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -45,6 +45,10 @@ static const DWORD pixel_states_render[] =
@ -250,7 +250,7 @@ index b9efcec..c9b3527 100644
WINED3D_RS_DEPTHBIAS,
WINED3D_RS_DESTBLEND,
WINED3D_RS_DESTBLENDALPHA,
@@ -1212,7 +1216,6 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d
@@ -1226,7 +1230,6 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d
tmpfloat.f = gl_info->limits.pointsize_max;
state->render_states[WINED3D_RS_POINTSIZE_MAX] = tmpfloat.d;
state->render_states[WINED3D_RS_INDEXEDVERTEXBLENDENABLE] = FALSE;
@ -258,7 +258,7 @@ index b9efcec..c9b3527 100644
tmpfloat.f = 0.0f;
state->render_states[WINED3D_RS_TWEENFACTOR] = tmpfloat.d;
state->render_states[WINED3D_RS_BLENDOP] = WINED3D_BLEND_OP_ADD;
@@ -1238,9 +1241,6 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d
@@ -1252,9 +1255,6 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d
state->render_states[WINED3D_RS_BACK_STENCILZFAIL] = WINED3D_STENCIL_OP_KEEP;
state->render_states[WINED3D_RS_BACK_STENCILPASS] = WINED3D_STENCIL_OP_KEEP;
state->render_states[WINED3D_RS_BACK_STENCILFUNC] = WINED3D_CMP_ALWAYS;
@ -268,7 +268,7 @@ index b9efcec..c9b3527 100644
state->render_states[WINED3D_RS_BLENDFACTOR] = 0xffffffff;
state->render_states[WINED3D_RS_SRGBWRITEENABLE] = 0;
state->render_states[WINED3D_RS_DEPTHBIAS] = 0;
@@ -1259,6 +1259,8 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d
@@ -1273,6 +1273,8 @@ static void state_init_default(struct wined3d_state *state, const struct wined3d
state->render_states[WINED3D_RS_SRCBLENDALPHA] = WINED3D_BLEND_ONE;
state->render_states[WINED3D_RS_DESTBLENDALPHA] = WINED3D_BLEND_ZERO;
state->render_states[WINED3D_RS_BLENDOPALPHA] = WINED3D_BLEND_OP_ADD;
@ -278,7 +278,7 @@ index b9efcec..c9b3527 100644
/* Texture Stage States - Put directly into state block, we will call function below */
for (i = 0; i < MAX_TEXTURES; ++i)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index ad4ed1c..90f17cc 100644
index e649fa3..baad32e 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -160,6 +160,7 @@ static void texture2d_blt_fbo(const struct wined3d_device *device, struct wined3
@ -303,10 +303,10 @@ index ad4ed1c..90f17cc 100644
gl_info->gl_ops.gl.p_glDisable(GL_SCISSOR_TEST);
context_invalidate_state(context, STATE_RENDER(WINED3D_RS_SCISSORTESTENABLE));
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index d1d5adc..c36bb1e 100644
index d475b37..ab9fc45 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -4396,7 +4396,6 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
@@ -4398,7 +4398,6 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
D3DSTATE_TO_STR(WINED3D_RS_DEBUGMONITORTOKEN);
D3DSTATE_TO_STR(WINED3D_RS_POINTSIZE_MAX);
D3DSTATE_TO_STR(WINED3D_RS_INDEXEDVERTEXBLENDENABLE);
@ -314,7 +314,7 @@ index d1d5adc..c36bb1e 100644
D3DSTATE_TO_STR(WINED3D_RS_TWEENFACTOR);
D3DSTATE_TO_STR(WINED3D_RS_BLENDOP);
D3DSTATE_TO_STR(WINED3D_RS_POSITIONDEGREE);
@@ -4416,9 +4415,14 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
@@ -4418,9 +4417,14 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
D3DSTATE_TO_STR(WINED3D_RS_BACK_STENCILZFAIL);
D3DSTATE_TO_STR(WINED3D_RS_BACK_STENCILPASS);
D3DSTATE_TO_STR(WINED3D_RS_BACK_STENCILFUNC);
@ -330,22 +330,22 @@ index d1d5adc..c36bb1e 100644
D3DSTATE_TO_STR(WINED3D_RS_SRGBWRITEENABLE);
D3DSTATE_TO_STR(WINED3D_RS_DEPTHBIAS);
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 4a27b08..4bfb2cd 100644
index 4c22a5c..7c813bf 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -276,6 +276,7 @@ static inline enum complex_fixup get_complex_fixup(struct color_fixup_desc fixup
#define MAX_UNORDERED_ACCESS_VIEWS 8
#define MAX_TGSM_REGISTERS 8192
#define MAX_VERTEX_BLENDS 4
#define MAX_MULTISAMPLE_TYPES 8
+#define MAX_RENDER_TARGETS 8
struct min_lookup
{
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 48701a9..a0942ae 100644
index 6772524..a3deb60 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -388,8 +388,20 @@ enum wined3d_render_state
@@ -390,8 +390,20 @@ enum wined3d_render_state
WINED3D_RS_BLENDOPALPHA = 209,
WINED3D_RS_DEPTHCLIP = 210,
WINED3D_RS_DEPTHBIASCLAMP = 211,
@ -368,5 +368,5 @@ index 48701a9..a0942ae 100644
enum wined3d_blend
{
--
2.7.4
1.9.1