mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against 48aeef69fc99ff1460da934f4933f0499ff33b13
This commit is contained in:
parent
7715ae4be5
commit
41b4cfa2c4
@ -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
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: Crash in Dead Rising 4
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: [34910] Create Microsoft\Windows\Themes directory during Wineprefix creation
|
@ -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
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: Return ERROR_FILE_NOT_FOUND for Win 9X when a file was not found in GetFileVersionInfoSizeEx
|
@ -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
|
||||
|
@ -1,2 +0,0 @@
|
||||
Fixes: [44964] Implement oMask.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user