You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-12-15 08:03:15 -08:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
54f4c57fd6 | ||
|
|
0c0b6c45da | ||
|
|
da6c42770b | ||
|
|
b7f859e90d | ||
|
|
463f0b7936 | ||
|
|
959925fc2f | ||
|
|
3e92d6c89c | ||
|
|
3bb1cddffc | ||
|
|
4741f1abc6 |
@@ -1,117 +0,0 @@
|
||||
From 51373e0350ff1b507d7b47d6e5acd84b8af9d328 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@wine-staging.com>
|
||||
Date: Sat, 6 Feb 2021 12:46:30 -0700
|
||||
Subject: [PATCH] kernelbase: Add support for moving reparse points with
|
||||
MoveFile*.
|
||||
|
||||
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
---
|
||||
dlls/kernelbase/file.c | 2 +-
|
||||
dlls/ntdll/unix/file.c | 24 ++++++++++++++++++++++--
|
||||
server/fd.c | 6 ++++--
|
||||
3 files changed, 27 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c
|
||||
index 36045116e43..f1b1326353f 100644
|
||||
--- a/dlls/kernelbase/file.c
|
||||
+++ b/dlls/kernelbase/file.c
|
||||
@@ -2597,7 +2597,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH MoveFileWithProgressW( const WCHAR *source, const
|
||||
InitializeObjectAttributes( &attr, &nt_name, OBJ_CASE_INSENSITIVE, 0, NULL );
|
||||
status = NtOpenFile( &source_handle, DELETE | SYNCHRONIZE, &attr, &io,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
|
||||
- FILE_SYNCHRONOUS_IO_NONALERT );
|
||||
+ FILE_SYNCHRONOUS_IO_NONALERT | FILE_OPEN_REPARSE_POINT );
|
||||
RtlFreeUnicodeString( &nt_name );
|
||||
if (!set_ntstatus( status )) goto error;
|
||||
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index 3c341a6d702..9076da9f763 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -5572,6 +5572,8 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
unsigned int flags;
|
||||
UNICODE_STRING name_str, nt_name;
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
+ REPARSE_DATA_BUFFER *buffer = NULL;
|
||||
+ ULONG buffer_len = 0;
|
||||
char *unix_name;
|
||||
|
||||
if (class == FileRenameInformation)
|
||||
@@ -5586,6 +5588,20 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
name_str.Length = info->FileNameLength;
|
||||
name_str.MaximumLength = info->FileNameLength + sizeof(WCHAR);
|
||||
InitializeObjectAttributes( &attr, &name_str, OBJ_CASE_INSENSITIVE, info->RootDirectory, NULL );
|
||||
+
|
||||
+ /* obtain all the data from the reparse point (if applicable) */
|
||||
+ status = get_reparse_point( handle, NULL, &buffer_len );
|
||||
+ if (status == STATUS_BUFFER_TOO_SMALL)
|
||||
+ {
|
||||
+ buffer = malloc( buffer_len );
|
||||
+ status = get_reparse_point( handle, buffer, &buffer_len );
|
||||
+ if (status != STATUS_SUCCESS)
|
||||
+ {
|
||||
+ free( buffer );
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
status = get_nt_and_unix_names( &attr, &nt_name, &unix_name, FILE_OPEN_IF );
|
||||
if (status == STATUS_SUCCESS || status == STATUS_NO_SUCH_FILE)
|
||||
{
|
||||
@@ -5602,8 +5618,13 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
|
||||
+ /* rebuild reparse point in new location (if applicable) */
|
||||
+ if (buffer && status == STATUS_SUCCESS)
|
||||
+ status = create_reparse_point( handle, buffer );
|
||||
+
|
||||
+ free( unix_name );
|
||||
}
|
||||
- free( unix_name );
|
||||
+ free( buffer );
|
||||
free( nt_name.Buffer );
|
||||
}
|
||||
else status = STATUS_INVALID_PARAMETER_3;
|
||||
@@ -5646,7 +5667,6 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
status = wine_server_call( req );
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
-
|
||||
}
|
||||
free( unix_name );
|
||||
free( nt_name.Buffer );
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index 466259ae567..7f88fcd6e33 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -2771,7 +2771,7 @@ static void set_fd_name( struct fd *fd, struct fd *root, const char *nameptr, da
|
||||
goto failed;
|
||||
}
|
||||
|
||||
- if (!stat( name, &st ))
|
||||
+ if (!lstat( name, &st ))
|
||||
{
|
||||
if (!fstat( fd->unix_fd, &st2 ) && st.st_ino == st2.st_ino && st.st_dev == st2.st_dev)
|
||||
{
|
||||
@@ -2787,7 +2787,7 @@ static void set_fd_name( struct fd *fd, struct fd *root, const char *nameptr, da
|
||||
}
|
||||
|
||||
/* can't replace directories or special files */
|
||||
- if (!S_ISREG( st.st_mode ))
|
||||
+ if (!S_ISREG( st.st_mode ) && !S_ISLNK( st.st_mode ))
|
||||
{
|
||||
set_error( STATUS_ACCESS_DENIED );
|
||||
goto failed;
|
||||
@@ -2853,6 +2853,8 @@ static void set_fd_name( struct fd *fd, struct fd *root, const char *nameptr, da
|
||||
fd->nt_name = dup_nt_name( root, nt_name, &fd->nt_namelen );
|
||||
free( fd->unix_name );
|
||||
fd->closed->unix_name = fd->unix_name = realpath( name, NULL );
|
||||
+ if (!fd->unix_name)
|
||||
+ fd->closed->unix_name = fd->unix_name = dup_fd_name( root, name ); /* dangling symlink */
|
||||
free( name );
|
||||
if (!fd->unix_name)
|
||||
set_error( STATUS_NO_MEMORY );
|
||||
--
|
||||
2.47.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,48 +0,0 @@
|
||||
From 4039b5b7bd3e8df9052006c5755a63aab93d52ef Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Wed, 29 May 2019 15:11:42 -0600
|
||||
Subject: kernel32: Add reparse support to FindNextFile.
|
||||
|
||||
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
---
|
||||
dlls/kernelbase/file.c | 24 ++++++++++++++++++++++++
|
||||
1 file changed, 24 insertions(+)
|
||||
|
||||
diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c
|
||||
index bf6e9e17c9e..26d3dde5ad6 100644
|
||||
--- a/dlls/kernelbase/file.c
|
||||
+++ b/dlls/kernelbase/file.c
|
||||
@@ -1508,6 +1508,30 @@ BOOL WINAPI DECLSPEC_HOTPATCH FindNextFileW( HANDLE handle, WIN32_FIND_DATAW *da
|
||||
memcpy( data->cFileName, dir_info->FileName, dir_info->FileNameLength );
|
||||
data->cFileName[dir_info->FileNameLength/sizeof(WCHAR)] = 0;
|
||||
|
||||
+ /* get reparse tag */
|
||||
+ if (dir_info->FileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
|
||||
+ {
|
||||
+ INT path_len = info->path.Length + dir_info->FileNameLength + sizeof(WCHAR);
|
||||
+ WCHAR *path = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, path_len );
|
||||
+ FILE_ATTRIBUTE_TAG_INFORMATION taginfo;
|
||||
+ IO_STATUS_BLOCK iosb;
|
||||
+ NTSTATUS status;
|
||||
+ HANDLE hlink;
|
||||
+
|
||||
+ if (!path) break;
|
||||
+
|
||||
+ lstrcpynW( path, info->path.Buffer, info->path.Length/sizeof(WCHAR) + 1 );
|
||||
+ lstrcatW( path, data->cFileName );
|
||||
+
|
||||
+ hlink = CreateFileW( path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,
|
||||
+ FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0 );
|
||||
+ HeapFree( GetProcessHeap(), 0, path );
|
||||
+ status = NtQueryInformationFile( hlink, &iosb, &taginfo, sizeof(taginfo),
|
||||
+ FileAttributeTagInformation );
|
||||
+ if (status == STATUS_SUCCESS) data->dwReserved0 = taginfo.ReparseTag;
|
||||
+ CloseHandle( hlink );
|
||||
+ }
|
||||
+
|
||||
if (info->level != FindExInfoBasic)
|
||||
{
|
||||
memcpy( data->cAlternateFileName, dir_info->ShortName, dir_info->ShortNameLength );
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
From 0eda0c4092b0673e4b4e646388c53e2a8ecc2379 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Wed, 18 May 2016 18:08:24 +0800
|
||||
Subject: user32: Add a workaround for Windows 3.1 apps which call
|
||||
LoadImage(LR_LOADFROMFILE) with a resource id. (v2)
|
||||
|
||||
Fixes #24963.
|
||||
---
|
||||
dlls/user32/cursoricon.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c
|
||||
index 4f93195..95cc410 100644
|
||||
--- a/dlls/user32/cursoricon.c
|
||||
+++ b/dlls/user32/cursoricon.c
|
||||
@@ -1404,7 +1404,12 @@ static HICON CURSORICON_Load(HINSTANCE hInstance, LPCWSTR name,
|
||||
hInstance, debugstr_w(name), width, height, depth, fCursor, loadflags);
|
||||
|
||||
if ( loadflags & LR_LOADFROMFILE ) /* Load from file */
|
||||
- return CURSORICON_LoadFromFile( name, width, height, depth, fCursor, loadflags );
|
||||
+ {
|
||||
+ if (IS_INTRESOURCE(name) && GetProcessVersion(0) < 0x40000)
|
||||
+ WARN("Windows 3.1 app set LR_LOADFROMFILE without a name, fallback to loading from resource\n");
|
||||
+ else
|
||||
+ return CURSORICON_LoadFromFile( name, width, height, depth, fCursor, loadflags );
|
||||
+ }
|
||||
|
||||
if (!hInstance) hInstance = user32_module; /* Load OEM cursor/icon */
|
||||
|
||||
--
|
||||
2.8.0
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Fixes: [24963] Workaround for Windows 3.1 apps which call LoadImage(LR_LOADFROMFILE) with a resource id
|
||||
@@ -1,4 +1,4 @@
|
||||
From 6c90ff9b852f02712c34de1ca23125bdb2c9284b Mon Sep 17 00:00:00 2001
|
||||
From 702653b1539507e6033d123a57f16f7206d78bb0 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 6 Mar 2024 20:21:36 +1100
|
||||
Subject: [PATCH] user32/msgbox: Support WM_COPY Message
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
3 files changed, 257 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/user32/msgbox.c b/dlls/user32/msgbox.c
|
||||
index 12eea8e92d7..9534656378d 100644
|
||||
index 009f3858c60..a21f210a2fd 100644
|
||||
--- a/dlls/user32/msgbox.c
|
||||
+++ b/dlls/user32/msgbox.c
|
||||
@@ -41,6 +41,11 @@ struct ThreadWindows
|
||||
@@ -130,10 +130,10 @@ index 12eea8e92d7..9534656378d 100644
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
diff --git a/dlls/user32/tests/dialog.c b/dlls/user32/tests/dialog.c
|
||||
index 49b8f1968a0..a3004cf9443 100644
|
||||
index 20e21bea0bc..c3ba83c4893 100644
|
||||
--- a/dlls/user32/tests/dialog.c
|
||||
+++ b/dlls/user32/tests/dialog.c
|
||||
@@ -2068,6 +2068,171 @@ static void test_MessageBoxFontTest(void)
|
||||
@@ -2081,6 +2081,171 @@ static void test_MessageBoxFontTest(void)
|
||||
DestroyWindow(hDlg);
|
||||
}
|
||||
|
||||
@@ -305,9 +305,9 @@ index 49b8f1968a0..a3004cf9443 100644
|
||||
static void test_SaveRestoreFocus(void)
|
||||
{
|
||||
HWND hDlg;
|
||||
@@ -2440,6 +2605,7 @@ START_TEST(dialog)
|
||||
|
||||
if (!RegisterWindowClasses()) assert(0);
|
||||
@@ -2536,6 +2701,7 @@ START_TEST(dialog)
|
||||
return;
|
||||
}
|
||||
|
||||
+ test_MessageBox_WM_COPY_Test();
|
||||
test_dialog_custom_data();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 2f2480806c4c431aeb75308e570a317da43f3508 Mon Sep 17 00:00:00 2001
|
||||
From 26240eeb2925918d8c75a251fde5fd5ed9f9bfcf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Gabriel=20Iv=C4=83ncescu?= <gabrielopcode@gmail.com>
|
||||
Date: Mon, 22 Jul 2019 15:29:25 +0300
|
||||
Subject: [PATCH] user32/focus: Prevent a recursive loop with the activation
|
||||
@@ -20,10 +20,10 @@ Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
|
||||
2 files changed, 30 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
|
||||
index a4834b740d8..123a0ff9a94 100644
|
||||
index f431ab98a9f..9e07052d612 100644
|
||||
--- a/dlls/win32u/input.c
|
||||
+++ b/dlls/win32u/input.c
|
||||
@@ -1966,7 +1966,7 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
@@ -1992,7 +1992,7 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
{
|
||||
HWND previous = get_active_window();
|
||||
BOOL ret;
|
||||
@@ -32,7 +32,7 @@ index a4834b740d8..123a0ff9a94 100644
|
||||
CBTACTIVATESTRUCT cbt;
|
||||
|
||||
if (previous == hwnd)
|
||||
@@ -1975,16 +1975,24 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
@@ -2001,16 +2001,24 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ index a4834b740d8..123a0ff9a94 100644
|
||||
{
|
||||
- send_message( previous, WM_NCACTIVATE, FALSE, (LPARAM)hwnd );
|
||||
- send_message( previous, WM_ACTIVATE,
|
||||
- MAKEWPARAM( WA_INACTIVE, is_iconic(previous) ), (LPARAM)hwnd );
|
||||
- MAKEWPARAM( WA_INACTIVE, is_iconic(previous) ? 0x20 : 0 ), (LPARAM)hwnd );
|
||||
+ ret = FALSE;
|
||||
+
|
||||
+ /* call CBT hook chain */
|
||||
@@ -57,16 +57,16 @@ index a4834b740d8..123a0ff9a94 100644
|
||||
+ if (call_hooks( WH_CBT, HCBT_ACTIVATE, (WPARAM)hwnd, (LPARAM)&cbt, sizeof(cbt) ))
|
||||
+ goto clear_flags;
|
||||
+
|
||||
+ if (is_window(previous))
|
||||
+ if (is_window( previous ))
|
||||
+ {
|
||||
+ send_message( previous, WM_NCACTIVATE, FALSE, (LPARAM)hwnd );
|
||||
+ send_message( previous, WM_ACTIVATE,
|
||||
+ MAKEWPARAM( WA_INACTIVE, is_iconic(previous) ), (LPARAM)hwnd );
|
||||
+ MAKEWPARAM( WA_INACTIVE, is_iconic(previous) ? 0x20 : 0 ), (LPARAM)hwnd );
|
||||
+ }
|
||||
}
|
||||
|
||||
SERVER_START_REQ( set_active_window )
|
||||
@@ -2006,7 +2014,11 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
@@ -2032,7 +2040,11 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
if (send_message( hwnd, WM_QUERYNEWPALETTE, 0, 0 ))
|
||||
send_message_timeout( HWND_BROADCAST, WM_PALETTEISCHANGING, (WPARAM)hwnd, 0,
|
||||
SMTO_ABORTIFHUNG, 2000, FALSE );
|
||||
@@ -79,7 +79,7 @@ index a4834b740d8..123a0ff9a94 100644
|
||||
}
|
||||
|
||||
old_thread = previous ? get_window_thread( previous, NULL ) : 0;
|
||||
@@ -2039,7 +2051,7 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
@@ -2065,7 +2077,7 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ index a4834b740d8..123a0ff9a94 100644
|
||||
{
|
||||
send_message( hwnd, WM_NCACTIVATE, hwnd == NtUserGetForegroundWindow(), (LPARAM)previous );
|
||||
send_message( hwnd, WM_ACTIVATE,
|
||||
@@ -2064,13 +2076,17 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
@@ -2090,13 +2102,17 @@ BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus, DWORD new
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,10 +108,10 @@ index a4834b740d8..123a0ff9a94 100644
|
||||
|
||||
/**********************************************************************
|
||||
diff --git a/dlls/win32u/ntuser_private.h b/dlls/win32u/ntuser_private.h
|
||||
index 2f3bbdf91c0..74f5b07bd46 100644
|
||||
index c38b6d0e029..bec513cfadb 100644
|
||||
--- a/dlls/win32u/ntuser_private.h
|
||||
+++ b/dlls/win32u/ntuser_private.h
|
||||
@@ -92,6 +92,7 @@ typedef struct tagWND
|
||||
@@ -86,6 +86,7 @@ typedef struct tagWND
|
||||
#define WIN_NEEDS_SHOW_OWNEDPOPUP 0x0020 /* WM_SHOWWINDOW:SC_SHOW must be sent in the next ShowOwnedPopup call */
|
||||
#define WIN_CHILDREN_MOVED 0x0040 /* children may have moved, ignore stored positions */
|
||||
#define WIN_HAS_IME_WIN 0x0080 /* the window has been registered with imm32 */
|
||||
@@ -120,5 +120,5 @@ index 2f3bbdf91c0..74f5b07bd46 100644
|
||||
#define WND_OTHER_PROCESS ((WND *)1) /* returned by get_win_ptr on unknown window handles */
|
||||
#define WND_DESKTOP ((WND *)2) /* returned by get_win_ptr on the desktop window */
|
||||
--
|
||||
2.47.2
|
||||
2.51.0
|
||||
|
||||
|
||||
@@ -1,51 +1,24 @@
|
||||
From 4274d901461697a7fb05b0d1e0b06216061166f1 Mon Sep 17 00:00:00 2001
|
||||
From 3f2c89666f2eee64db4b634c0bfc420dfbbacc57 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Shefte <shefben@gmail.com>
|
||||
Date: Wed, 1 Mar 2023 07:37:52 +1100
|
||||
Subject: [PATCH] vcomp: Implement _vcomp_for_dynamic_init_i8
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52012
|
||||
---
|
||||
dlls/vcomp/main.c | 135 ++++++++++++++++++++++++++++++++++++
|
||||
dlls/vcomp/vcomp.spec | 6 +-
|
||||
dlls/vcomp100/vcomp100.spec | 6 +-
|
||||
dlls/vcomp110/vcomp110.spec | 6 +-
|
||||
dlls/vcomp120/vcomp120.spec | 6 +-
|
||||
dlls/vcomp140/vcomp140.spec | 6 +-
|
||||
dlls/vcomp90/vcomp90.spec | 6 +-
|
||||
7 files changed, 153 insertions(+), 18 deletions(-)
|
||||
dlls/vcomp/main.c | 115 ++++++++++++++++++++++++++++++++++++
|
||||
dlls/vcomp/vcomp.spec | 4 +-
|
||||
dlls/vcomp100/vcomp100.spec | 4 +-
|
||||
dlls/vcomp110/vcomp110.spec | 4 +-
|
||||
dlls/vcomp120/vcomp120.spec | 4 +-
|
||||
dlls/vcomp140/vcomp140.spec | 4 +-
|
||||
dlls/vcomp90/vcomp90.spec | 4 +-
|
||||
7 files changed, 127 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/dlls/vcomp/main.c b/dlls/vcomp/main.c
|
||||
index 63ec0502b9b..4cde0381693 100644
|
||||
index 6a12da8d458..3b93926a405 100644
|
||||
--- a/dlls/vcomp/main.c
|
||||
+++ b/dlls/vcomp/main.c
|
||||
@@ -1034,6 +1034,26 @@ double CDECL omp_get_wtime(void)
|
||||
return GetTickCount() / 1000.0;
|
||||
}
|
||||
|
||||
+/*****************************************************
|
||||
+* omp_get_wtick - Taken from:
|
||||
+* https://gist.github.com/Randl/45bcca59720f661fa033a67d5f44bff0
|
||||
+*/
|
||||
+double CDECL omp_get_wtick (void)
|
||||
+{
|
||||
+ /*return GetTickCount();*/
|
||||
+ FILETIME createTime;
|
||||
+ FILETIME exitTime;
|
||||
+ FILETIME kernelTime;
|
||||
+ FILETIME userTime;
|
||||
+ ULARGE_INTEGER li;
|
||||
+
|
||||
+ GetProcessTimes(GetCurrentProcess(), &createTime, &exitTime, &kernelTime, &userTime);
|
||||
+ li.LowPart = userTime.dwLowDateTime;
|
||||
+ li.HighPart = userTime.dwHighDateTime;
|
||||
+
|
||||
+ return (double)li.QuadPart / 10000000.0;
|
||||
+}
|
||||
+
|
||||
void CDECL omp_set_dynamic(int val)
|
||||
{
|
||||
TRACE("(%d): stub\n", val);
|
||||
@@ -1486,6 +1506,77 @@ void CDECL _vcomp_for_dynamic_init(unsigned int flags, unsigned int first, unsig
|
||||
@@ -1341,6 +1341,77 @@ void CDECL _vcomp_for_dynamic_init(unsigned int flags, unsigned int first, unsig
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +96,7 @@ index 63ec0502b9b..4cde0381693 100644
|
||||
int CDECL _vcomp_for_dynamic_next(unsigned int *begin, unsigned int *end)
|
||||
{
|
||||
struct vcomp_thread_data *thread_data = vcomp_init_thread_data();
|
||||
@@ -1530,6 +1621,50 @@ int CDECL _vcomp_for_dynamic_next(unsigned int *begin, unsigned int *end)
|
||||
@@ -1385,6 +1456,50 @@ int CDECL _vcomp_for_dynamic_next(unsigned int *begin, unsigned int *end)
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -175,7 +148,7 @@ index 63ec0502b9b..4cde0381693 100644
|
||||
{
|
||||
TRACE("()\n");
|
||||
diff --git a/dlls/vcomp/vcomp.spec b/dlls/vcomp/vcomp.spec
|
||||
index fb67146e058..09bf45550d5 100644
|
||||
index 1a981a6c6c1..09bf45550d5 100644
|
||||
--- a/dlls/vcomp/vcomp.spec
|
||||
+++ b/dlls/vcomp/vcomp.spec
|
||||
@@ -56,9 +56,9 @@
|
||||
@@ -190,17 +163,8 @@ index fb67146e058..09bf45550d5 100644
|
||||
@ cdecl _vcomp_for_static_end()
|
||||
@ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr)
|
||||
@ cdecl _vcomp_for_static_init_i8(int64 int64 int64 int64 ptr ptr ptr ptr ptr)
|
||||
@@ -96,7 +96,7 @@
|
||||
@ cdecl omp_get_num_procs()
|
||||
@ cdecl omp_get_num_threads()
|
||||
@ cdecl omp_get_thread_num()
|
||||
-@ stub omp_get_wtick
|
||||
+@ cdecl omp_get_wtick()
|
||||
@ cdecl omp_get_wtime()
|
||||
@ cdecl omp_in_parallel()
|
||||
@ cdecl omp_init_lock(ptr)
|
||||
diff --git a/dlls/vcomp100/vcomp100.spec b/dlls/vcomp100/vcomp100.spec
|
||||
index fb67146e058..9aa43e3ba4b 100644
|
||||
index 1a981a6c6c1..c38fae6d27d 100644
|
||||
--- a/dlls/vcomp100/vcomp100.spec
|
||||
+++ b/dlls/vcomp100/vcomp100.spec
|
||||
@@ -56,9 +56,9 @@
|
||||
@@ -215,17 +179,8 @@ index fb67146e058..9aa43e3ba4b 100644
|
||||
@ cdecl _vcomp_for_static_end()
|
||||
@ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr)
|
||||
@ cdecl _vcomp_for_static_init_i8(int64 int64 int64 int64 ptr ptr ptr ptr ptr)
|
||||
@@ -96,7 +96,7 @@
|
||||
@ cdecl omp_get_num_procs()
|
||||
@ cdecl omp_get_num_threads()
|
||||
@ cdecl omp_get_thread_num()
|
||||
-@ stub omp_get_wtick
|
||||
+@ cdecl omp_get_wtick() vcomp.omp_get_wtick
|
||||
@ cdecl omp_get_wtime()
|
||||
@ cdecl omp_in_parallel()
|
||||
@ cdecl omp_init_lock(ptr)
|
||||
diff --git a/dlls/vcomp110/vcomp110.spec b/dlls/vcomp110/vcomp110.spec
|
||||
index e1cb8ab9931..d8b4d3e3f16 100644
|
||||
index d39aeb1f347..0475980a109 100644
|
||||
--- a/dlls/vcomp110/vcomp110.spec
|
||||
+++ b/dlls/vcomp110/vcomp110.spec
|
||||
@@ -57,9 +57,9 @@
|
||||
@@ -240,17 +195,8 @@ index e1cb8ab9931..d8b4d3e3f16 100644
|
||||
@ cdecl _vcomp_for_static_end()
|
||||
@ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr)
|
||||
@ cdecl _vcomp_for_static_init_i8(int64 int64 int64 int64 ptr ptr ptr ptr ptr)
|
||||
@@ -97,7 +97,7 @@
|
||||
@ cdecl omp_get_num_procs()
|
||||
@ cdecl omp_get_num_threads()
|
||||
@ cdecl omp_get_thread_num()
|
||||
-@ stub omp_get_wtick
|
||||
+@ cdecl omp_get_wtick() vcomp.omp_get_wtick
|
||||
@ cdecl omp_get_wtime()
|
||||
@ cdecl omp_in_parallel()
|
||||
@ cdecl omp_init_lock(ptr)
|
||||
diff --git a/dlls/vcomp120/vcomp120.spec b/dlls/vcomp120/vcomp120.spec
|
||||
index e1cb8ab9931..d8b4d3e3f16 100644
|
||||
index d39aeb1f347..0475980a109 100644
|
||||
--- a/dlls/vcomp120/vcomp120.spec
|
||||
+++ b/dlls/vcomp120/vcomp120.spec
|
||||
@@ -57,9 +57,9 @@
|
||||
@@ -265,17 +211,8 @@ index e1cb8ab9931..d8b4d3e3f16 100644
|
||||
@ cdecl _vcomp_for_static_end()
|
||||
@ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr)
|
||||
@ cdecl _vcomp_for_static_init_i8(int64 int64 int64 int64 ptr ptr ptr ptr ptr)
|
||||
@@ -97,7 +97,7 @@
|
||||
@ cdecl omp_get_num_procs()
|
||||
@ cdecl omp_get_num_threads()
|
||||
@ cdecl omp_get_thread_num()
|
||||
-@ stub omp_get_wtick
|
||||
+@ cdecl omp_get_wtick() vcomp.omp_get_wtick
|
||||
@ cdecl omp_get_wtime()
|
||||
@ cdecl omp_in_parallel()
|
||||
@ cdecl omp_init_lock(ptr)
|
||||
diff --git a/dlls/vcomp140/vcomp140.spec b/dlls/vcomp140/vcomp140.spec
|
||||
index e1cb8ab9931..d8b4d3e3f16 100644
|
||||
index d39aeb1f347..0475980a109 100644
|
||||
--- a/dlls/vcomp140/vcomp140.spec
|
||||
+++ b/dlls/vcomp140/vcomp140.spec
|
||||
@@ -57,9 +57,9 @@
|
||||
@@ -290,17 +227,8 @@ index e1cb8ab9931..d8b4d3e3f16 100644
|
||||
@ cdecl _vcomp_for_static_end()
|
||||
@ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr)
|
||||
@ cdecl _vcomp_for_static_init_i8(int64 int64 int64 int64 ptr ptr ptr ptr ptr)
|
||||
@@ -97,7 +97,7 @@
|
||||
@ cdecl omp_get_num_procs()
|
||||
@ cdecl omp_get_num_threads()
|
||||
@ cdecl omp_get_thread_num()
|
||||
-@ stub omp_get_wtick
|
||||
+@ cdecl omp_get_wtick() vcomp.omp_get_wtick
|
||||
@ cdecl omp_get_wtime()
|
||||
@ cdecl omp_in_parallel()
|
||||
@ cdecl omp_init_lock(ptr)
|
||||
diff --git a/dlls/vcomp90/vcomp90.spec b/dlls/vcomp90/vcomp90.spec
|
||||
index 9fac400ea0e..563f5391ed9 100644
|
||||
index a751e0b3da4..563f5391ed9 100644
|
||||
--- a/dlls/vcomp90/vcomp90.spec
|
||||
+++ b/dlls/vcomp90/vcomp90.spec
|
||||
@@ -56,9 +56,9 @@
|
||||
@@ -315,15 +243,6 @@ index 9fac400ea0e..563f5391ed9 100644
|
||||
@ cdecl _vcomp_for_static_end() vcomp._vcomp_for_static_end
|
||||
@ cdecl _vcomp_for_static_init(long long long long ptr ptr ptr ptr ptr) vcomp._vcomp_for_static_init
|
||||
@ cdecl _vcomp_for_static_init_i8(int64 int64 int64 int64 ptr ptr ptr ptr ptr) vcomp._vcomp_for_static_init_i8
|
||||
@@ -96,7 +96,7 @@
|
||||
@ cdecl omp_get_num_procs() vcomp.omp_get_num_procs
|
||||
@ cdecl omp_get_num_threads() vcomp.omp_get_num_threads
|
||||
@ cdecl omp_get_thread_num() vcomp.omp_get_thread_num
|
||||
-@ stub omp_get_wtick
|
||||
+@ cdecl omp_get_wtick() vcomp.omp_get_wtick
|
||||
@ cdecl omp_get_wtime() vcomp.omp_get_wtime
|
||||
@ cdecl omp_in_parallel() vcomp.omp_in_parallel
|
||||
@ cdecl omp_init_lock(ptr) vcomp.omp_init_lock
|
||||
--
|
||||
2.43.0
|
||||
2.51.0
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,120 @@
|
||||
From cf607d9c2b6071769acdad862336e621b332ecb0 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 28 Nov 2025 08:54:08 +1100
|
||||
Subject: [PATCH] Updated vkd3d to fdfb74b20b08144e144299bc0b7b20b95421c6c8.
|
||||
|
||||
---
|
||||
libs/vkd3d/libs/vkd3d-shader/ir.c | 60 +++++++++++++++++++
|
||||
.../libs/vkd3d-shader/vkd3d_shader_private.h | 18 ++++++
|
||||
2 files changed, 78 insertions(+)
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/ir.c b/libs/vkd3d/libs/vkd3d-shader/ir.c
|
||||
index 1a0c9d83306..3548e748c18 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/ir.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/ir.c
|
||||
@@ -1323,6 +1323,62 @@ static enum vkd3d_result vsir_program_lower_ifc(struct vsir_program *program,
|
||||
return VKD3D_OK;
|
||||
}
|
||||
|
||||
+static enum vkd3d_result vsir_program_lower_nrm(struct vsir_program *program, struct vsir_program_iterator *nrm)
|
||||
+{
|
||||
+ struct vkd3d_shader_instruction *ins = vsir_program_iterator_current(nrm);
|
||||
+ const struct vkd3d_shader_location location = ins->location;
|
||||
+ const struct vkd3d_shader_src_param *src = ins->src;
|
||||
+ const struct vkd3d_shader_dst_param *dst = ins->dst;
|
||||
+ unsigned int dot_id, rsq_id, mul_id;
|
||||
+ struct vsir_program_iterator it;
|
||||
+
|
||||
+ /* nrm DST, SRC
|
||||
+ * ->
|
||||
+ * dp3 srDOT, SRC, SRC
|
||||
+ * rsq srRSQ, srDOT
|
||||
+ * mul srMUL, srRSQ, SRC
|
||||
+ * movc DST, srDOT, srMUL, srDOT */
|
||||
+
|
||||
+ if (!(ins = vsir_program_iterator_insert_before(nrm, &it, 3)))
|
||||
+ return VKD3D_ERROR_OUT_OF_MEMORY;
|
||||
+ if (!vsir_instruction_init_with_params(program, ins, &location, VSIR_OP_DP3, 1, 2))
|
||||
+ goto fail;
|
||||
+ dot_id = program->ssa_count++;
|
||||
+ dst_param_init_ssa(&ins->dst[0], dot_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+ ins->src[0] = src[0];
|
||||
+ ins->src[1] = src[0];
|
||||
+
|
||||
+ ins = vsir_program_iterator_next(&it);
|
||||
+ if (!vsir_instruction_init_with_params(program, ins, &location, VSIR_OP_RSQ, 1, 1))
|
||||
+ goto fail;
|
||||
+ rsq_id = program->ssa_count++;
|
||||
+ dst_param_init_ssa(&ins->dst[0], rsq_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+ src_param_init_ssa(&ins->src[0], dot_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+
|
||||
+ ins = vsir_program_iterator_next(&it);
|
||||
+ if (!vsir_instruction_init_with_params(program, ins, &location, VSIR_OP_MUL, 1, 2))
|
||||
+ goto fail;
|
||||
+ mul_id = program->ssa_count++;
|
||||
+ dst_param_init_ssa(&ins->dst[0], mul_id, src[0].reg.data_type, dst[0].reg.dimension);
|
||||
+ src_param_init_ssa(&ins->src[0], rsq_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+ ins->src[1] = src[0];
|
||||
+
|
||||
+ ins = vsir_program_iterator_next(&it);
|
||||
+ if (!vsir_instruction_init_with_params(program, ins, &location, VSIR_OP_MOVC, 1, 3))
|
||||
+ goto fail;
|
||||
+ ins->dst[0] = dst[0];
|
||||
+ src_param_init_ssa(&ins->src[0], dot_id, VSIR_DATA_U32, VSIR_DIMENSION_SCALAR);
|
||||
+ src_param_init_ssa(&ins->src[1], mul_id, src[0].reg.data_type, dst[0].reg.dimension);
|
||||
+ src_param_init_ssa(&ins->src[2], dot_id, src[0].reg.data_type, VSIR_DIMENSION_SCALAR);
|
||||
+
|
||||
+ return VKD3D_OK;
|
||||
+
|
||||
+fail:
|
||||
+ vsir_program_iterator_nop_range(&it, nrm, &location);
|
||||
+
|
||||
+ return VKD3D_ERROR_OUT_OF_MEMORY;
|
||||
+}
|
||||
+
|
||||
static enum vkd3d_result vsir_program_lower_texkill(struct vsir_program *program,
|
||||
struct vsir_program_iterator *it, unsigned int *tmp_idx)
|
||||
{
|
||||
@@ -2364,6 +2420,10 @@ static enum vkd3d_result vsir_program_lower_d3dbc_instructions(struct vsir_progr
|
||||
ret = vsir_program_lower_ifc(program, &it, &tmp_idx, message_context);
|
||||
break;
|
||||
|
||||
+ case VSIR_OP_NRM:
|
||||
+ ret = vsir_program_lower_nrm(program, &it);
|
||||
+ break;
|
||||
+
|
||||
case VSIR_OP_SINCOS:
|
||||
ret = vsir_program_lower_sm1_sincos(program, &it);
|
||||
break;
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
index 46f62a9e55c..33004dc62d9 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
@@ -1572,6 +1572,24 @@ static inline struct vkd3d_shader_instruction *vsir_program_iterator_insert_befo
|
||||
return vsir_program_iterator_current(it);
|
||||
}
|
||||
|
||||
+static inline void vsir_program_iterator_nop_range(const struct vsir_program_iterator *first,
|
||||
+ const struct vsir_program_iterator *last, const struct vkd3d_shader_location *location)
|
||||
+{
|
||||
+ const struct vkd3d_shader_instruction_array *array = first->array;
|
||||
+ size_t first_idx = first->idx;
|
||||
+ size_t last_idx = last->idx;
|
||||
+ size_t idx;
|
||||
+
|
||||
+ VKD3D_ASSERT(last->array == array);
|
||||
+ VKD3D_ASSERT(last_idx < array->count);
|
||||
+ VKD3D_ASSERT(first_idx <= last_idx);
|
||||
+
|
||||
+ for (idx = first_idx; idx <= last_idx; ++idx)
|
||||
+ {
|
||||
+ vsir_instruction_init(&array->elements[idx], location, VSIR_OP_NOP);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
enum vkd3d_shader_config_flags
|
||||
{
|
||||
VKD3D_SHADER_CONFIG_FLAG_FORCE_VALIDATION = 0x00000001,
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@@ -1,338 +0,0 @@
|
||||
From 1c19b515adc2181cff5be945b742fbd357330bbe Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 14 Nov 2025 08:07:32 +1100
|
||||
Subject: [PATCH] Updated vkd3d to 7f377879fc526dfb69966ed1672d3036e807235c.
|
||||
|
||||
---
|
||||
libs/vkd3d/include/private/vkd3d_common.h | 20 +++++++-----
|
||||
libs/vkd3d/libs/vkd3d-common/debug.c | 9 +++---
|
||||
libs/vkd3d/libs/vkd3d-shader/d3d_asm.c | 31 ++++++++++++++++++-
|
||||
libs/vkd3d/libs/vkd3d-shader/dxil.c | 13 +++++---
|
||||
libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c | 8 +++--
|
||||
libs/vkd3d/libs/vkd3d-shader/spirv.c | 13 +++++---
|
||||
.../libs/vkd3d-shader/vkd3d_shader_main.c | 4 +--
|
||||
.../libs/vkd3d-shader/vkd3d_shader_private.h | 1 +
|
||||
.../vkd3d/libs/vkd3d-utils/vkd3d_utils_main.c | 2 --
|
||||
libs/vkd3d/libs/vkd3d/vkd3d_main.c | 2 --
|
||||
10 files changed, 71 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/libs/vkd3d/include/private/vkd3d_common.h b/libs/vkd3d/include/private/vkd3d_common.h
|
||||
index c2e957a2fea..56f8ad4ee25 100644
|
||||
--- a/libs/vkd3d/include/private/vkd3d_common.h
|
||||
+++ b/libs/vkd3d/include/private/vkd3d_common.h
|
||||
@@ -19,6 +19,11 @@
|
||||
#ifndef __VKD3D_COMMON_H
|
||||
#define __VKD3D_COMMON_H
|
||||
|
||||
+#ifndef VKD3D_DEBUG_ENV
|
||||
+#define VKD3D_DEBUG_ENV VKD3D_DEBUG
|
||||
+#endif
|
||||
+#define VKD3D_DEBUG_ENV_NAME VKD3D_EXPAND_AND_STRINGIFY(VKD3D_DEBUG_ENV)
|
||||
+
|
||||
#include "config.h"
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include "windows.h"
|
||||
@@ -149,9 +154,10 @@ enum vkd3d_dbg_level
|
||||
VKD3D_DBG_LEVEL_TRACE,
|
||||
};
|
||||
|
||||
-enum vkd3d_dbg_level vkd3d_dbg_get_level(void);
|
||||
+enum vkd3d_dbg_level vkd3d_dbg_get_level(const char *vkd3d_dbg_env_name);
|
||||
|
||||
-void vkd3d_dbg_printf(enum vkd3d_dbg_level level, const char *function, const char *fmt, ...) VKD3D_PRINTF_FUNC(3, 4);
|
||||
+void vkd3d_dbg_printf(const char *vkd3d_dbg_env_name, enum vkd3d_dbg_level level,
|
||||
+ const char *function, const char *fmt, ...) VKD3D_PRINTF_FUNC(4, 5);
|
||||
void vkd3d_dbg_set_log_callback(PFN_vkd3d_log callback);
|
||||
|
||||
const char *vkd3d_dbg_sprintf(const char *fmt, ...) VKD3D_PRINTF_FUNC(1, 2);
|
||||
@@ -174,7 +180,7 @@ const char *debugstr_w(const WCHAR *wstr, size_t wchar_size);
|
||||
VKD3D_DBG_PRINTF_##level
|
||||
|
||||
#define VKD3D_DBG_PRINTF(...) \
|
||||
- vkd3d_dbg_printf(vkd3d_dbg_level, __FUNCTION__, __VA_ARGS__); } while (0)
|
||||
+ vkd3d_dbg_printf(VKD3D_DEBUG_ENV_NAME, vkd3d_dbg_level, __FUNCTION__, __VA_ARGS__); } while (0)
|
||||
|
||||
#define VKD3D_DBG_PRINTF_TRACE(...) VKD3D_DBG_PRINTF(__VA_ARGS__)
|
||||
#define VKD3D_DBG_PRINTF_WARN(...) VKD3D_DBG_PRINTF(__VA_ARGS__)
|
||||
@@ -183,7 +189,7 @@ const char *debugstr_w(const WCHAR *wstr, size_t wchar_size);
|
||||
|
||||
#ifdef VKD3D_ABORT_ON_ERR
|
||||
#define VKD3D_DBG_PRINTF_ERR(...) \
|
||||
- vkd3d_dbg_printf(vkd3d_dbg_level, __FUNCTION__, __VA_ARGS__); \
|
||||
+ vkd3d_dbg_printf(VKD3D_DEBUG_ENV_NAME, vkd3d_dbg_level, __FUNCTION__, __VA_ARGS__); \
|
||||
abort(); \
|
||||
} while (0)
|
||||
#else
|
||||
@@ -217,19 +223,17 @@ const char *debugstr_w(const WCHAR *wstr, size_t wchar_size);
|
||||
#endif
|
||||
|
||||
#ifndef TRACE_ON
|
||||
-#define TRACE_ON() (vkd3d_dbg_get_level() == VKD3D_DBG_LEVEL_TRACE)
|
||||
+#define TRACE_ON() (vkd3d_dbg_get_level(VKD3D_DEBUG_ENV_NAME) == VKD3D_DBG_LEVEL_TRACE)
|
||||
#endif
|
||||
|
||||
#ifndef WARN_ON
|
||||
-#define WARN_ON() (vkd3d_dbg_get_level() >= VKD3D_DBG_LEVEL_WARN)
|
||||
+#define WARN_ON() (vkd3d_dbg_get_level(VKD3D_DEBUG_ENV_NAME) >= VKD3D_DBG_LEVEL_WARN)
|
||||
#endif
|
||||
|
||||
#ifndef FIXME_ONCE
|
||||
#define FIXME_ONCE VKD3D_DBG_LOG_ONCE(FIXME, WARN)
|
||||
#endif
|
||||
|
||||
-#define VKD3D_DEBUG_ENV_NAME(name) const char *const vkd3d_dbg_env_name = name
|
||||
-
|
||||
static inline const char *debugstr_guid(const GUID *guid)
|
||||
{
|
||||
if (!guid)
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-common/debug.c b/libs/vkd3d/libs/vkd3d-common/debug.c
|
||||
index 32862024b90..b5d74ca3dc7 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-common/debug.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-common/debug.c
|
||||
@@ -40,8 +40,6 @@
|
||||
#define VKD3D_DEBUG_BUFFER_COUNT 64
|
||||
#define VKD3D_DEBUG_BUFFER_SIZE 512
|
||||
|
||||
-extern const char *const vkd3d_dbg_env_name;
|
||||
-
|
||||
static const char *const debug_level_names[] =
|
||||
{
|
||||
[VKD3D_DBG_LEVEL_NONE ] = "none",
|
||||
@@ -52,7 +50,7 @@ static const char *const debug_level_names[] =
|
||||
[VKD3D_DBG_LEVEL_TRACE] = "trace",
|
||||
};
|
||||
|
||||
-enum vkd3d_dbg_level vkd3d_dbg_get_level(void)
|
||||
+enum vkd3d_dbg_level vkd3d_dbg_get_level(const char *vkd3d_dbg_env_name)
|
||||
{
|
||||
static unsigned int level = ~0u;
|
||||
const char *vkd3d_debug;
|
||||
@@ -108,11 +106,12 @@ static uint64_t get_pthread_threadid(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
-void vkd3d_dbg_printf(enum vkd3d_dbg_level level, const char *function, const char *fmt, ...)
|
||||
+void vkd3d_dbg_printf(const char *vkd3d_dbg_env_name,
|
||||
+ enum vkd3d_dbg_level level, const char *function, const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
- if (vkd3d_dbg_get_level() < level)
|
||||
+ if (vkd3d_dbg_get_level(vkd3d_dbg_env_name) < level)
|
||||
return;
|
||||
|
||||
#ifdef _WIN32
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/d3d_asm.c b/libs/vkd3d/libs/vkd3d-shader/d3d_asm.c
|
||||
index 4573cb67fb5..b316f6c8830 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/d3d_asm.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/d3d_asm.c
|
||||
@@ -398,12 +398,41 @@ static void shader_dump_resource_data_type(struct vkd3d_d3d_asm_compiler *compil
|
||||
{
|
||||
int i;
|
||||
|
||||
+ /* We want the D3D names here, not the vsir ones. */
|
||||
+ static const char * const names[] =
|
||||
+ {
|
||||
+ [VSIR_DATA_BOOL ] = "bool",
|
||||
+ [VSIR_DATA_F16 ] = "half",
|
||||
+ [VSIR_DATA_F32 ] = "float",
|
||||
+ [VSIR_DATA_F64 ] = "double",
|
||||
+ [VSIR_DATA_I8 ] = "int8",
|
||||
+ [VSIR_DATA_I16 ] = "int16",
|
||||
+ [VSIR_DATA_I32 ] = "int",
|
||||
+ [VSIR_DATA_I64 ] = "int64",
|
||||
+ [VSIR_DATA_U8 ] = "uint8",
|
||||
+ [VSIR_DATA_U16 ] = "uint16",
|
||||
+ [VSIR_DATA_U32 ] = "uint",
|
||||
+ [VSIR_DATA_U64 ] = "uint64",
|
||||
+ [VSIR_DATA_SNORM ] = "snorm",
|
||||
+ [VSIR_DATA_UNORM ] = "unorm",
|
||||
+ [VSIR_DATA_OPAQUE ] = "opaque",
|
||||
+ [VSIR_DATA_MIXED ] = "mixed",
|
||||
+ [VSIR_DATA_CONTINUED] = "<continued>",
|
||||
+ [VSIR_DATA_UNUSED ] = "<unused>",
|
||||
+ };
|
||||
+
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "(");
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
+ size_t t = type[i];
|
||||
+
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "%s", i == 0 ? "" : ",");
|
||||
- shader_print_data_type(compiler, type[i]);
|
||||
+ if (t < ARRAY_SIZE(names) && names[t])
|
||||
+ vkd3d_string_buffer_printf(&compiler->buffer, "%s", names[t]);
|
||||
+ else
|
||||
+ vkd3d_string_buffer_printf(&compiler->buffer, "%s<unhandled data type %#zx>%s",
|
||||
+ compiler->colours.error, t, compiler->colours.reset);
|
||||
}
|
||||
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, ")");
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/dxil.c b/libs/vkd3d/libs/vkd3d-shader/dxil.c
|
||||
index 8d803b91f7a..9f25ae8334b 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/dxil.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/dxil.c
|
||||
@@ -6142,11 +6142,14 @@ static unsigned int sm6_value_get_texel_offset(const struct sm6_value *value, st
|
||||
}
|
||||
|
||||
static void instruction_set_texel_offset(struct vkd3d_shader_instruction *ins,
|
||||
- const struct sm6_value **operands, struct sm6_parser *sm6)
|
||||
+ const struct sm6_value **operands, unsigned int count, struct sm6_parser *sm6)
|
||||
{
|
||||
ins->texel_offset.u = sm6_value_get_texel_offset(operands[0], sm6);
|
||||
ins->texel_offset.v = sm6_value_get_texel_offset(operands[1], sm6);
|
||||
- ins->texel_offset.w = sm6_value_get_texel_offset(operands[2], sm6);
|
||||
+ if (count == 3)
|
||||
+ ins->texel_offset.w = sm6_value_get_texel_offset(operands[2], sm6);
|
||||
+ else
|
||||
+ ins->texel_offset.w = 0;
|
||||
}
|
||||
|
||||
static void sm6_parser_emit_dx_sample(struct sm6_parser *sm6, enum dx_intrinsic_opcode op,
|
||||
@@ -6228,7 +6231,7 @@ static void sm6_parser_emit_dx_sample(struct sm6_parser *sm6, enum dx_intrinsic_
|
||||
src_param_init_vector_from_reg(&src_params[0], &coord);
|
||||
src_param_init_vector_from_handle(sm6, &src_params[1], &resource->u.handle);
|
||||
src_param_init_vector_from_handle(sm6, &src_params[2], &sampler->u.handle);
|
||||
- instruction_set_texel_offset(ins, &operands[6], sm6);
|
||||
+ instruction_set_texel_offset(ins, &operands[6], 3, sm6);
|
||||
|
||||
instruction_dst_param_init_ssa_vector(ins, component_count, sm6);
|
||||
}
|
||||
@@ -6402,7 +6405,7 @@ static void sm6_parser_emit_dx_texture_gather(struct sm6_parser *sm6, enum dx_in
|
||||
if (extended_offset)
|
||||
src_param_init_vector_from_reg(&src_params[1], &offset);
|
||||
else
|
||||
- instruction_set_texel_offset(ins, &operands[6], sm6);
|
||||
+ instruction_set_texel_offset(ins, &operands[6], 2, sm6);
|
||||
src_param_init_vector_from_handle(sm6, &src_params[1 + extended_offset], &resource->u.handle);
|
||||
src_param_init_vector_from_handle(sm6, &src_params[2 + extended_offset], &sampler->u.handle);
|
||||
/* Swizzle stored in the sampler parameter is the scalar component index to be gathered. */
|
||||
@@ -6448,7 +6451,7 @@ static void sm6_parser_emit_dx_texture_load(struct sm6_parser *sm6, enum dx_intr
|
||||
ins = state->ins;
|
||||
instruction_init_with_resource(ins, is_uav ? VSIR_OP_LD_UAV_TYPED
|
||||
: is_multisample ? VSIR_OP_LD2DMS : VSIR_OP_LD, resource, sm6);
|
||||
- instruction_set_texel_offset(ins, &operands[5], sm6);
|
||||
+ instruction_set_texel_offset(ins, &operands[5], 3, sm6);
|
||||
|
||||
for (i = 0; i < VKD3D_VEC4_SIZE; ++i)
|
||||
ins->resource_data_type[i] = resource->u.handle.d->resource_data_type;
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
|
||||
index 8bb23e0690d..f1368b151aa 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
|
||||
@@ -5490,10 +5490,14 @@ static struct hlsl_ir_node *lower_casts_to_bool(struct hlsl_ctx *ctx,
|
||||
struct hlsl_ir_node *hlsl_add_conditional(struct hlsl_ctx *ctx, struct hlsl_block *instrs,
|
||||
struct hlsl_ir_node *condition, struct hlsl_ir_node *if_true, struct hlsl_ir_node *if_false)
|
||||
{
|
||||
+ struct hlsl_type *false_type = if_false->data_type;
|
||||
struct hlsl_type *cond_type = condition->data_type;
|
||||
struct hlsl_ir_node *operands[HLSL_MAX_OPERANDS];
|
||||
+ struct hlsl_type *true_type = if_true->data_type;
|
||||
|
||||
- VKD3D_ASSERT(hlsl_types_are_equal(if_true->data_type, if_false->data_type));
|
||||
+ VKD3D_ASSERT(hlsl_types_are_equal(true_type, false_type)
|
||||
+ || (hlsl_is_vec1(true_type) && hlsl_is_vec1(false_type)
|
||||
+ && true_type->e.numeric.type == false_type->e.numeric.type));
|
||||
|
||||
if (cond_type->e.numeric.type != HLSL_TYPE_BOOL)
|
||||
{
|
||||
@@ -5505,7 +5509,7 @@ struct hlsl_ir_node *hlsl_add_conditional(struct hlsl_ctx *ctx, struct hlsl_bloc
|
||||
operands[0] = condition;
|
||||
operands[1] = if_true;
|
||||
operands[2] = if_false;
|
||||
- return hlsl_block_add_expr(ctx, instrs, HLSL_OP3_TERNARY, operands, if_true->data_type, &condition->loc);
|
||||
+ return hlsl_block_add_expr(ctx, instrs, HLSL_OP3_TERNARY, operands, true_type, &condition->loc);
|
||||
}
|
||||
|
||||
static struct hlsl_ir_node *lower_int_division_sm4(struct hlsl_ctx *ctx,
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/spirv.c b/libs/vkd3d/libs/vkd3d-shader/spirv.c
|
||||
index 3950021a2ef..87ec827b420 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/spirv.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/spirv.c
|
||||
@@ -6668,13 +6668,18 @@ static void spirv_compiler_emit_cbv_declaration(struct spirv_compiler *compiler,
|
||||
/* Push constant buffers are handled in
|
||||
* spirv_compiler_emit_push_constant_buffers().
|
||||
*/
|
||||
- push_cb->reg = reg;
|
||||
- push_cb->size = size;
|
||||
if (size_in_bytes > push_cb->pc.size)
|
||||
{
|
||||
- WARN("Constant buffer size %u exceeds push constant size %u.\n",
|
||||
- size_in_bytes, push_cb->pc.size);
|
||||
+ spirv_compiler_warning(compiler, VKD3D_SHADER_WARNING_SPV_INVALID_SIZE,
|
||||
+ "Constant buffer cb%u, space %u, has size %u which exceeds the push constant size %u.",
|
||||
+ push_cb->pc.register_index, push_cb->pc.register_space, size_in_bytes, push_cb->pc.size);
|
||||
+ size_in_bytes = push_cb->pc.size;
|
||||
+ size = align(size_in_bytes, VKD3D_VEC4_SIZE * sizeof(uint32_t));
|
||||
+ size /= VKD3D_VEC4_SIZE * sizeof(uint32_t);
|
||||
}
|
||||
+
|
||||
+ push_cb->reg = reg;
|
||||
+ push_cb->size = size;
|
||||
return;
|
||||
}
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_main.c
|
||||
index c0faa30f14a..ee113f57736 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_main.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_main.c
|
||||
@@ -23,8 +23,6 @@
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
-/* VKD3D_DEBUG_ENV_NAME("VKD3D_SHADER_DEBUG"); */
|
||||
-
|
||||
static inline int char_to_int(char c)
|
||||
{
|
||||
if ('0' <= c && c <= '9')
|
||||
@@ -268,7 +266,7 @@ void vkd3d_shader_trace_text_(const char *text, size_t size, const char *functio
|
||||
q = end;
|
||||
else
|
||||
++q;
|
||||
- vkd3d_dbg_printf(VKD3D_DBG_LEVEL_TRACE, function, "%.*s", (int)(q - p), p);
|
||||
+ vkd3d_dbg_printf(VKD3D_DEBUG_ENV_NAME, VKD3D_DBG_LEVEL_TRACE, function, "%.*s", (int)(q - p), p);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
index 763a4906919..97fe5238046 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
@@ -110,6 +110,7 @@ enum vkd3d_shader_error
|
||||
VKD3D_SHADER_WARNING_SPV_INVALID_SWIZZLE = 2300,
|
||||
VKD3D_SHADER_WARNING_SPV_INVALID_UAV_FLAGS = 2301,
|
||||
VKD3D_SHADER_WARNING_SPV_IGNORING_FLAG = 2302,
|
||||
+ VKD3D_SHADER_WARNING_SPV_INVALID_SIZE = 2303,
|
||||
|
||||
VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY = 3000,
|
||||
VKD3D_SHADER_ERROR_RS_INVALID_VERSION = 3001,
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-utils/vkd3d_utils_main.c b/libs/vkd3d/libs/vkd3d-utils/vkd3d_utils_main.c
|
||||
index fea8c2440d1..6e90b48e877 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-utils/vkd3d_utils_main.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-utils/vkd3d_utils_main.c
|
||||
@@ -19,8 +19,6 @@
|
||||
#include "vkd3d_utils_private.h"
|
||||
#undef D3D12CreateDevice
|
||||
|
||||
-/* VKD3D_DEBUG_ENV_NAME("VKD3D_DEBUG"); */
|
||||
-
|
||||
static const char *debug_d3d_blob_part(D3D_BLOB_PART part)
|
||||
{
|
||||
switch (part)
|
||||
diff --git a/libs/vkd3d/libs/vkd3d/vkd3d_main.c b/libs/vkd3d/libs/vkd3d/vkd3d_main.c
|
||||
index 5215cf8ef86..4c58f0a1787 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d/vkd3d_main.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d/vkd3d_main.c
|
||||
@@ -18,8 +18,6 @@
|
||||
|
||||
#include "vkd3d_private.h"
|
||||
|
||||
-VKD3D_DEBUG_ENV_NAME("VKD3D_DEBUG");
|
||||
-
|
||||
HRESULT vkd3d_create_device(const struct vkd3d_device_create_info *create_info,
|
||||
REFIID iid, void **device)
|
||||
{
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From b7e91a68996298890b45a006a3888b18f23d0708 Mon Sep 17 00:00:00 2001
|
||||
From aa950dc54c214e96f4970a1a55a96f18c291ade7 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Sat, 24 Jan 2015 05:12:49 +0100
|
||||
Subject: [PATCH] winex11: Fix handling of window attributes for WS_EX_LAYERED
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH] winex11: Fix handling of window attributes for WS_EX_LAYERED
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
|
||||
index e9edc0022c8..f3cbb858798 100644
|
||||
index df5e2156b1c..660856495b0 100644
|
||||
--- a/dlls/winex11.drv/window.c
|
||||
+++ b/dlls/winex11.drv/window.c
|
||||
@@ -457,7 +457,7 @@ static unsigned long get_mwm_decorations_for_style( DWORD style, DWORD ex_style
|
||||
@@ -21,15 +21,15 @@ index e9edc0022c8..f3cbb858798 100644
|
||||
|
||||
if ((style & WS_CAPTION) == WS_CAPTION)
|
||||
{
|
||||
@@ -3116,7 +3116,7 @@ void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, HWND owner_hint, UIN
|
||||
debugstr_window_rects(new_rects), new_style, swp_flags );
|
||||
@@ -3197,7 +3197,7 @@ void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, HWND owner_hint, UIN
|
||||
|
||||
/* layered windows are mapped only once their attributes are set */
|
||||
- if (ex_style & WS_EX_LAYERED && !data->layered && !IsRectEmpty( &new_rects->window )) new_style &= ~WS_VISIBLE;
|
||||
+ if ((ex_style & (WS_EX_LAYERED | WS_EX_COMPOSITED)) == WS_EX_LAYERED && !data->layered && !IsRectEmpty( &new_rects->window )) new_style &= ~WS_VISIBLE;
|
||||
|
||||
XFlush( gdi_display ); /* make sure painting is done before we move the window */
|
||||
|
||||
if (data->pending_state.wm_state == WithdrawnState && (new_style & WS_VISIBLE) &&
|
||||
- (ex_style & WS_EX_LAYERED) && !data->layered && !IsRectEmpty( &new_rects->window ))
|
||||
+ (ex_style & (WS_EX_LAYERED | WS_EX_COMPOSITED)) == WS_EX_LAYERED && !data->layered && !IsRectEmpty( &new_rects->window ))
|
||||
{
|
||||
WARN( "win %p/%lx is layered, delaying mapping\n", hwnd, data->whole_window );
|
||||
new_style &= ~WS_VISIBLE;
|
||||
--
|
||||
2.51.0
|
||||
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
From 9c11f23079351f107a3bbcd3cd274f0a5656518f Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 1 Oct 2020 18:37:06 +1000
|
||||
Subject: [PATCH] x3daudio1_7: Create import library
|
||||
|
||||
---
|
||||
dlls/x3daudio1_7/Makefile.in | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dlls/x3daudio1_7/Makefile.in b/dlls/x3daudio1_7/Makefile.in
|
||||
index c6a8ed5102a..323d3fad60a 100644
|
||||
--- a/dlls/x3daudio1_7/Makefile.in
|
||||
+++ b/dlls/x3daudio1_7/Makefile.in
|
||||
@@ -1,5 +1,6 @@
|
||||
EXTRADEFS = -DX3DAUDIO1_VER=7 -DXAUDIO2_VER=7
|
||||
MODULE = x3daudio1_7.dll
|
||||
+IMPORTLIB = x3daudio1_7
|
||||
PARENTSRC = ../xaudio2_7
|
||||
IMPORTS = $(FAUDIO_PE_LIBS)
|
||||
EXTRAINCL = $(FAUDIO_PE_CFLAGS)
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@@ -1,149 +0,0 @@
|
||||
From d64e7549840a2b59682be076a6cb540a9f7143b7 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 1 Oct 2020 18:34:23 +1000
|
||||
Subject: [PATCH] xactengine3_7/tests: Add Global settings test
|
||||
|
||||
---
|
||||
dlls/xactengine3_7/tests/Makefile.in | 3 +-
|
||||
dlls/xactengine3_7/tests/globals.xgs | Bin 0 -> 440 bytes
|
||||
dlls/xactengine3_7/tests/rsrc.rc | 22 ++++++++++
|
||||
dlls/xactengine3_7/tests/xact3.c | 61 +++++++++++++++++++++++++++
|
||||
4 files changed, 85 insertions(+), 1 deletion(-)
|
||||
create mode 100644 dlls/xactengine3_7/tests/globals.xgs
|
||||
create mode 100644 dlls/xactengine3_7/tests/rsrc.rc
|
||||
|
||||
diff --git a/dlls/xactengine3_7/tests/Makefile.in b/dlls/xactengine3_7/tests/Makefile.in
|
||||
index 54046e85b88..a749ff99ebc 100644
|
||||
--- a/dlls/xactengine3_7/tests/Makefile.in
|
||||
+++ b/dlls/xactengine3_7/tests/Makefile.in
|
||||
@@ -1,5 +1,6 @@
|
||||
TESTDLL = xactengine3_7.dll
|
||||
-IMPORTS = ole32
|
||||
+IMPORTS = ole32 x3daudio1_7
|
||||
|
||||
SOURCES = \
|
||||
+ rsrc.rc \
|
||||
xact3.c
|
||||
diff --git a/dlls/xactengine3_7/tests/globals.xgs b/dlls/xactengine3_7/tests/globals.xgs
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..37bd75b44d64fdf0862ba41c5548ec140f6607e6
|
||||
GIT binary patch
|
||||
literal 440
|
||||
zcmZ8cF;2rk5FFb;L=nLwsF0vai3CxsL@7cLMuL*V*@R0jXUjgf$Uoo@e1L`@Af=?E
|
||||
z-~&8>iq5R>EJ(Q1&d!YXR&zIlsDF$@e3d63Q8j;i_ksW|?DKVJ#BIT~;`-!jd%zLb
|
||||
zH}h-m)%sztc3%9-GGL7bdyU7f4FAOKyuTsZZmjbPbb2hxQ)iTCyY)*e4$QC_W68qX
|
||||
zjKPuo#&H4buxwgv+0X-(+zEw{rlL>=qav3vd<6d%0Uox0J@?-kFW5q6*F0E!wD`oh
|
||||
zgJ;Xni)F8%q0WuaG3DqQBjUxCToNuxk;uvNaVAL{VPvAadZq|rlBSBX3u)r}C>Ba&
|
||||
Sh*F}-cp4>zo*<NNBYptThnF`1
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/dlls/xactengine3_7/tests/rsrc.rc b/dlls/xactengine3_7/tests/rsrc.rc
|
||||
new file mode 100644
|
||||
index 00000000000..2c1961c727a
|
||||
--- /dev/null
|
||||
+++ b/dlls/xactengine3_7/tests/rsrc.rc
|
||||
@@ -0,0 +1,22 @@
|
||||
+/*
|
||||
+ * Copyright 2020 Alistair Leslie-Hughes
|
||||
+ *
|
||||
+ * This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this library; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
+ */
|
||||
+
|
||||
+#include "windef.h"
|
||||
+
|
||||
+/* @makedep: globals.xgs*/
|
||||
+globals.xgs RCDATA "globals.xgs"
|
||||
diff --git a/dlls/xactengine3_7/tests/xact3.c b/dlls/xactengine3_7/tests/xact3.c
|
||||
index 48a5f0a4374..d1e168d1489 100644
|
||||
--- a/dlls/xactengine3_7/tests/xact3.c
|
||||
+++ b/dlls/xactengine3_7/tests/xact3.c
|
||||
@@ -287,11 +287,72 @@ static void test_notifications(void)
|
||||
DeleteFileW(filename);
|
||||
}
|
||||
|
||||
+static void test_global_properties(void)
|
||||
+{
|
||||
+ HRESULT hr;
|
||||
+ IXACT3Engine *engine;
|
||||
+ XACTVARIABLEINDEX index;
|
||||
+ XACTVARIABLEVALUE value;
|
||||
+ HRSRC res;
|
||||
+ void *ptr;
|
||||
+ XACT_RUNTIME_PARAMETERS xparams = {0};
|
||||
+ WAVEFORMATEXTENSIBLE format;
|
||||
+ X3DAUDIO_HANDLE instance = {0};
|
||||
+
|
||||
+ hr = CoCreateInstance(&CLSID_XACTEngine, NULL, CLSCTX_INPROC_SERVER, &IID_IXACT3Engine, (void**)&engine);
|
||||
+
|
||||
+ if (FAILED(hr))
|
||||
+ {
|
||||
+ win_skip("IXACT3Engine Unsupported.\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ index = IXACT3Engine_GetGlobalVariableIndex(engine, "SpeedOfSound");
|
||||
+ ok(index == XACTVARIABLEINDEX_INVALID , "Found variable 0x%08x\n", index);
|
||||
+
|
||||
+ res = FindResourceW(NULL, L"globals.xgs", (LPCWSTR)RT_RCDATA);
|
||||
+
|
||||
+ ptr = LockResource(LoadResource(GetModuleHandleA(NULL), res));
|
||||
+
|
||||
+ xparams.lookAheadTime = 250;
|
||||
+ xparams.globalSettingsBufferSize = SizeofResource( GetModuleHandleA(NULL), res);
|
||||
+ xparams.pGlobalSettingsBuffer = ptr;
|
||||
+ hr = IXACT3Engine_Initialize(engine, &xparams);
|
||||
+ ok(hr == S_OK ||
|
||||
+ hr == XAUDIO2_E_INVALID_CALL /* Vista */, "got 0x%08lx\n", hr);
|
||||
+ if (FAILED(hr))
|
||||
+ goto end;
|
||||
+
|
||||
+ index = IXACT3Engine_GetGlobalVariableIndex(engine, "SpeedOfSound");
|
||||
+ ok(index != XACTVARIABLEINDEX_INVALID, "Failed to find variable %d\n", index);
|
||||
+
|
||||
+ value = 0.1f;
|
||||
+ hr = IXACT3Engine_GetGlobalVariable(engine, index, &value);
|
||||
+ ok(hr == S_OK, "got 0x%08lx\n", hr);
|
||||
+ ok(value == 0.0f, "got %f\n", value);
|
||||
+
|
||||
+ hr = IXACT3Engine_GetFinalMixFormat(engine, &format);
|
||||
+ ok(hr == S_OK, "got 0x%08lx\n", hr);
|
||||
+
|
||||
+ /* Invalid SpeedOfSound value */
|
||||
+ X3DAudioInitialize(format.dwChannelMask, value, instance);
|
||||
+ ok(instance[0] != 0, "got 0x%08x\n", instance[0]);
|
||||
+
|
||||
+ hr = IXACT3Engine_GetGlobalVariable(engine, index, &value);
|
||||
+ ok(hr == S_OK, "got 0x%08lx\n", hr);
|
||||
+ ok(value == 0.0f, "got %f\n", value);
|
||||
+
|
||||
+end:
|
||||
+ IXACT3Engine_Release(engine);
|
||||
+
|
||||
+}
|
||||
+
|
||||
START_TEST(xact3)
|
||||
{
|
||||
CoInitialize(NULL);
|
||||
|
||||
test_interfaces();
|
||||
+ test_global_properties();
|
||||
test_notifications();
|
||||
|
||||
CoUninitialize();
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
Fixes: [31476] Support Bully Scholarship Edition xactengine3_1.dll.
|
||||
Fixes: [38615] DSA: Drakensang Demo fails on IXACTEngine::Initialize
|
||||
Fixes: [41030] Pac-Man Museum requires xactengine3_7
|
||||
Fixes: [41045] Captain Morgane requires xactengine3_4
|
||||
Fixes: [48684] BlazBlue: Calamity Trigger requires for xactengine 3.3 interface.
|
||||
@@ -1 +1 @@
|
||||
Wine Staging 10.19
|
||||
Wine Staging 10.20
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user