You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a8a6d7b0ed | ||
|
f09ef9a3ca | ||
|
a877872a9a | ||
|
e2390e2637 | ||
|
999c6a11d6 | ||
|
dde6218e4e | ||
|
6336965159 | ||
|
18084e82a7 | ||
|
89d2f58ebd | ||
|
1db546cd7e | ||
|
5e73b4fe8b | ||
|
54295e8aaa |
@@ -1,14 +1,14 @@
|
||||
From 05dfee93e261b38037c370611ab0f63a2785a08c Mon Sep 17 00:00:00 2001
|
||||
From 956a8db76088ebaa82e0093ab0e62ed1ed2aa69b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 27 Feb 2016 00:04:10 +0100
|
||||
Subject: [PATCH] krnl386.exe16: Emulate GDT and LDT access.
|
||||
|
||||
---
|
||||
dlls/krnl386.exe16/instr.c | 65 ++++++++++++++++++++++++++++++++------
|
||||
1 file changed, 56 insertions(+), 9 deletions(-)
|
||||
dlls/krnl386.exe16/instr.c | 57 +++++++++++++++++++++++++++++++++-----
|
||||
1 file changed, 50 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/dlls/krnl386.exe16/instr.c b/dlls/krnl386.exe16/instr.c
|
||||
index 666ef71363f..c6d05b7a0c9 100644
|
||||
index 6af3ca30d59..bc05db6a719 100644
|
||||
--- a/dlls/krnl386.exe16/instr.c
|
||||
+++ b/dlls/krnl386.exe16/instr.c
|
||||
@@ -60,7 +60,8 @@ static inline void *get_stack( CONTEXT *context )
|
||||
@@ -21,7 +21,7 @@ index 666ef71363f..c6d05b7a0c9 100644
|
||||
{
|
||||
WORD limit;
|
||||
BYTE *base;
|
||||
@@ -68,19 +69,41 @@ struct idtr
|
||||
@@ -68,12 +69,30 @@ struct idtr
|
||||
#pragma pack(pop)
|
||||
|
||||
static LDT_ENTRY idt[256];
|
||||
@@ -32,43 +32,30 @@ index 666ef71363f..c6d05b7a0c9 100644
|
||||
+static BOOL emulate_idtr( BYTE *data, unsigned int data_size, unsigned int *offset )
|
||||
{
|
||||
- struct idtr ret;
|
||||
#if defined(__i386__) && defined(__GNUC__)
|
||||
+ struct dtr ret;
|
||||
__asm__( "sidtl %0" : "=m" (ret) );
|
||||
- return ret;
|
||||
+ *offset = data - ret.base;
|
||||
+ return (*offset <= ret.limit + 1 - data_size);
|
||||
+#else
|
||||
+ return FALSE;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
+static BOOL emulate_gdtr( BYTE *data, unsigned int data_size, unsigned int *offset )
|
||||
+{
|
||||
+#if defined(__i386__) && defined(__GNUC__)
|
||||
+ struct dtr ret;
|
||||
+ __asm__( "sgdtl %0" : "=m" (ret) );
|
||||
+ *offset = data - ret.base;
|
||||
+ return (*offset <= ret.limit + 1 - data_size);
|
||||
#else
|
||||
- ret.base = (BYTE *)idt;
|
||||
- ret.limit = sizeof(idt) - 1;
|
||||
+ return FALSE;
|
||||
#endif
|
||||
- return ret;
|
||||
}
|
||||
|
||||
+}
|
||||
+
|
||||
+static inline WORD get_ldt(void)
|
||||
+{
|
||||
+ WORD seg = 1;
|
||||
+#if defined(__i386__) && defined(__GNUC__)
|
||||
+ __asm__( "sldt %0" : "=m" (seg) );
|
||||
+#endif
|
||||
+ return seg;
|
||||
+}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* INSTR_ReplaceSelector
|
||||
@@ -705,10 +728,9 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context )
|
||||
|
||||
@@ -700,10 +719,9 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context )
|
||||
BYTE *data = INSTR_GetOperandAddr(context, instr + 1, long_addr,
|
||||
segprefix, &len);
|
||||
unsigned int data_size = (*instr == 0x8b) ? (long_op ? 4 : 2) : 1;
|
||||
@@ -81,7 +68,7 @@ index 666ef71363f..c6d05b7a0c9 100644
|
||||
{
|
||||
idt[1].LimitLow = 0x100; /* FIXME */
|
||||
idt[2].LimitLow = 0x11E; /* FIXME */
|
||||
@@ -722,6 +744,31 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context )
|
||||
@@ -717,6 +735,31 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context )
|
||||
context->Eip += prefixlen + len + 1;
|
||||
return ExceptionContinueExecution;
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From e27b26f100bedf8f8374333ce9026fd96ed9102b Mon Sep 17 00:00:00 2001
|
||||
From d529517d43a4747ab61dde9c6eff4a14a261d678 Mon Sep 17 00:00:00 2001
|
||||
From: Torge Matthies <tmatthies@codeweavers.com>
|
||||
Date: Fri, 25 Oct 2024 10:47:30 +0200
|
||||
Subject: [PATCH] mf/tests: Add network bytestream tests.
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] mf/tests: Add network bytestream tests.
|
||||
1 file changed, 347 insertions(+)
|
||||
|
||||
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c
|
||||
index 1070e9c1b2d..9d41b05fad3 100644
|
||||
index a02f2859f91..db58a55d145 100644
|
||||
--- a/dlls/mf/tests/mf.c
|
||||
+++ b/dlls/mf/tests/mf.c
|
||||
@@ -4908,6 +4908,7 @@ static void test_evr(void)
|
||||
@@ -5190,6 +5190,7 @@ static void test_evr(void)
|
||||
|
||||
hr = IMFActivate_ActivateObject(activate, &IID_IMFMediaSink, (void **)&sink);
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
@@ -19,8 +19,8 @@ index 1070e9c1b2d..9d41b05fad3 100644
|
||||
|
||||
check_interface(sink, &IID_IMFMediaSinkPreroll, TRUE);
|
||||
check_interface(sink, &IID_IMFVideoRenderer, TRUE);
|
||||
@@ -7130,6 +7131,351 @@ static void test_media_session_thinning(void)
|
||||
ok(hr == S_OK, "Shutdown failure, hr %#lx.\n", hr);
|
||||
@@ -8040,6 +8041,351 @@ static void test_media_session_seek(void)
|
||||
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
}
|
||||
|
||||
+static void test_network_bytestream(void)
|
||||
@@ -371,14 +371,14 @@ index 1070e9c1b2d..9d41b05fad3 100644
|
||||
START_TEST(mf)
|
||||
{
|
||||
init_functions();
|
||||
@@ -7165,6 +7511,7 @@ START_TEST(mf)
|
||||
@@ -8075,6 +8421,7 @@ START_TEST(mf)
|
||||
test_media_session_Start();
|
||||
test_MFEnumDeviceSources();
|
||||
test_media_session_Close();
|
||||
+ test_network_bytestream();
|
||||
test_media_session_source_shutdown();
|
||||
test_media_session_thinning();
|
||||
}
|
||||
test_media_session_seek();
|
||||
--
|
||||
2.47.2
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 5b94720ada0b6f75ddff60cf19472a2685dbeaf0 Mon Sep 17 00:00:00 2001
|
||||
From 6b96b85136b078f9779c07e5c0daecd7b1006e09 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
|
||||
Date: Sun, 4 Sep 2022 13:19:16 -0600
|
||||
Subject: [PATCH] ntdll: Allow reparse points to target the applicable Unix
|
||||
@@ -9,14 +9,14 @@ the user to follow the symlink outside of Wine.
|
||||
|
||||
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
---
|
||||
dlls/ntdll/unix/file.c | 118 +++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 118 insertions(+)
|
||||
dlls/ntdll/unix/file.c | 90 ++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 90 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index c54fd1119e1..33f26ceb89a 100644
|
||||
index f83a30d36ed..234a0fa7397 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -3712,6 +3712,114 @@ static NTSTATUS get_reparse_target( UNICODE_STRING *nt_target, REPARSE_DATA_BUFF
|
||||
@@ -3714,6 +3714,86 @@ static NTSTATUS get_reparse_target( UNICODE_STRING *nt_target, REPARSE_DATA_BUFF
|
||||
}
|
||||
|
||||
|
||||
@@ -24,12 +24,9 @@ index c54fd1119e1..33f26ceb89a 100644
|
||||
+NTSTATUS create_reparse_target( int dirfd, const char *unix_src, int depth, const char *link_path,
|
||||
+ REPARSE_DATA_BUFFER *buffer )
|
||||
+{
|
||||
+ ULONG nt_path_len = PATH_MAX, unix_path_len = PATH_MAX;
|
||||
+ UNICODE_STRING nt_target, nt_full_target;
|
||||
+ ULONG unix_target_len = PATH_MAX;
|
||||
+ char *unix_path = NULL, *d;
|
||||
+ char target_path[PATH_MAX];
|
||||
+ OBJECT_ATTRIBUTES attr;
|
||||
+ int nt_target_len;
|
||||
+ char *unix_target;
|
||||
+ int is_relative;
|
||||
@@ -41,8 +38,6 @@ index c54fd1119e1..33f26ceb89a 100644
|
||||
+ /* if the target path is relative then turn the source path into an NT path */
|
||||
+ if (is_relative)
|
||||
+ {
|
||||
+ UNICODE_STRING nt_path_tmp;
|
||||
+
|
||||
+ /* resolve the NT path of the source */
|
||||
+ unix_path = malloc( strlen(unix_src) + 2 );
|
||||
+ if (!unix_path) return STATUS_NO_MEMORY;
|
||||
@@ -55,17 +50,7 @@ index c54fd1119e1..33f26ceb89a 100644
|
||||
+ if (status != STATUS_SUCCESS)
|
||||
+ return status;
|
||||
+ /* re-resolve the unix path for the source */
|
||||
+ nt_path_tmp.Buffer = nt_path;
|
||||
+ nt_path_tmp.Length = wcslen(nt_path) * sizeof(WCHAR);
|
||||
+ InitializeObjectAttributes( &attr, &nt_path_tmp, 0, 0, NULL );
|
||||
+ for (;;)
|
||||
+ {
|
||||
+ unix_path = malloc( unix_path_len );
|
||||
+ if (!unix_path) return STATUS_NO_MEMORY;
|
||||
+ status = wine_nt_to_unix_file_name( &attr, unix_path, &unix_path_len, FILE_OPEN_IF );
|
||||
+ if (status != STATUS_BUFFER_TOO_SMALL) break;
|
||||
+ free( unix_path );
|
||||
+ }
|
||||
+ status = ntdll_get_unix_file_name( nt_path, &unix_path, FILE_OPEN_IF );
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
@@ -85,21 +70,8 @@ index c54fd1119e1..33f26ceb89a 100644
|
||||
+ wcscpy( nt_full_target.Buffer, nt_path );
|
||||
+ free( nt_path );
|
||||
+ memcpy( &nt_full_target.Buffer[wcslen(nt_full_target.Buffer)], nt_target.Buffer, nt_target_len );
|
||||
+ nt_full_target.Length = wcslen( nt_full_target.Buffer ) * sizeof(WCHAR);
|
||||
+ /* find the unix path for the target */
|
||||
+ InitializeObjectAttributes( &attr, &nt_full_target, 0, 0, NULL );
|
||||
+ for (;;)
|
||||
+ {
|
||||
+ unix_target = malloc( unix_target_len );
|
||||
+ if (!unix_target)
|
||||
+ {
|
||||
+ status = STATUS_NO_MEMORY;
|
||||
+ goto cleanup;
|
||||
+ }
|
||||
+ status = wine_nt_to_unix_file_name( &attr, unix_target, &unix_target_len, FILE_OPEN_IF );
|
||||
+ if (status != STATUS_BUFFER_TOO_SMALL) break;
|
||||
+ free( unix_target );
|
||||
+ }
|
||||
+ status = ntdll_get_unix_file_name( nt_full_target.Buffer, &unix_target, FILE_OPEN_IF );
|
||||
+ /* create the symlink to the target at the last metadata location */
|
||||
+ if (status == STATUS_SUCCESS || status == STATUS_NO_SUCH_FILE)
|
||||
+ {
|
||||
@@ -131,7 +103,7 @@ index c54fd1119e1..33f26ceb89a 100644
|
||||
/*
|
||||
* Retrieve the unix name corresponding to a file handle, remove that directory, and then symlink
|
||||
* the requested directory to the location of the old directory.
|
||||
@@ -3845,6 +3953,16 @@ NTSTATUS create_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
|
||||
@@ -3847,6 +3927,16 @@ NTSTATUS create_reparse_point(HANDLE handle, REPARSE_DATA_BUFFER *buffer)
|
||||
link_dir_fd = fd;
|
||||
}
|
||||
|
||||
|
@@ -1,15 +1,15 @@
|
||||
From 41e1d1b92a179f00f391919b47732e7eab9f8337 Mon Sep 17 00:00:00 2001
|
||||
From efd73d7778d8c083337bda1ad162618841c368e0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Tue, 30 Nov 2021 16:32:34 +0300
|
||||
Subject: [PATCH] ntdll: Implement opening files through nt device paths.
|
||||
|
||||
---
|
||||
dlls/ntdll/tests/file.c | 25 +++++++-
|
||||
dlls/ntdll/unix/file.c | 134 +++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 156 insertions(+), 3 deletions(-)
|
||||
dlls/ntdll/unix/file.c | 135 +++++++++++++++++++++++++++++++++++++++-
|
||||
2 files changed, 157 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 16489f4b29c..11769021b32 100644
|
||||
index 25381caf313..7f048572e03 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -139,18 +139,22 @@ static void WINAPI apc( void *arg, IO_STATUS_BLOCK *iosb, ULONG reserved )
|
||||
@@ -63,10 +63,10 @@ index 16489f4b29c..11769021b32 100644
|
||||
|
||||
static void open_file_test(void)
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index a39079efa97..c76d91cdf68 100644
|
||||
index 542a314ea81..68587cbef11 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -4688,7 +4688,7 @@ static NTSTATUS nt_to_unix_file_name_no_root( FILE_OBJECT *fileobj, char **unix_
|
||||
@@ -4593,7 +4593,7 @@ static NTSTATUS nt_to_unix_file_name_no_root( FILE_OBJECT *fileobj, char **unix_
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@@ -75,7 +75,7 @@ index a39079efa97..c76d91cdf68 100644
|
||||
*
|
||||
* Convert a file name from NT namespace to Unix namespace.
|
||||
*
|
||||
@@ -4696,7 +4696,7 @@ static NTSTATUS nt_to_unix_file_name_no_root( FILE_OBJECT *fileobj, char **unix_
|
||||
@@ -4601,7 +4601,7 @@ static NTSTATUS nt_to_unix_file_name_no_root( FILE_OBJECT *fileobj, char **unix_
|
||||
* element doesn't have to exist; in that case STATUS_NO_SUCH_FILE is
|
||||
* returned, but the unix name is still filled in properly.
|
||||
*/
|
||||
@@ -84,7 +84,7 @@ index a39079efa97..c76d91cdf68 100644
|
||||
{
|
||||
HANDLE rootdir = attr->RootDirectory;
|
||||
enum server_fd_type type;
|
||||
@@ -4775,6 +4775,136 @@ reparse:
|
||||
@@ -4680,6 +4680,137 @@ reparse:
|
||||
}
|
||||
|
||||
|
||||
@@ -218,8 +218,9 @@ index a39079efa97..c76d91cdf68 100644
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
/******************************************************************************
|
||||
* wine_nt_to_unix_file_name
|
||||
+
|
||||
/******************************************************************
|
||||
* collapse_path
|
||||
*
|
||||
--
|
||||
2.47.2
|
||||
|
@@ -1,2 +1,3 @@
|
||||
Fixes: [37487] Resolve \\SystemRoot\\ prefix when opening files
|
||||
Fixes: Implement opening files through nt device paths
|
||||
Depends: ntdll-Junction_Points
|
||||
|
@@ -1 +1,2 @@
|
||||
Fixes: [20732] OleLoadPictureEx - First look for specific size if specified.
|
||||
Fixes: [42273] Biet-O-Matic default icons in icon bar loaded in wrong size
|
||||
|
@@ -0,0 +1,42 @@
|
||||
From b85edfd29c3ae8a67ddf079554cbf3ca11775a21 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Mon, 14 Jul 2025 10:15:14 +1000
|
||||
Subject: [PATCH] msado15: ADOConnectionConstruction15::WrapDSOandSession semi
|
||||
stub
|
||||
|
||||
---
|
||||
dlls/msado15/connection.c | 18 +++++++++++++++++-
|
||||
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/msado15/connection.c b/dlls/msado15/connection.c
|
||||
index 568eb8b12c9..ded4a401b27 100644
|
||||
--- a/dlls/msado15/connection.c
|
||||
+++ b/dlls/msado15/connection.c
|
||||
@@ -954,7 +954,23 @@ static HRESULT WINAPI adoconstruct_WrapDSOandSession(ADOConnectionConstruction15
|
||||
{
|
||||
struct connection *connection = impl_from_ADOConnectionConstruction15( iface );
|
||||
FIXME("%p, %p, %p\n", connection, dso, session);
|
||||
- return E_NOTIMPL;
|
||||
+
|
||||
+ if (connection->session)
|
||||
+ IUnknown_Release( connection->session );
|
||||
+ connection->session = session;
|
||||
+ if (connection->session)
|
||||
+ IUnknown_AddRef(connection->session);
|
||||
+
|
||||
+ if (connection->dso)
|
||||
+ IDBInitialize_Release( connection->dso );
|
||||
+ connection->dso = NULL;
|
||||
+ if (dso)
|
||||
+ IUnknown_QueryInterface( dso, &IID_IDBInitialize, (void**)&connection->dso );
|
||||
+
|
||||
+ if (dso && session)
|
||||
+ connection->state = adStateOpen;
|
||||
+
|
||||
+ return S_OK;
|
||||
}
|
||||
|
||||
struct ADOConnectionConstruction15Vtbl ado_construct_vtbl =
|
||||
--
|
||||
2.47.2
|
||||
|
@@ -0,0 +1,27 @@
|
||||
From 95c5e58d9f78cefe837f4ce1c9d56fa0e70e3ed6 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 22 Jul 2025 12:06:15 +1000
|
||||
Subject: [PATCH] oleaut32: Treat Interfaces with TYPEFLAG_FDISPATCHABLE flags
|
||||
as an IDispatch.
|
||||
|
||||
---
|
||||
dlls/oleaut32/typelib.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
|
||||
index 856e07c2811..cc0dc4f3c18 100644
|
||||
--- a/dlls/oleaut32/typelib.c
|
||||
+++ b/dlls/oleaut32/typelib.c
|
||||
@@ -7917,7 +7917,8 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo(
|
||||
pTypeInfoImpl->ref = 0;
|
||||
list_init(&pTypeInfoImpl->custdata_list);
|
||||
|
||||
- if (This->typeattr.typekind == TKIND_INTERFACE)
|
||||
+ if (This->typeattr.typekind == TKIND_INTERFACE &&
|
||||
+ This->typeattr.wTypeFlags & TYPEFLAG_FDISPATCHABLE)
|
||||
pTypeInfoImpl->typeattr.typekind = TKIND_DISPATCH;
|
||||
else
|
||||
pTypeInfoImpl->typeattr.typekind = TKIND_INTERFACE;
|
||||
--
|
||||
2.47.2
|
||||
|
2
patches/oleaut32_typelib_dispatch/definition
Normal file
2
patches/oleaut32_typelib_dispatch/definition
Normal file
@@ -0,0 +1,2 @@
|
||||
Fixes: [31675] oleaut32: Use correct flags to detect IDispatch interfaces.
|
||||
Fixes: msado15: Implement ADOConnectionConstruction15::WrapDSOandSession.
|
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,135 @@
|
||||
From 4874b0a352c091813dc9372412ac76e976b5eb64 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 17 Jul 2025 07:20:27 +1000
|
||||
Subject: [PATCH] Updated vkd3d to ba545669cd09682960f5da17b9131780642daf8e.
|
||||
|
||||
---
|
||||
libs/vkd3d/libs/vkd3d-shader/ir.c | 46 +++++++++++++++++++
|
||||
.../libs/vkd3d-shader/vkd3d_shader_private.h | 1 +
|
||||
libs/vkd3d/libs/vkd3d/state.c | 20 ++------
|
||||
3 files changed, 51 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/ir.c b/libs/vkd3d/libs/vkd3d-shader/ir.c
|
||||
index fe7e8c54dfb..b060ccbb2bc 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/ir.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/ir.c
|
||||
@@ -10479,6 +10479,7 @@ static void vsir_validate_descriptors(struct validation_context *ctx)
|
||||
for (i = 0; i < descriptors->descriptor_count; ++i)
|
||||
{
|
||||
const struct vkd3d_shader_descriptor_info1 *descriptor = &descriptors->descriptors[i];
|
||||
+ uint32_t flags_mask = 0, uav_flags_mask = 0;
|
||||
|
||||
if (descriptor->type >= VKD3D_SHADER_DESCRIPTOR_TYPE_COUNT)
|
||||
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_TYPE,
|
||||
@@ -10507,6 +10508,43 @@ static void vsir_validate_descriptors(struct validation_context *ctx)
|
||||
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_COUNT,
|
||||
"Descriptor %u has invalid descriptor count %u starting at index %u.",
|
||||
i, descriptor->count, descriptor->register_index);
|
||||
+
|
||||
+ switch (descriptor->type)
|
||||
+ {
|
||||
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_SRV:
|
||||
+ flags_mask = VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_RAW_BUFFER;
|
||||
+ break;
|
||||
+
|
||||
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_UAV:
|
||||
+ flags_mask = VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_COUNTER
|
||||
+ | VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_READ
|
||||
+ | VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_ATOMICS
|
||||
+ | VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_RAW_BUFFER;
|
||||
+ uav_flags_mask = VKD3DSUF_GLOBALLY_COHERENT
|
||||
+ | VKD3DSUF_RASTERISER_ORDERED_VIEW
|
||||
+ | VKD3DSUF_ORDER_PRESERVING_COUNTER;
|
||||
+ break;
|
||||
+
|
||||
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_CBV:
|
||||
+ break;
|
||||
+
|
||||
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER:
|
||||
+ flags_mask = VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_SAMPLER_COMPARISON_MODE;
|
||||
+ break;
|
||||
+
|
||||
+ case VKD3D_SHADER_DESCRIPTOR_TYPE_FORCE_32BIT:
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (descriptor->flags & ~flags_mask)
|
||||
+ validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_FLAGS,
|
||||
+ "Descriptor %u of type %#x has invalid flags %#x.",
|
||||
+ i, descriptor->type, descriptor->flags);
|
||||
+
|
||||
+ if (descriptor->uav_flags & ~uav_flags_mask)
|
||||
+ validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_FLAGS,
|
||||
+ "Descriptor %u of type %#x has invalid UAV flags %#x.",
|
||||
+ i, descriptor->type, descriptor->uav_flags);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11441,6 +11479,14 @@ static const struct vsir_validator_instruction_desc vsir_validator_instructions[
|
||||
[VSIR_OP_IEQ] = {1, 2, vsir_validate_integer_comparison_operation},
|
||||
[VSIR_OP_IGE] = {1, 2, vsir_validate_integer_comparison_operation},
|
||||
[VSIR_OP_ILT] = {1, 2, vsir_validate_integer_comparison_operation},
|
||||
+ [VSIR_OP_IMAD] = {1, 3, vsir_validate_integer_elementwise_operation},
|
||||
+ [VSIR_OP_IMAX] = {1, 2, vsir_validate_integer_elementwise_operation},
|
||||
+ [VSIR_OP_IMIN] = {1, 2, vsir_validate_integer_elementwise_operation},
|
||||
+ [VSIR_OP_INE] = {1, 2, vsir_validate_integer_comparison_operation},
|
||||
+ [VSIR_OP_INEG] = {1, 1, vsir_validate_integer_elementwise_operation},
|
||||
+ [VSIR_OP_IREM] = {1, 2, vsir_validate_integer_elementwise_operation},
|
||||
+ [VSIR_OP_ISHL] = {1, 2, vsir_validate_integer_elementwise_operation},
|
||||
+ [VSIR_OP_ISHR] = {1, 2, vsir_validate_integer_elementwise_operation},
|
||||
[VSIR_OP_DCL_GS_INSTANCES] = {0, 0, vsir_validate_dcl_gs_instances},
|
||||
[VSIR_OP_DCL_HS_MAX_TESSFACTOR] = {0, 0, vsir_validate_dcl_hs_max_tessfactor},
|
||||
[VSIR_OP_DCL_INDEX_RANGE] = {0, 0, vsir_validate_dcl_index_range},
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
index 5d7fc6e1209..978af0a2d17 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/vkd3d_shader_private.h
|
||||
@@ -265,6 +265,7 @@ enum vkd3d_shader_error
|
||||
VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_TYPE = 9024,
|
||||
VKD3D_SHADER_ERROR_VSIR_INVALID_RESOURCE_TYPE = 9025,
|
||||
VKD3D_SHADER_ERROR_VSIR_INVALID_DESCRIPTOR_COUNT = 9026,
|
||||
+ VKD3D_SHADER_ERROR_VSIR_INVALID_FLAGS = 9027,
|
||||
|
||||
VKD3D_SHADER_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY = 9300,
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d/state.c b/libs/vkd3d/libs/vkd3d/state.c
|
||||
index 0a5bd1122e3..9e9811bf922 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d/state.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d/state.c
|
||||
@@ -3232,17 +3232,6 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
|
||||
uint32_t mask;
|
||||
HRESULT hr;
|
||||
|
||||
- static const DWORD default_ps_code[] =
|
||||
- {
|
||||
-#if 0
|
||||
- ps_4_0
|
||||
- ret
|
||||
-#endif
|
||||
- 0x43425844, 0x19cbf606, 0x18f562b9, 0xdaeed4db, 0xc324aa46, 0x00000001, 0x00000060, 0x00000003,
|
||||
- 0x0000002c, 0x0000003c, 0x0000004c, 0x4e475349, 0x00000008, 0x00000000, 0x00000008, 0x4e47534f,
|
||||
- 0x00000008, 0x00000000, 0x00000008, 0x52444853, 0x0000000c, 0x00000040, 0x00000003, 0x0100003e,
|
||||
- };
|
||||
- static const D3D12_SHADER_BYTECODE default_ps = {default_ps_code, sizeof(default_ps_code)};
|
||||
static const struct
|
||||
{
|
||||
enum VkShaderStageFlagBits stage;
|
||||
@@ -3401,11 +3390,10 @@ static HRESULT d3d12_pipeline_state_init_graphics(struct d3d12_pipeline_state *s
|
||||
|
||||
if (!desc->ps.pShaderBytecode)
|
||||
{
|
||||
- if (FAILED(hr = create_shader_stage(device, &graphics->stages[graphics->stage_count],
|
||||
- VK_SHADER_STAGE_FRAGMENT_BIT, &default_ps, NULL)))
|
||||
- goto fail;
|
||||
-
|
||||
- ++graphics->stage_count;
|
||||
+ for (i = 0; i < rt_count; i++)
|
||||
+ {
|
||||
+ graphics->blend_attachments[i].colorWriteMask = 0;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.50.1
|
||||
|
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
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,27 @@
|
||||
From f6b63c8ce9c20192debbe97b2e9673e382842b89 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 25 Jul 2025 07:41:13 +1000
|
||||
Subject: [PATCH] Updated vkd3d to b3e367b099cb65d79c5b0044134a02e7e9c285a5.
|
||||
|
||||
---
|
||||
libs/vkd3d/libs/vkd3d-shader/tpf.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/tpf.c b/libs/vkd3d/libs/vkd3d-shader/tpf.c
|
||||
index 2175298a0db..bdb2083e09a 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/tpf.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/tpf.c
|
||||
@@ -1434,9 +1434,7 @@ static void init_sm4_lookup_tables(struct vkd3d_sm4_lookup_tables *lookup)
|
||||
* i -> VSIR_DATA_I32
|
||||
* u -> VSIR_DATA_U32
|
||||
* O -> VSIR_DATA_OPAQUE
|
||||
- * R -> VKD3D_DATA_RESOURCE
|
||||
- * S -> VKD3D_DATA_SAMPLER
|
||||
- * U -> VKD3D_DATA_UAV
|
||||
+ * * -> VSIR_DATA_UNUSED
|
||||
*/
|
||||
static const struct vkd3d_sm4_opcode_info opcode_table[] =
|
||||
{
|
||||
--
|
||||
2.50.1
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user