Rebase against 957a1f0216995c14c3a3fe737358578a506af707

This commit is contained in:
Alistair Leslie-Hughes 2019-02-08 10:49:30 +11:00
parent 533cbe994f
commit f85accadd5
5 changed files with 12 additions and 201 deletions

View File

@ -1,124 +0,0 @@
From e82c474f4befd2ba092dc41e0d7e188cd6303b7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Tue, 6 Jun 2017 21:08:51 +0200
Subject: [PATCH] ntoskrnl.exe: Implement NtBuildNumber.
---
dlls/ntoskrnl.exe/ntoskrnl.c | 11 +++++++++--
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 +-
dlls/ntoskrnl.exe/tests/driver.c | 29 +++++++++++++++++++++++++++++
3 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index c3276c95..0e9fa425 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -60,6 +60,7 @@ WINE_DECLARE_DEBUG_CHANNEL(plugplay);
BOOLEAN KdDebuggerEnabled = FALSE;
ULONG InitSafeBootMode = 0;
+USHORT NtBuildNumber = 0;
extern LONG CALLBACK vectored_handler( EXCEPTION_POINTERS *ptrs );
@@ -2913,6 +2914,13 @@ NTSTATUS WINAPI IoAcquireRemoveLockEx(PIO_REMOVE_LOCK lock, PVOID tag,
return STATUS_NOT_IMPLEMENTED;
}
+static void ntoskrnl_init(void)
+{
+ LARGE_INTEGER count;
+
+ KeQueryTickCount( &count ); /* initialize the global KeTickCount */
+ NtBuildNumber = NtCurrentTeb()->Peb->OSBuildNumber;
+}
/*****************************************************
* DllMain
@@ -2920,7 +2928,6 @@ NTSTATUS WINAPI IoAcquireRemoveLockEx(PIO_REMOVE_LOCK lock, PVOID tag,
BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
{
static void *handler;
- LARGE_INTEGER count;
switch(reason)
{
@@ -2929,7 +2936,7 @@ BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved )
#if defined(__i386__) || defined(__x86_64__)
handler = RtlAddVectoredExceptionHandler( TRUE, vectored_handler );
#endif
- KeQueryTickCount( &count ); /* initialize the global KeTickCount */
+ ntoskrnl_init();
break;
case DLL_PROCESS_DETACH:
if (reserved) break;
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 19cde8cf..271b7f08 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -751,7 +751,7 @@
@ stdcall NtAllocateLocallyUniqueId(ptr)
@ stdcall NtAllocateUuids(ptr ptr ptr ptr)
@ stdcall NtAllocateVirtualMemory(long ptr long ptr long long)
-@ stub NtBuildNumber
+@ extern NtBuildNumber
@ stdcall NtClose(long)
@ stdcall NtConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr)
@ stdcall NtCreateEvent(ptr long ptr long long)
diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index bd1070c1..2e622c8d 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -174,6 +174,22 @@ static void winetest_end_todo(void)
#define todo_wine_if(is_todo) todo_if((is_todo) && running_under_wine)
#define win_skip(...) win_skip_(__FILE__, __LINE__, __VA_ARGS__)
+static void *get_proc_address(const char *name)
+{
+ UNICODE_STRING name_u;
+ ANSI_STRING name_a;
+ NTSTATUS status;
+ void *ret;
+
+ RtlInitAnsiString(&name_a, name);
+ status = RtlAnsiStringToUnicodeString(&name_u, &name_a, TRUE);
+ if (status) return NULL;
+
+ ret = MmGetSystemRoutineAddress(&name_u);
+ RtlFreeUnicodeString(&name_u);
+ return ret;
+}
+
static void test_currentprocess(void)
{
PEPROCESS current;
@@ -604,6 +620,18 @@ static void test_lookaside_list(void)
ExDeleteNPagedLookasideList(&list);
}
+static void test_version(void)
+{
+ USHORT *pNtBuildNumber;
+ ULONG build;
+
+ pNtBuildNumber = get_proc_address("NtBuildNumber");
+ ok(!!pNtBuildNumber, "Could not get pointer to NtBuildNumber\n");
+
+ PsGetVersion(NULL, NULL, &build, NULL);
+ ok(*pNtBuildNumber == build, "Expected build number %u, got %u\n", build, *pNtBuildNumber);
+}
+
static NTSTATUS main_test(IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info)
{
ULONG length = stack->Parameters.DeviceIoControl.OutputBufferLength;
@@ -633,6 +661,7 @@ static NTSTATUS main_test(IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info)
test_init_funcs();
test_load_driver();
test_sync();
+ test_version();
test_stack_callout();
test_lookaside_list();
--
2.20.1

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "c3ac646a8ded3ef3ebc743a7fdda01b0691a427a"
echo "957a1f0216995c14c3a3fe737358578a506af707"
}
# Show version information
@ -359,7 +359,6 @@ patch_enable_all ()
enable_wined3d_WINED3D_RS_COLORWRITEENABLE="$1"
enable_wined3d_WINED3D_TEXF_ANISOTROPIC="$1"
enable_wined3d_mesa_texture_download="$1"
enable_wined3d_multisample_quality="$1"
enable_wined3d_stream_frequency="$1"
enable_wined3d_wined3d_guess_gl_vendor="$1"
enable_winedbg_Process_Arguments="$1"
@ -1241,9 +1240,6 @@ patch_enable ()
wined3d-mesa_texture_download)
enable_wined3d_mesa_texture_download="$2"
;;
wined3d-multisample-quality)
enable_wined3d_multisample_quality="$2"
;;
wined3d-stream-frequency)
enable_wined3d_stream_frequency="$2"
;;
@ -5248,16 +5244,14 @@ fi
# Patchset ntoskrnl-Stubs
# |
# | Modified files:
# | * dlls/ntoskrnl.exe/ntoskrnl.c, dlls/ntoskrnl.exe/ntoskrnl.exe.spec, dlls/ntoskrnl.exe/tests/driver.c
# | * dlls/ntoskrnl.exe/ntoskrnl.c, dlls/ntoskrnl.exe/ntoskrnl.exe.spec
# |
if test "$enable_ntoskrnl_Stubs" -eq 1; then
patch_apply ntoskrnl-Stubs/0009-ntoskrnl.exe-Implement-MmMapLockedPages-and-MmUnmapL.patch
patch_apply ntoskrnl-Stubs/0011-ntoskrnl.exe-Add-IoGetDeviceAttachmentBaseRef-stub.patch
patch_apply ntoskrnl-Stubs/0013-ntoskrnl.exe-Implement-NtBuildNumber.patch
(
printf '%s\n' '+ { "Christian Costa", "ntoskrnl.exe: Implement MmMapLockedPages and MmUnmapLockedPages.", 1 },';
printf '%s\n' '+ { "Jarkko Korpi", "ntoskrnl.exe: Add IoGetDeviceAttachmentBaseRef stub.", 1 },';
printf '%s\n' '+ { "Michael Müller", "ntoskrnl.exe: Implement NtBuildNumber.", 1 },';
) >> "$patchlist"
fi
@ -7278,21 +7272,6 @@ if test "$enable_wined3d_mesa_texture_download" -eq 1; then
) >> "$patchlist"
fi
# Patchset wined3d-multisample-quality
# |
# | This patchset fixes the following Wine bugs:
# | * [#39080] wined3d: Ignore multisample quality for MULTISAMPLE_NONE
# |
# | Modified files:
# | * dlls/d3d9/tests/visual.c, dlls/wined3d/context.c
# |
if test "$enable_wined3d_multisample_quality" -eq 1; then
patch_apply wined3d-multisample-quality/0001-wined3d-Ignore-multisample-quality-for-MULTISAMPLE_N.patch
(
printf '%s\n' '+ { "Paul Gofman", "wined3d: Ignore multisample quality for MULTISAMPLE_NONE in context_find_fbo_entry().", 1 },';
) >> "$patchlist"
fi
# Patchset wined3d-stream-frequency
# |
# | This patchset fixes the following Wine bugs:

View File

@ -1,43 +0,0 @@
From 79a35fd2239cadfa9c8c588c295eef4ca9aba48a Mon Sep 17 00:00:00 2001
From: Paul Gofman <gofmanp@gmail.com>
Date: Tue, 22 Jan 2019 00:22:28 +0300
Subject: [PATCH] wined3d: Ignore multisample quality for MULTISAMPLE_NONE in
context_find_fbo_entry().
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=39080
Signed-off-by: Paul Gofman <gofmanp@gmail.com>
---
dlls/d3d9/tests/visual.c | 2 +-
dlls/wined3d/context.c | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c
index 072c6a8364..fb1c7ef21d 100644
--- a/dlls/d3d9/tests/visual.c
+++ b/dlls/d3d9/tests/visual.c
@@ -21273,7 +21273,7 @@ static void test_depthbias(void)
}
hr = IDirect3DDevice9_CreateDepthStencilSurface(device, 640, 480, formats[i],
- D3DMULTISAMPLE_NONE, 0, FALSE, &ds, NULL);
+ D3DMULTISAMPLE_NONE, 1, FALSE, &ds, NULL);
ok(SUCCEEDED(hr), "Failed to create depth stencil surface, hr %#x.\n", hr);
hr = IDirect3DDevice9_SetDepthStencilSurface(device, ds);
ok(SUCCEEDED(hr), "Failed to set depth stencil surface, hr %#x.\n", hr);
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 37203738fe..c7eb7849fc 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -599,7 +599,8 @@ static struct fbo_entry *context_find_fbo_entry(struct wined3d_context *context,
depth_stencil = &ds_null;
}
else if (ds_texture->resource.multisample_type != rt_texture->resource.multisample_type
- || ds_texture->resource.multisample_quality != rt_texture->resource.multisample_quality)
+ || (ds_texture->resource.multisample_type
+ && ds_texture->resource.multisample_quality != rt_texture->resource.multisample_quality))
{
WARN("Color multisample type %u and quality %u, depth stencil has %u and %u, disabling ds buffer.\n",
rt_texture->resource.multisample_type, rt_texture->resource.multisample_quality,
--
2.20.1

View File

@ -1 +0,0 @@
Fixes: [39080] wined3d: Ignore multisample quality for MULTISAMPLE_NONE

View File

@ -1,16 +1,16 @@
From 09df46b62a34ccfdc214bc3b5e20731d7170f93f Mon Sep 17 00:00:00 2001
From 6ac70538d8f1989386bfe95bdbdc61af60b482c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 8 Jun 2017 23:50:03 +0200
Subject: [PATCH] programs/winedevice: Load some common drivers and fix ldr
order.
---
dlls/ntoskrnl.exe/tests/driver.c | 51 ++++++++++++++++++++++++++++++++
programs/winedevice/device.c | 26 ++++++++++++++++
dlls/ntoskrnl.exe/tests/driver.c | 51 ++++++++++++++++++++++++++++++++++++++++
programs/winedevice/device.c | 26 ++++++++++++++++++++
2 files changed, 77 insertions(+)
diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index 2e622c8d..d37e0b93 100644
index 3984240..c467ac5 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -38,6 +38,8 @@ static const WCHAR driver_device[] = {'\\','D','e','v','i','c','e',
@ -22,7 +22,7 @@ index 2e622c8d..d37e0b93 100644
static HANDLE okfile;
static LONG successes;
static LONG failures;
@@ -632,6 +634,52 @@ static void test_version(void)
@@ -636,6 +638,52 @@ static void test_version(void)
ok(*pNtBuildNumber == build, "Expected build number %u, got %u\n", build, *pNtBuildNumber);
}
@ -72,10 +72,10 @@ index 2e622c8d..d37e0b93 100644
+ ok(dxgmms1, "Failed to find dxgmms1.sys\n");
+}
+
static NTSTATUS main_test(IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info)
static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info)
{
ULONG length = stack->Parameters.DeviceIoControl.OutputBufferLength;
@@ -664,6 +712,7 @@ static NTSTATUS main_test(IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info)
@@ -669,6 +717,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st
test_version();
test_stack_callout();
test_lookaside_list();
@ -83,7 +83,7 @@ index 2e622c8d..d37e0b93 100644
/* print process report */
if (test_input->winetest_debug)
@@ -772,6 +821,8 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
@@ -781,6 +830,8 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
DbgPrint("loading driver\n");
@ -93,7 +93,7 @@ index 2e622c8d..d37e0b93 100644
driver->DriverUnload = driver_Unload;
diff --git a/programs/winedevice/device.c b/programs/winedevice/device.c
index 201a0411..33b332da 100644
index 201a041..33b332d 100644
--- a/programs/winedevice/device.c
+++ b/programs/winedevice/device.c
@@ -124,7 +124,33 @@ static DWORD WINAPI service_handler( DWORD ctrl, DWORD event_type, LPVOID event_
@ -131,5 +131,5 @@ index 201a0411..33b332da 100644
if (!(stop_event = CreateEventW( NULL, TRUE, FALSE, NULL )))
return;
--
2.20.1
1.9.1