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
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
c37f9f5091 | ||
|
b3f1bf0856 | ||
|
4de57fff29 | ||
|
52ba925f90 | ||
|
cc517dd949 | ||
|
a9be5cf2b0 | ||
|
df97d6c328 |
@@ -1,7 +1,7 @@
|
||||
From a34c3f550b16e84f907c637514f0645456420d65 Mon Sep 17 00:00:00 2001
|
||||
From 00991099552d2c3e24ef04d379755bdea2a80941 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
|
||||
Subject: [PATCH 1/1] kernelbase: Add support for moving reparse points with
|
||||
MoveFile*.
|
||||
|
||||
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
@@ -13,10 +13,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
4 files changed, 36 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c
|
||||
index b7d16410d75..dccae6cb565 100644
|
||||
index 266d59ef58d..d1fcf22f0d9 100644
|
||||
--- a/dlls/kernelbase/file.c
|
||||
+++ b/dlls/kernelbase/file.c
|
||||
@@ -2514,7 +2514,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH MoveFileWithProgressW( const WCHAR *source, const
|
||||
@@ -2535,7 +2535,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,
|
||||
@@ -26,10 +26,10 @@ index b7d16410d75..dccae6cb565 100644
|
||||
if (!set_ntstatus( status )) goto error;
|
||||
|
||||
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
|
||||
index 8b561e162e8..7b6e2776947 100644
|
||||
index 8d4de8ae29a..ddc0e024b2e 100644
|
||||
--- a/dlls/ntdll/tests/file.c
|
||||
+++ b/dlls/ntdll/tests/file.c
|
||||
@@ -6021,7 +6021,8 @@ static INT build_reparse_buffer(const WCHAR *filename, ULONG tag, ULONG flags,
|
||||
@@ -6025,7 +6025,8 @@ static INT build_reparse_buffer(const WCHAR *filename, ULONG tag, ULONG flags,
|
||||
|
||||
static void test_reparse_points(void)
|
||||
{
|
||||
@@ -39,7 +39,7 @@ index 8b561e162e8..7b6e2776947 100644
|
||||
static const WCHAR reparseW[] = {'\\','r','e','p','a','r','s','e',0};
|
||||
static const WCHAR targetW[] = {'\\','t','a','r','g','e','t',0};
|
||||
static const WCHAR parentW[] = {'\\','.','.','\\',0};
|
||||
@@ -6392,6 +6393,15 @@ static void test_reparse_points(void)
|
||||
@@ -6396,6 +6397,15 @@ static void test_reparse_points(void)
|
||||
wine_dbgstr_w(dest), wine_dbgstr_w(rel_target));
|
||||
CloseHandle(handle);
|
||||
|
||||
@@ -56,21 +56,19 @@ index 8b561e162e8..7b6e2776947 100644
|
||||
/* Cleanup */
|
||||
pRtlFreeUnicodeString(&nameW);
|
||||
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c
|
||||
index d3045c6c936..49afb57b2b6 100644
|
||||
index 681a9cf4c6f..7f8974c9b04 100644
|
||||
--- a/dlls/ntdll/unix/file.c
|
||||
+++ b/dlls/ntdll/unix/file.c
|
||||
@@ -5556,8 +5556,10 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
{
|
||||
FILE_RENAME_INFORMATION *info = ptr;
|
||||
@@ -5581,6 +5581,8 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
unsigned int flags;
|
||||
+ REPARSE_DATA_BUFFER *buffer = NULL;
|
||||
UNICODE_STRING name_str, redir;
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
+ REPARSE_DATA_BUFFER *buffer = NULL;
|
||||
+ ULONG buffer_len = 0;
|
||||
char *unix_name;
|
||||
|
||||
if (class == FileRenameInformation)
|
||||
@@ -5574,6 +5576,19 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
if (class == FileLinkInformation)
|
||||
@@ -5597,6 +5599,19 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
InitializeObjectAttributes( &attr, &name_str, OBJ_CASE_INSENSITIVE, info->RootDirectory, NULL );
|
||||
get_redirect( &attr, &redir );
|
||||
|
||||
@@ -90,7 +88,7 @@ index d3045c6c936..49afb57b2b6 100644
|
||||
status = nt_to_unix_file_name( &attr, &unix_name, FILE_OPEN_IF );
|
||||
if (status == STATUS_SUCCESS || status == STATUS_NO_SUCH_FILE)
|
||||
{
|
||||
@@ -5590,9 +5605,14 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
@@ -5613,9 +5628,14 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io,
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 2b9d0c9e955f188d5e5ba2311ed96ff9821f7d44 Mon Sep 17 00:00:00 2001
|
||||
From 40a771ea3f017a017f949063e7fbe8d1c8d5cf0c Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Mon, 30 Mar 2015 12:32:34 +0200
|
||||
Subject: [PATCH] server: Add a helper function set_sd_from_token_internal to
|
||||
@@ -10,10 +10,10 @@ Subject: [PATCH] server: Add a helper function set_sd_from_token_internal to
|
||||
2 files changed, 40 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/server/object.c b/server/object.c
|
||||
index 1a3bff65969..d46dbf01b6f 100644
|
||||
index 4f34d2979dc..fe9df4b2882 100644
|
||||
--- a/server/object.c
|
||||
+++ b/server/object.c
|
||||
@@ -563,8 +563,9 @@ struct security_descriptor *default_get_sd( struct object *obj )
|
||||
@@ -652,8 +652,9 @@ struct security_descriptor *default_get_sd( struct object *obj )
|
||||
return obj->sd;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ index 1a3bff65969..d46dbf01b6f 100644
|
||||
{
|
||||
struct security_descriptor new_sd, *new_sd_ptr;
|
||||
int present;
|
||||
@@ -573,8 +574,6 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -662,8 +663,6 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
struct acl *replaced_sacl = NULL;
|
||||
char *ptr;
|
||||
|
||||
@@ -34,7 +34,7 @@ index 1a3bff65969..d46dbf01b6f 100644
|
||||
new_sd.control = sd->control & ~SE_SELF_RELATIVE;
|
||||
|
||||
if (set_info & OWNER_SECURITY_INFORMATION && sd->owner_len)
|
||||
@@ -582,10 +581,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -671,10 +670,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
owner = sd_get_owner( sd );
|
||||
new_sd.owner_len = sd->owner_len;
|
||||
}
|
||||
@@ -48,7 +48,7 @@ index 1a3bff65969..d46dbf01b6f 100644
|
||||
}
|
||||
else if (token)
|
||||
{
|
||||
@@ -599,10 +598,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -688,10 +687,10 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
group = sd_get_group( sd );
|
||||
new_sd.group_len = sd->group_len;
|
||||
}
|
||||
@@ -62,7 +62,7 @@ index 1a3bff65969..d46dbf01b6f 100644
|
||||
}
|
||||
else if (token)
|
||||
{
|
||||
@@ -620,20 +619,20 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -709,20 +708,20 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
else if (set_info & LABEL_SECURITY_INFORMATION && present)
|
||||
{
|
||||
const struct acl *old_sacl = NULL;
|
||||
@@ -88,7 +88,7 @@ index 1a3bff65969..d46dbf01b6f 100644
|
||||
}
|
||||
else
|
||||
new_sd.sacl_len = 0;
|
||||
@@ -647,12 +646,12 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -736,12 +735,12 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -104,7 +104,7 @@ index 1a3bff65969..d46dbf01b6f 100644
|
||||
}
|
||||
else if (token)
|
||||
{
|
||||
@@ -668,7 +667,7 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -757,7 +756,7 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
if (!ptr)
|
||||
{
|
||||
free( replaced_sacl );
|
||||
@@ -113,7 +113,7 @@ index 1a3bff65969..d46dbf01b6f 100644
|
||||
}
|
||||
new_sd_ptr = (struct security_descriptor*)ptr;
|
||||
|
||||
@@ -679,9 +678,25 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
@@ -768,9 +767,25 @@ int set_sd_defaults_from_token( struct object *obj, const struct security_descri
|
||||
mem_append( ptr, dacl, new_sd.dacl_len );
|
||||
|
||||
free( replaced_sacl );
|
||||
@@ -143,7 +143,7 @@ index 1a3bff65969..d46dbf01b6f 100644
|
||||
|
||||
/** Set the security descriptor using the current primary token for defaults. */
|
||||
diff --git a/server/object.h b/server/object.h
|
||||
index e38913d430d..e61d29d91ea 100644
|
||||
index ecdac2669e1..7cf84ed281e 100644
|
||||
--- a/server/object.h
|
||||
+++ b/server/object.h
|
||||
@@ -175,6 +175,9 @@ extern struct fd *no_get_fd( struct object *obj );
|
||||
@@ -155,7 +155,7 @@ index e38913d430d..e61d29d91ea 100644
|
||||
+ unsigned int set_info, struct token *token );
|
||||
extern int set_sd_defaults_from_token( struct object *obj, const struct security_descriptor *sd,
|
||||
unsigned int set_info, struct token *token );
|
||||
extern WCHAR *no_get_full_name( struct object *obj, data_size_t *ret_len );
|
||||
extern WCHAR *no_get_full_name( struct object *obj, data_size_t max, data_size_t *ret_len );
|
||||
--
|
||||
2.45.2
|
||||
2.47.2
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 3b4b41d03d84560e9da893815d5f4b820bdb8be9 Mon Sep 17 00:00:00 2001
|
||||
From 1adf055005de5589212c1936d80cb676a899e4cf Mon Sep 17 00:00:00 2001
|
||||
From: Mark Jansen <learn0more+wine@gmail.com>
|
||||
Date: Fri, 27 Feb 2015 21:24:58 +0100
|
||||
Subject: [PATCH] version: Test for VerQueryValueA (try 2)
|
||||
@@ -18,10 +18,10 @@ suggested by nsivov from #winehackers.
|
||||
1 file changed, 124 insertions(+)
|
||||
|
||||
diff --git a/dlls/version/tests/info.c b/dlls/version/tests/info.c
|
||||
index 31d4a8d11dc..586e02d4a85 100644
|
||||
index b498f5331c8..c56c98d6b15 100644
|
||||
--- a/dlls/version/tests/info.c
|
||||
+++ b/dlls/version/tests/info.c
|
||||
@@ -715,6 +715,129 @@ static void test_VerQueryValue_EmptyData(void)
|
||||
@@ -723,6 +723,129 @@ static void test_VerQueryValue_EmptyData(void)
|
||||
HeapFree(GetProcessHeap(), 0, ver);
|
||||
}
|
||||
|
||||
@@ -151,14 +151,14 @@ index 31d4a8d11dc..586e02d4a85 100644
|
||||
static void test_extra_block(void)
|
||||
{
|
||||
WORD extra_block[] = {
|
||||
@@ -875,6 +998,7 @@ START_TEST(info)
|
||||
@@ -983,6 +1106,7 @@ START_TEST(info)
|
||||
test_32bit_win();
|
||||
test_VerQueryValueA();
|
||||
test_VerQueryValue_EmptyData();
|
||||
+ test_VerQueryValue_InvalidLength();
|
||||
test_extra_block();
|
||||
test_GetFileVersionInfoEx();
|
||||
}
|
||||
test_wow64_redirection();
|
||||
--
|
||||
2.47.2
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From c54c3405e484d6893c44e0d185256acdb4b39f6f Mon Sep 17 00:00:00 2001
|
||||
From 352ffa600188ae9a71129323febe30d5905e794c Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Mon, 26 May 2025 07:03:34 +1000
|
||||
Subject: [PATCH] Updated vkd3d to c4c7f10d99daa5d3efc036d74d5e09b6f1342407.
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 86947d34ad20c2245de3b035fe15f116f4e00949 Mon Sep 17 00:00:00 2001
|
||||
From 96b79c613055cef6f2da2015081adf61bd88becd Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 28 May 2025 07:14:59 +1000
|
||||
Subject: [PATCH] Updated vkd3d to 87ec2d98973432531d7d9d08dfc837376f91844c.
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,323 @@
|
||||
From e30c5257409bcdeb321524dc3459cb9e64165a91 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 5 Jun 2025 07:25:40 +1000
|
||||
Subject: [PATCH] Updated vkd3d to f1b36edc076117970b5a6d05a924b6c4248e082f.
|
||||
|
||||
---
|
||||
libs/vkd3d/libs/vkd3d-shader/dxil.c | 69 ++++++++++++---------
|
||||
libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c | 55 +++++++++-------
|
||||
libs/vkd3d/libs/vkd3d-shader/tpf.c | 36 ++++++-----
|
||||
3 files changed, 91 insertions(+), 69 deletions(-)
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/dxil.c b/libs/vkd3d/libs/vkd3d-shader/dxil.c
|
||||
index c85b644df15..ff56cd6284f 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/dxil.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/dxil.c
|
||||
@@ -6805,6 +6805,7 @@ static enum vkd3d_shader_opcode sm6_map_cast_op(uint64_t code, const struct sm6_
|
||||
{
|
||||
enum vkd3d_shader_opcode op = VKD3DSIH_INVALID;
|
||||
bool from_int, to_int, from_fp, to_fp;
|
||||
+ unsigned int from_width, to_width;
|
||||
bool is_valid = false;
|
||||
|
||||
from_int = sm6_type_is_integer(from);
|
||||
@@ -6828,66 +6829,58 @@ static enum vkd3d_shader_opcode sm6_map_cast_op(uint64_t code, const struct sm6_
|
||||
return VKD3DSIH_INVALID;
|
||||
}
|
||||
|
||||
- /* DXC emits minimum precision types as 16-bit. These must be emitted
|
||||
- * as 32-bit in VSIR, so all width extensions to 32 bits are no-ops. */
|
||||
switch (code)
|
||||
{
|
||||
case CAST_TRUNC:
|
||||
- /* nop or min precision. TODO: native 16-bit */
|
||||
- if (to->u.width == from->u.width || (to->u.width == 16 && from->u.width == 32))
|
||||
- op = VKD3DSIH_NOP;
|
||||
- else
|
||||
- op = VKD3DSIH_UTOU;
|
||||
+ op = VKD3DSIH_UTOU;
|
||||
is_valid = from_int && to_int && to->u.width <= from->u.width;
|
||||
break;
|
||||
+
|
||||
case CAST_ZEXT:
|
||||
+ op = VKD3DSIH_UTOU;
|
||||
+ is_valid = from_int && to_int && to->u.width >= from->u.width;
|
||||
+ break;
|
||||
+
|
||||
case CAST_SEXT:
|
||||
- /* nop or min precision. TODO: native 16-bit.
|
||||
- * Extension instructions could be emitted for min precision, but in Windows
|
||||
- * the AMD RX 580 simply drops such instructions, which makes sense as no
|
||||
- * assumptions should be made about any behaviour which depends on bit width. */
|
||||
- if (to->u.width == from->u.width || (to->u.width == 32 && from->u.width == 16))
|
||||
- {
|
||||
- op = VKD3DSIH_NOP;
|
||||
- is_valid = from_int && to_int;
|
||||
- }
|
||||
- else if (to->u.width > from->u.width)
|
||||
- {
|
||||
- op = (code == CAST_ZEXT) ? VKD3DSIH_UTOU : VKD3DSIH_ITOI;
|
||||
- VKD3D_ASSERT(from->u.width == 1 || to->u.width == 64);
|
||||
- is_valid = from_int && to_int;
|
||||
- }
|
||||
+ op = VKD3DSIH_ITOI;
|
||||
+ is_valid = from_int && to_int && to->u.width >= from->u.width;
|
||||
break;
|
||||
+
|
||||
case CAST_FPTOUI:
|
||||
op = VKD3DSIH_FTOU;
|
||||
is_valid = from_fp && to_int && to->u.width > 1;
|
||||
break;
|
||||
+
|
||||
case CAST_FPTOSI:
|
||||
op = VKD3DSIH_FTOI;
|
||||
is_valid = from_fp && to_int && to->u.width > 1;
|
||||
break;
|
||||
+
|
||||
case CAST_UITOFP:
|
||||
op = VKD3DSIH_UTOF;
|
||||
is_valid = from_int && to_fp;
|
||||
break;
|
||||
+
|
||||
case CAST_SITOFP:
|
||||
op = VKD3DSIH_ITOF;
|
||||
is_valid = from_int && to_fp;
|
||||
break;
|
||||
+
|
||||
case CAST_FPTRUNC:
|
||||
- /* TODO: native 16-bit */
|
||||
- op = (from->u.width == 64) ? VKD3DSIH_DTOF : VKD3DSIH_NOP;
|
||||
- is_valid = from_fp && to_fp;
|
||||
+ op = VKD3DSIH_DTOF;
|
||||
+ is_valid = from_fp && to_fp && to->u.width <= from->u.width;
|
||||
break;
|
||||
+
|
||||
case CAST_FPEXT:
|
||||
- /* TODO: native 16-bit */
|
||||
- op = (to->u.width == 64) ? VKD3DSIH_FTOD : VKD3DSIH_NOP;
|
||||
- is_valid = from_fp && to_fp;
|
||||
+ op = VKD3DSIH_FTOD;
|
||||
+ is_valid = from_fp && to_fp && to->u.width >= from->u.width;
|
||||
break;
|
||||
+
|
||||
case CAST_BITCAST:
|
||||
op = VKD3DSIH_MOV;
|
||||
is_valid = to->u.width == from->u.width;
|
||||
break;
|
||||
+
|
||||
default:
|
||||
FIXME("Unhandled cast op %"PRIu64".\n", code);
|
||||
vkd3d_shader_parser_error(&sm6->p, VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND,
|
||||
@@ -6904,6 +6897,20 @@ static enum vkd3d_shader_opcode sm6_map_cast_op(uint64_t code, const struct sm6_
|
||||
return VKD3DSIH_INVALID;
|
||||
}
|
||||
|
||||
+ /* 16-bit values are currently treated as 32-bit, because 16-bit is
|
||||
+ * interpreted as a minimum precision hint in SM 6.0, and we don't handle
|
||||
+ * SM > 6.0 yet. */
|
||||
+ from_width = from->u.width;
|
||||
+ if (from_width == 16)
|
||||
+ from_width = 32;
|
||||
+
|
||||
+ to_width = to->u.width;
|
||||
+ if (to_width == 16)
|
||||
+ to_width = 32;
|
||||
+
|
||||
+ if (from->class == to->class && from_width == to_width)
|
||||
+ op = VKD3DSIH_NOP;
|
||||
+
|
||||
return op;
|
||||
}
|
||||
|
||||
@@ -6955,9 +6962,11 @@ static void sm6_parser_emit_cast(struct sm6_parser *sm6, const struct dxil_recor
|
||||
|
||||
instruction_dst_param_init_ssa_scalar(ins, sm6);
|
||||
|
||||
- /* bitcast */
|
||||
+ /* VSIR bitcasts are represented by source registers with types different
|
||||
+ * from the types they were written with, rather than with different types
|
||||
+ * for the MOV source and destination. */
|
||||
if (handler_idx == VKD3DSIH_MOV)
|
||||
- src_param->reg.data_type = dst->reg.data_type;
|
||||
+ src_param->reg.data_type = ins->dst[0].reg.data_type;
|
||||
}
|
||||
|
||||
struct sm6_cmp_info
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
|
||||
index d4cd338f15a..d4e29e16b7c 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/hlsl_codegen.c
|
||||
@@ -12114,14 +12114,11 @@ static void sm4_generate_vsir_add_dcl_texture(struct hlsl_ctx *ctx,
|
||||
bool uav)
|
||||
{
|
||||
enum hlsl_regset regset = uav ? HLSL_REGSET_UAVS : HLSL_REGSET_TEXTURES;
|
||||
- struct vkd3d_shader_structured_resource *structured_resource;
|
||||
- struct vkd3d_shader_dst_param *dst_param;
|
||||
- struct vkd3d_shader_semantic *semantic;
|
||||
struct vkd3d_shader_instruction *ins;
|
||||
struct hlsl_type *component_type;
|
||||
enum vkd3d_shader_opcode opcode;
|
||||
bool multisampled;
|
||||
- unsigned int i, j;
|
||||
+ unsigned int i;
|
||||
|
||||
VKD3D_ASSERT(resource->regset == regset);
|
||||
VKD3D_ASSERT(hlsl_version_lt(ctx, 5, 1) || resource->bind_count == 1);
|
||||
@@ -12132,6 +12129,7 @@ static void sm4_generate_vsir_add_dcl_texture(struct hlsl_ctx *ctx,
|
||||
{
|
||||
unsigned int array_first = resource->index + i;
|
||||
unsigned int array_last = resource->index + i; /* FIXME: array end. */
|
||||
+ struct vkd3d_shader_resource *vsir_resource;
|
||||
|
||||
if (resource->var && !resource->var->objects_usage[regset][i].used)
|
||||
continue;
|
||||
@@ -12169,13 +12167,16 @@ static void sm4_generate_vsir_add_dcl_texture(struct hlsl_ctx *ctx,
|
||||
ctx->result = VKD3D_ERROR_OUT_OF_MEMORY;
|
||||
return;
|
||||
}
|
||||
- semantic = &ins->declaration.semantic;
|
||||
- structured_resource = &ins->declaration.structured_resource;
|
||||
- dst_param = &semantic->resource.reg;
|
||||
- vsir_dst_param_init(dst_param, uav ? VKD3DSPR_UAV : VKD3DSPR_RESOURCE, VKD3D_DATA_UNUSED, 0);
|
||||
|
||||
- if (uav && component_type->sampler_dim == HLSL_SAMPLER_DIM_STRUCTURED_BUFFER)
|
||||
- structured_resource->byte_stride = 4 * component_type->e.resource.format->reg_size[HLSL_REGSET_NUMERIC];
|
||||
+ if (component_type->sampler_dim == HLSL_SAMPLER_DIM_RAW_BUFFER)
|
||||
+ vsir_resource = &ins->declaration.raw_resource.resource;
|
||||
+ else if (component_type->sampler_dim == HLSL_SAMPLER_DIM_STRUCTURED_BUFFER)
|
||||
+ vsir_resource = &ins->declaration.structured_resource.resource;
|
||||
+ else
|
||||
+ vsir_resource = &ins->declaration.semantic.resource;
|
||||
+
|
||||
+ vsir_dst_param_init(&vsir_resource->reg, uav ? VKD3DSPR_UAV : VKD3DSPR_RESOURCE, VKD3D_DATA_UNUSED, 0);
|
||||
+
|
||||
if (uav && component_type->e.resource.rasteriser_ordered)
|
||||
ins->flags = VKD3DSUF_RASTERISER_ORDERED_VIEW;
|
||||
|
||||
@@ -12189,29 +12190,35 @@ static void sm4_generate_vsir_add_dcl_texture(struct hlsl_ctx *ctx,
|
||||
ctx->profile->major_version, ctx->profile->minor_version);
|
||||
}
|
||||
|
||||
- for (j = 0; j < 4; ++j)
|
||||
- semantic->resource_data_type[j] = sm4_generate_vsir_get_format_type(component_type);
|
||||
+ vsir_resource->range.first = array_first;
|
||||
+ vsir_resource->range.last = array_last;
|
||||
+ vsir_resource->range.space = resource->space;
|
||||
|
||||
- semantic->resource.range.first = array_first;
|
||||
- semantic->resource.range.last = array_last;
|
||||
- semantic->resource.range.space = resource->space;
|
||||
-
|
||||
- dst_param->reg.idx[0].offset = resource->id;
|
||||
- dst_param->reg.idx[1].offset = array_first;
|
||||
- dst_param->reg.idx[2].offset = array_last;
|
||||
- dst_param->reg.idx_count = 3;
|
||||
+ vsir_resource->reg.reg.idx[0].offset = resource->id;
|
||||
+ vsir_resource->reg.reg.idx[1].offset = array_first;
|
||||
+ vsir_resource->reg.reg.idx[2].offset = array_last;
|
||||
+ vsir_resource->reg.reg.idx_count = 3;
|
||||
|
||||
ins->resource_type = sm4_generate_vsir_get_resource_type(resource->component_type);
|
||||
- if (resource->component_type->sampler_dim == HLSL_SAMPLER_DIM_RAW_BUFFER)
|
||||
+
|
||||
+ if (component_type->sampler_dim == HLSL_SAMPLER_DIM_RAW_BUFFER)
|
||||
+ {
|
||||
ins->raw = true;
|
||||
- if (resource->component_type->sampler_dim == HLSL_SAMPLER_DIM_STRUCTURED_BUFFER)
|
||||
+ }
|
||||
+ else if (component_type->sampler_dim == HLSL_SAMPLER_DIM_STRUCTURED_BUFFER)
|
||||
{
|
||||
ins->structured = true;
|
||||
ins->resource_stride = 4 * component_type->e.resource.format->reg_size[HLSL_REGSET_NUMERIC];
|
||||
+ ins->declaration.structured_resource.byte_stride = ins->resource_stride;
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ for (unsigned int j = 0; j < 4; ++j)
|
||||
+ ins->declaration.semantic.resource_data_type[j] = sm4_generate_vsir_get_format_type(component_type);
|
||||
|
||||
- if (multisampled)
|
||||
- semantic->sample_count = component_type->sample_count;
|
||||
+ if (multisampled)
|
||||
+ ins->declaration.semantic.sample_count = component_type->sample_count;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/tpf.c b/libs/vkd3d/libs/vkd3d-shader/tpf.c
|
||||
index 08bdc3e645a..ae3fa1650bf 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/tpf.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/tpf.c
|
||||
@@ -3859,9 +3859,8 @@ static uint32_t pack_resource_data_type(const enum vkd3d_data_type *resource_dat
|
||||
|
||||
static void tpf_dcl_texture(const struct tpf_compiler *tpf, const struct vkd3d_shader_instruction *ins)
|
||||
{
|
||||
- const struct vkd3d_shader_structured_resource *structured_resource = &ins->declaration.structured_resource;
|
||||
- const struct vkd3d_shader_semantic *semantic = &ins->declaration.semantic;
|
||||
const struct vkd3d_shader_version *version = &tpf->program->shader_version;
|
||||
+ const struct vkd3d_shader_resource *resource;
|
||||
const struct vkd3d_sm4_opcode_info *info;
|
||||
struct sm4_instruction instr = {0};
|
||||
bool uav;
|
||||
@@ -3875,27 +3874,38 @@ static void tpf_dcl_texture(const struct tpf_compiler *tpf, const struct vkd3d_s
|
||||
|
||||
instr.opcode = info->opcode;
|
||||
|
||||
- instr.dsts[0] = semantic->resource.reg;
|
||||
- instr.dst_count = 1;
|
||||
-
|
||||
if (ins->opcode == VKD3DSIH_DCL || ins->opcode == VKD3DSIH_DCL_UAV_TYPED)
|
||||
{
|
||||
- instr.idx[0] = pack_resource_data_type(semantic->resource_data_type);
|
||||
+ instr.idx[0] = pack_resource_data_type(ins->declaration.semantic.resource_data_type);
|
||||
instr.idx_count = 1;
|
||||
+ instr.extra_bits |= ins->declaration.semantic.sample_count << VKD3D_SM4_RESOURCE_SAMPLE_COUNT_SHIFT;
|
||||
+ resource = &ins->declaration.semantic.resource;
|
||||
+ }
|
||||
+ else if (ins->opcode == VKD3DSIH_DCL_RESOURCE_RAW || ins->opcode == VKD3DSIH_DCL_UAV_RAW)
|
||||
+ {
|
||||
+ resource = &ins->declaration.raw_resource.resource;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ instr.byte_stride = ins->declaration.structured_resource.byte_stride;
|
||||
+ resource = &ins->declaration.structured_resource.resource;
|
||||
}
|
||||
|
||||
+ instr.dsts[0] = resource->reg;
|
||||
+ instr.dst_count = 1;
|
||||
+
|
||||
if (vkd3d_shader_ver_ge(version, 5, 1))
|
||||
{
|
||||
- instr.dsts[0].reg.idx[0].offset = semantic->resource.reg.reg.idx[0].offset;
|
||||
- instr.dsts[0].reg.idx[1].offset = semantic->resource.range.first;
|
||||
- instr.dsts[0].reg.idx[2].offset = semantic->resource.range.last;
|
||||
+ instr.dsts[0].reg.idx[0].offset = resource->reg.reg.idx[0].offset;
|
||||
+ instr.dsts[0].reg.idx[1].offset = resource->range.first;
|
||||
+ instr.dsts[0].reg.idx[2].offset = resource->range.last;
|
||||
instr.dsts[0].reg.idx_count = 3;
|
||||
|
||||
- instr.idx[instr.idx_count++] = semantic->resource.range.space;
|
||||
+ instr.idx[instr.idx_count++] = resource->range.space;
|
||||
}
|
||||
else
|
||||
{
|
||||
- instr.dsts[0].reg.idx[0].offset = semantic->resource.range.first;
|
||||
+ instr.dsts[0].reg.idx[0].offset = resource->range.first;
|
||||
instr.dsts[0].reg.idx_count = 1;
|
||||
}
|
||||
|
||||
@@ -3903,10 +3913,6 @@ static void tpf_dcl_texture(const struct tpf_compiler *tpf, const struct vkd3d_s
|
||||
instr.extra_bits |= ins->flags << VKD3D_SM5_UAV_FLAGS_SHIFT;
|
||||
|
||||
instr.extra_bits |= (sm4_resource_dimension(ins->resource_type) << VKD3D_SM4_RESOURCE_TYPE_SHIFT);
|
||||
- instr.extra_bits |= semantic->sample_count << VKD3D_SM4_RESOURCE_SAMPLE_COUNT_SHIFT;
|
||||
-
|
||||
- if (ins->structured)
|
||||
- instr.byte_stride = structured_resource->byte_stride;
|
||||
|
||||
write_sm4_instruction(tpf, &instr);
|
||||
}
|
||||
--
|
||||
2.47.2
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,138 @@
|
||||
From ec08bb5bfc8d67b975516a5a2dc34e9eaf7306ae Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 10 Jun 2025 07:48:09 +1000
|
||||
Subject: [PATCH] Updated vkd3d to 8da518f2cd4021ef8d642bbb8050881d7ff490c1.
|
||||
|
||||
---
|
||||
libs/vkd3d/libs/vkd3d-shader/msl.c | 45 +++++++++++++++++++++++++++++-
|
||||
1 file changed, 44 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libs/vkd3d/libs/vkd3d-shader/msl.c b/libs/vkd3d/libs/vkd3d-shader/msl.c
|
||||
index 62981811ee4..b3e251eff28 100644
|
||||
--- a/libs/vkd3d/libs/vkd3d-shader/msl.c
|
||||
+++ b/libs/vkd3d/libs/vkd3d-shader/msl.c
|
||||
@@ -382,6 +382,19 @@ static enum msl_data_type msl_print_register_name(struct vkd3d_string_buffer *bu
|
||||
return MSL_DATA_UNION;
|
||||
}
|
||||
|
||||
+ case VKD3DSPR_IDXTEMP:
|
||||
+ vkd3d_string_buffer_printf(buffer, "x%u", reg->idx[0].offset);
|
||||
+ msl_print_subscript(buffer, gen, reg->idx[1].rel_addr, reg->idx[1].offset);
|
||||
+ return MSL_DATA_UNION;
|
||||
+
|
||||
+ case VKD3DSPR_SAMPLEMASK:
|
||||
+ if (gen->program->shader_version.type != VKD3D_SHADER_TYPE_PIXEL)
|
||||
+ msl_compiler_error(gen, VKD3D_SHADER_ERROR_MSL_INTERNAL,
|
||||
+ "Internal compiler error: Unhandled sample coverage mask in shader type #%x.",
|
||||
+ gen->program->shader_version.type);
|
||||
+ vkd3d_string_buffer_printf(buffer, "o_mask");
|
||||
+ return MSL_DATA_FLOAT;
|
||||
+
|
||||
default:
|
||||
msl_compiler_error(gen, VKD3D_SHADER_ERROR_MSL_INTERNAL,
|
||||
"Internal compiler error: Unhandled register type %#x.", reg->type);
|
||||
@@ -901,6 +914,14 @@ static void msl_ret(struct msl_generator *gen, const struct vkd3d_shader_instruc
|
||||
vkd3d_string_buffer_printf(gen->buffer, "return;\n");
|
||||
}
|
||||
|
||||
+static void msl_dcl_indexable_temp(struct msl_generator *gen, const struct vkd3d_shader_instruction *ins)
|
||||
+{
|
||||
+ msl_print_indent(gen->buffer, gen->indent);
|
||||
+ vkd3d_string_buffer_printf(gen->buffer, "vkd3d_vec4 x%u[%u];\n",
|
||||
+ ins->declaration.indexable_temp.register_idx,
|
||||
+ ins->declaration.indexable_temp.register_size);
|
||||
+}
|
||||
+
|
||||
static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d_shader_instruction *ins)
|
||||
{
|
||||
gen->location = ins->location;
|
||||
@@ -908,11 +929,15 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d
|
||||
switch (ins->opcode)
|
||||
{
|
||||
case VKD3DSIH_ADD:
|
||||
+ case VKD3DSIH_IADD:
|
||||
msl_binop(gen, ins, "+");
|
||||
break;
|
||||
case VKD3DSIH_AND:
|
||||
msl_binop(gen, ins, "&");
|
||||
break;
|
||||
+ case VKD3DSIH_DCL_INDEXABLE_TEMP:
|
||||
+ msl_dcl_indexable_temp(gen, ins);
|
||||
+ break;
|
||||
case VKD3DSIH_NOP:
|
||||
break;
|
||||
case VKD3DSIH_DIV:
|
||||
@@ -933,6 +958,7 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d
|
||||
case VKD3DSIH_ENDIF:
|
||||
msl_end_block(gen);
|
||||
break;
|
||||
+ case VKD3DSIH_EQO:
|
||||
case VKD3DSIH_IEQ:
|
||||
msl_relop(gen, ins, "==");
|
||||
break;
|
||||
@@ -949,6 +975,7 @@ static void msl_handle_instruction(struct msl_generator *gen, const struct vkd3d
|
||||
msl_cast(gen, ins, "uint");
|
||||
break;
|
||||
case VKD3DSIH_GEO:
|
||||
+ case VKD3DSIH_IGE:
|
||||
msl_relop(gen, ins, ">=");
|
||||
break;
|
||||
case VKD3DSIH_IF:
|
||||
@@ -1276,6 +1303,12 @@ static void msl_generate_output_struct_declarations(struct msl_generator *gen)
|
||||
vkd3d_string_buffer_printf(buffer, "float shader_out_depth [[depth(any)]];\n");
|
||||
}
|
||||
|
||||
+ if (bitmap_is_set(gen->program->io_dcls, VKD3DSPR_SAMPLEMASK))
|
||||
+ {
|
||||
+ msl_print_indent(gen->buffer, 1);
|
||||
+ vkd3d_string_buffer_printf(buffer, "uint shader_out_mask [[sample_mask]];\n");
|
||||
+ }
|
||||
+
|
||||
vkd3d_string_buffer_printf(buffer, "};\n\n");
|
||||
}
|
||||
|
||||
@@ -1371,6 +1404,9 @@ static void msl_generate_entrypoint_epilogue(struct msl_generator *gen)
|
||||
}
|
||||
vkd3d_string_buffer_printf(buffer, ";\n");
|
||||
}
|
||||
+
|
||||
+ if (bitmap_is_set(gen->program->io_dcls, VKD3DSPR_SAMPLEMASK))
|
||||
+ vkd3d_string_buffer_printf(gen->buffer, " output.shader_out_mask = as_type<uint>(o_mask);\n");
|
||||
}
|
||||
|
||||
static void msl_generate_entrypoint(struct msl_generator *gen)
|
||||
@@ -1414,6 +1450,9 @@ static void msl_generate_entrypoint(struct msl_generator *gen)
|
||||
vkd3d_string_buffer_printf(gen->buffer, " vkd3d_vec4 %s_in[%u];\n", gen->prefix, 32);
|
||||
vkd3d_string_buffer_printf(gen->buffer, " vkd3d_vec4 %s_out[%u];\n", gen->prefix, 32);
|
||||
vkd3d_string_buffer_printf(gen->buffer, " vkd3d_%s_out output;\n", gen->prefix);
|
||||
+ if (bitmap_is_set(gen->program->io_dcls, VKD3DSPR_SAMPLEMASK))
|
||||
+ vkd3d_string_buffer_printf(gen->buffer, " float o_mask;\n");
|
||||
+ vkd3d_string_buffer_printf(gen->buffer, "\n");
|
||||
|
||||
msl_generate_entrypoint_prologue(gen);
|
||||
|
||||
@@ -1422,9 +1461,11 @@ static void msl_generate_entrypoint(struct msl_generator *gen)
|
||||
vkd3d_string_buffer_printf(gen->buffer, ", vertex_id");
|
||||
if (bitmap_is_set(gen->program->io_dcls, VKD3DSPR_DEPTHOUT))
|
||||
vkd3d_string_buffer_printf(gen->buffer, ", output.shader_out_depth");
|
||||
+ if (bitmap_is_set(gen->program->io_dcls, VKD3DSPR_SAMPLEMASK))
|
||||
+ vkd3d_string_buffer_printf(gen->buffer, ", o_mask");
|
||||
if (gen->program->descriptors.descriptor_count)
|
||||
vkd3d_string_buffer_printf(gen->buffer, ", descriptors");
|
||||
- vkd3d_string_buffer_printf(gen->buffer, ");\n");
|
||||
+ vkd3d_string_buffer_printf(gen->buffer, ");\n\n");
|
||||
|
||||
msl_generate_entrypoint_epilogue(gen);
|
||||
|
||||
@@ -1486,6 +1527,8 @@ static int msl_generator_generate(struct msl_generator *gen, struct vkd3d_shader
|
||||
vkd3d_string_buffer_printf(gen->buffer, ", uint vertex_id");
|
||||
if (bitmap_is_set(gen->program->io_dcls, VKD3DSPR_DEPTHOUT))
|
||||
vkd3d_string_buffer_printf(gen->buffer, ", thread float &o_depth");
|
||||
+ if (bitmap_is_set(gen->program->io_dcls, VKD3DSPR_SAMPLEMASK))
|
||||
+ vkd3d_string_buffer_printf(gen->buffer, ", thread float &o_mask");
|
||||
if (gen->program->descriptors.descriptor_count)
|
||||
vkd3d_string_buffer_printf(gen->buffer, ", constant descriptor *descriptors");
|
||||
vkd3d_string_buffer_printf(gen->buffer, ")\n{\n");
|
||||
--
|
||||
2.47.2
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
From 08807e33a1e1e60b3d3d24981bc2eac16b99b611 Mon Sep 17 00:00:00 2001
|
||||
From 3e1b93797f24faf9058a07e5b94dc883372162e8 Mon Sep 17 00:00:00 2001
|
||||
From: Ally Sommers <dropbear.sh@gmail.com>
|
||||
Date: Thu, 30 Jan 2025 23:47:16 +0100
|
||||
Subject: [PATCH] ws2_32: Add support for AF_UNIX sockets.
|
||||
@@ -15,7 +15,7 @@ multithreaded.
|
||||
4 files changed, 240 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c
|
||||
index a02194f843f..a0c5969c82f 100644
|
||||
index 5156bbfee10..1f484283757 100644
|
||||
--- a/dlls/ntdll/unix/socket.c
|
||||
+++ b/dlls/ntdll/unix/socket.c
|
||||
@@ -67,6 +67,8 @@
|
||||
@@ -44,7 +44,7 @@ index a02194f843f..a0c5969c82f 100644
|
||||
|
||||
struct async_recv_ioctl
|
||||
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|
||||
index 3a412b00c1e..5e5f13ef95c 100644
|
||||
index d4223e93bd1..ce0c6ce7856 100644
|
||||
--- a/dlls/ws2_32/socket.c
|
||||
+++ b/dlls/ws2_32/socket.c
|
||||
@@ -182,6 +182,19 @@ static const WSAPROTOCOL_INFOW supported_protocols[] =
|
||||
@@ -79,7 +79,7 @@ index 3a412b00c1e..5e5f13ef95c 100644
|
||||
default:
|
||||
return wine_dbg_sprintf("{ family %d }", a->sa_family);
|
||||
}
|
||||
@@ -1132,6 +1150,10 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
@@ -1151,6 +1169,10 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
HANDLE sync_event;
|
||||
NTSTATUS status;
|
||||
|
||||
@@ -87,10 +87,10 @@ index 3a412b00c1e..5e5f13ef95c 100644
|
||||
+ char *unix_path = NULL;
|
||||
+ int unix_varargs_size = 0;
|
||||
+
|
||||
TRACE( "socket %#Ix, addr %s\n", s, debugstr_sockaddr(addr) );
|
||||
TRACE( "socket %#Ix, addr %s, len %d\n", s, debugstr_sockaddr(addr), len );
|
||||
|
||||
if (!addr)
|
||||
@@ -1173,6 +1195,7 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
@@ -1192,6 +1214,7 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
@@ -98,7 +98,7 @@ index 3a412b00c1e..5e5f13ef95c 100644
|
||||
case AF_BTH:
|
||||
if (len < sizeof(SOCKADDR_BTH))
|
||||
{
|
||||
@@ -1180,6 +1203,15 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
@@ -1199,6 +1222,15 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
@@ -114,7 +114,7 @@ index 3a412b00c1e..5e5f13ef95c 100644
|
||||
default:
|
||||
FIXME( "unknown protocol %u\n", addr->sa_family );
|
||||
SetLastError( WSAEAFNOSUPPORT );
|
||||
@@ -1188,7 +1220,29 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
@@ -1207,7 +1239,29 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
|
||||
if (!(sync_event = get_sync_event())) return -1;
|
||||
|
||||
@@ -145,7 +145,7 @@ index 3a412b00c1e..5e5f13ef95c 100644
|
||||
ret_addr = malloc( len );
|
||||
if (!params || !ret_addr)
|
||||
{
|
||||
@@ -1198,10 +1252,14 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
@@ -1217,10 +1271,14 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
return -1;
|
||||
}
|
||||
params->unknown = 0;
|
||||
@@ -162,7 +162,7 @@ index 3a412b00c1e..5e5f13ef95c 100644
|
||||
if (status == STATUS_PENDING)
|
||||
{
|
||||
if (WaitForSingleObject( sync_event, INFINITE ) == WAIT_FAILED)
|
||||
@@ -1214,6 +1272,7 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
@@ -1233,6 +1291,7 @@ int WINAPI bind( SOCKET s, const struct sockaddr *addr, int len )
|
||||
|
||||
free( params );
|
||||
free( ret_addr );
|
||||
@@ -170,7 +170,7 @@ index 3a412b00c1e..5e5f13ef95c 100644
|
||||
|
||||
SetLastError( NtStatusToWSAError( status ) );
|
||||
return status ? -1 : 0;
|
||||
@@ -1254,11 +1313,24 @@ int WINAPI connect( SOCKET s, const struct sockaddr *addr, int len )
|
||||
@@ -1273,11 +1332,24 @@ int WINAPI connect( SOCKET s, const struct sockaddr *addr, int len )
|
||||
HANDLE sync_event;
|
||||
NTSTATUS status;
|
||||
|
||||
@@ -196,7 +196,7 @@ index 3a412b00c1e..5e5f13ef95c 100644
|
||||
{
|
||||
SetLastError( ERROR_NOT_ENOUGH_MEMORY );
|
||||
return -1;
|
||||
@@ -1266,10 +1338,13 @@ int WINAPI connect( SOCKET s, const struct sockaddr *addr, int len )
|
||||
@@ -1285,10 +1357,13 @@ int WINAPI connect( SOCKET s, const struct sockaddr *addr, int len )
|
||||
params->addr_len = len;
|
||||
params->synchronous = TRUE;
|
||||
memcpy( params + 1, addr, len );
|
||||
|
@@ -1 +1 @@
|
||||
Wine Staging 10.9
|
||||
Wine Staging 10.10
|
||||
|
@@ -1 +1 @@
|
||||
ffcbbf8f0152cd6919eabe19f0a9d5e015fe1a80
|
||||
885446556ce443b496e368b8f2c68807dcc7df0f
|
||||
|
Reference in New Issue
Block a user