winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
June 2023
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
1 participants
633 discussions
Start a n
N
ew thread
Joel Holdsworth : ntdll: Initial implementation of FileDispositionInformationEx.
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: wine Branch: master Commit: cc1d0e493d52741b05204fd371805a7d42be85b6 URL:
https://gitlab.winehq.org/wine/wine/-/commit/cc1d0e493d52741b05204fd371805a…
Author: Joel Holdsworth <joel(a)airwebreathe.org.uk> Date: Mon May 1 11:41:53 2023 +0100 ntdll: Initial implementation of FileDispositionInformationEx. This is required by Msys2 when running gpg-agent. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=54996
Signed-off-by: Joel Holdsworth <joel(a)airwebreathe.org.uk> --- dlls/ntdll/unix/file.c | 27 ++++++++++++++++++++++++++- dlls/wow64/file.c | 1 + include/wine/server_protocol.h | 4 ++-- server/fd.c | 8 ++++---- server/protocol.def | 2 +- server/request.h | 2 +- server/trace.c | 2 +- 7 files changed, 36 insertions(+), 10 deletions(-) diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c index aba4e1c694b..56b59413327 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -4755,7 +4755,32 @@ NTSTATUS WINAPI NtSetInformationFile( HANDLE handle, IO_STATUS_BLOCK *io, SERVER_START_REQ( set_fd_disp_info ) { req->handle = wine_server_obj_handle( handle ); - req->unlink = info->DoDeleteFile; + req->flags = info->DoDeleteFile ? FILE_DISPOSITION_DELETE : FILE_DISPOSITION_DO_NOT_DELETE; + status = wine_server_call( req ); + } + SERVER_END_REQ; + } + else status = STATUS_INVALID_PARAMETER_3; + break; + + case FileDispositionInformationEx: + if (len >= sizeof(FILE_DISPOSITION_INFORMATION_EX)) + { + FILE_DISPOSITION_INFORMATION_EX *info = ptr; + + if (info->Flags & FILE_DISPOSITION_POSIX_SEMANTICS) + FIXME( "FILE_DISPOSITION_POSIX_SEMANTICS not supported\n" ); + if (info->Flags & FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK) + FIXME( "FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK not supported\n" ); + if (info->Flags & FILE_DISPOSITION_ON_CLOSE) + FIXME( "FILE_DISPOSITION_ON_CLOSE not supported\n" ); + if (info->Flags & FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE) + FIXME( "FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE not supported\n" ); + + SERVER_START_REQ( set_fd_disp_info ) + { + req->handle = wine_server_obj_handle( handle ); + req->flags = info->Flags; status = wine_server_call( req ); } SERVER_END_REQ; diff --git a/dlls/wow64/file.c b/dlls/wow64/file.c index d32ef0b5455..fc867f79f28 100644 --- a/dlls/wow64/file.c +++ b/dlls/wow64/file.c @@ -787,6 +787,7 @@ NTSTATUS WINAPI wow64_NtSetInformationFile( UINT *args ) case FileIoPriorityHintInformation: /* FILE_IO_PRIORITY_HINT_INFO */ case FileValidDataLengthInformation: /* FILE_VALID_DATA_LENGTH_INFORMATION */ case FileDispositionInformation: /* FILE_DISPOSITION_INFORMATION */ + case FileDispositionInformationEx: /* FILE_DISPOSITION_INFORMATION_EX */ status = NtSetInformationFile( handle, iosb_32to64( &io, io32 ), ptr, len, class ); break; diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index d765697277b..1701a3e0420 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -5230,7 +5230,7 @@ struct set_fd_disp_info_request { struct request_header __header; obj_handle_t handle; - int unlink; + unsigned int flags; char __pad_20[4]; }; struct set_fd_disp_info_reply @@ -6418,7 +6418,7 @@ union generic_reply /* ### protocol_version begin ### */ -#define SERVER_PROTOCOL_VERSION 777 +#define SERVER_PROTOCOL_VERSION 778 /* ### protocol_version end ### */ diff --git a/server/fd.c b/server/fd.c index eaebe044f37..9388d36dcfd 100644 --- a/server/fd.c +++ b/server/fd.c @@ -2463,7 +2463,7 @@ static int is_dir_empty( int fd ) } /* set disposition for the fd */ -static void set_fd_disposition( struct fd *fd, int unlink ) +static void set_fd_disposition( struct fd *fd, unsigned int flags ) { struct stat st; @@ -2479,7 +2479,7 @@ static void set_fd_disposition( struct fd *fd, int unlink ) return; } - if (unlink) + if (flags & FILE_DISPOSITION_DELETE) { struct fd *fd_ptr; @@ -2524,7 +2524,7 @@ static void set_fd_disposition( struct fd *fd, int unlink ) } } - fd->closed->unlink = unlink ? 1 : 0; + fd->closed->unlink = (flags & FILE_DISPOSITION_DELETE) ? 1 : 0; if (fd->options & FILE_DELETE_ON_CLOSE) fd->closed->unlink = -1; } @@ -2955,7 +2955,7 @@ DECL_HANDLER(set_fd_disp_info) struct fd *fd = get_handle_fd_obj( current->process, req->handle, DELETE ); if (fd) { - set_fd_disposition( fd, req->unlink ); + set_fd_disposition( fd, req->flags ); release_object( fd ); } } diff --git a/server/protocol.def b/server/protocol.def index 54059b6b580..b690817ef1d 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -3641,7 +3641,7 @@ struct handle_info /* set fd disposition information */ @REQ(set_fd_disp_info) obj_handle_t handle; /* handle to a file or directory */ - int unlink; /* whether to unlink file on close */ + unsigned int flags; /* what actions should be taken when deleting a file */ @END diff --git a/server/request.h b/server/request.h index 20e27ebdce1..0e54dc30b85 100644 --- a/server/request.h +++ b/server/request.h @@ -2207,7 +2207,7 @@ C_ASSERT( FIELD_OFFSET(struct set_fd_completion_mode_request, handle) == 12 ); C_ASSERT( FIELD_OFFSET(struct set_fd_completion_mode_request, flags) == 16 ); C_ASSERT( sizeof(struct set_fd_completion_mode_request) == 24 ); C_ASSERT( FIELD_OFFSET(struct set_fd_disp_info_request, handle) == 12 ); -C_ASSERT( FIELD_OFFSET(struct set_fd_disp_info_request, unlink) == 16 ); +C_ASSERT( FIELD_OFFSET(struct set_fd_disp_info_request, flags) == 16 ); C_ASSERT( sizeof(struct set_fd_disp_info_request) == 24 ); C_ASSERT( FIELD_OFFSET(struct set_fd_name_info_request, handle) == 12 ); C_ASSERT( FIELD_OFFSET(struct set_fd_name_info_request, rootdir) == 16 ); diff --git a/server/trace.c b/server/trace.c index 4dbc5de352f..4242e70a835 100644 --- a/server/trace.c +++ b/server/trace.c @@ -4360,7 +4360,7 @@ static void dump_set_fd_completion_mode_request( const struct set_fd_completion_ static void dump_set_fd_disp_info_request( const struct set_fd_disp_info_request *req ) { fprintf( stderr, " handle=%04x", req->handle ); - fprintf( stderr, ", unlink=%d", req->unlink ); + fprintf( stderr, ", flags=%08x", req->flags ); } static void dump_set_fd_name_info_request( const struct set_fd_name_info_request *req )
1
0
0
0
Joel Holdsworth : include: Define FILE_DISPOSITION_INFORMATION_EX and friends.
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: wine Branch: master Commit: dedd130d9ecebef631ccb20eacb3ff85fae01040 URL:
https://gitlab.winehq.org/wine/wine/-/commit/dedd130d9ecebef631ccb20eacb3ff…
Author: Joel Holdsworth <joel(a)airwebreathe.org.uk> Date: Mon May 1 13:44:00 2023 +0100 include: Define FILE_DISPOSITION_INFORMATION_EX and friends. Signed-off-by: Joel Holdsworth <joel(a)airwebreathe.org.uk> --- dlls/ntdll/unix/file.c | 1 + include/winternl.h | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c index ff1618f31fd..aba4e1c694b 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -4336,6 +4336,7 @@ NTSTATUS WINAPI NtQueryInformationFile( HANDLE handle, IO_STATUS_BLOCK *io, 0, /* FileReplaceCompletionInformation */ 0, /* FileHardLinkFullIdInformation */ 0, /* FileIdExtdBothDirectoryInformation */ + 0, /* FileDispositionInformationEx */ }; struct stat st; diff --git a/include/winternl.h b/include/winternl.h index 455e199f3e1..59b04faeceb 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -1255,6 +1255,19 @@ typedef enum _FILE_INFORMATION_CLASS { FileReplaceCompletionInformation, FileHardLinkFullIdInformation, FileIdExtdBothDirectoryInformation, + FileDispositionInformationEx, + FileRenameInformationEx, + FileRenameInformationExBypassAccessCheck, + FileDesiredStorageClassInformation, + FileStatInformation, + FileMemoryPartitionInformation, + FileStatLxInformation, + FileCaseSensitiveInformation, + FileLinkInformationEx, + FileLinkInformationExBypassAccessCheck, + FileStorageReserveIdInformation, + FileCaseSensitiveInformationForceAccessCheck, + FileKnownFolderInformation, FileMaximumInformation } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; @@ -1424,6 +1437,17 @@ typedef struct _FILE_DISPOSITION_INFORMATION { BOOLEAN DoDeleteFile; } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; +typedef struct _FILE_DISPOSITION_INFORMATION_EX { + ULONG Flags; +} FILE_DISPOSITION_INFORMATION_EX, *PFILE_DISPOSITION_INFORMATION_EX; + +#define FILE_DISPOSITION_DO_NOT_DELETE 0x00000000 +#define FILE_DISPOSITION_DELETE 0x00000001 +#define FILE_DISPOSITION_POSIX_SEMANTICS 0x00000002 +#define FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK 0x00000004 +#define FILE_DISPOSITION_ON_CLOSE 0x00000008 +#define FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE 0x00000010 + typedef struct _FILE_POSITION_INFORMATION { LARGE_INTEGER CurrentByteOffset; } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION;
1
0
0
0
Nikolay Sivov : tests: Add another test for register reservation.
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: vkd3d Branch: master Commit: 3aee386e2fdf2e0bf65e7006a380f204a1e571f4 URL:
https://gitlab.winehq.org/wine/vkd3d/-/commit/3aee386e2fdf2e0bf65e7006a380f…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Jun 25 23:03:53 2023 +0200 tests: Add another test for register reservation. --- tests/register-reservations.shader_test | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/register-reservations.shader_test b/tests/register-reservations.shader_test index 26f4381d..d885b209 100644 --- a/tests/register-reservations.shader_test +++ b/tests/register-reservations.shader_test @@ -142,3 +142,17 @@ float4 main() : sv_target [test] draw quad probe all rgba (2.0, 2.0, 2.0, 99.0) + + +[pixel shader todo] +Texture2D tex1 : register(t2); +Texture2D tex2 : register(t2); + +float4 main() : sv_target +{ + return tex2.Load(int3(0, 0, 0)); +} + +[test] +todo draw quad +probe all rgba (2.0, 2.0, 2.0, 99.0)
1
0
0
0
Zebediah Figura : tests: Use compare_uint() in compare_float().
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: vkd3d Branch: master Commit: 69ecfdfb0bf9e5fddc3b74732f7db94e4948f24e URL:
https://gitlab.winehq.org/wine/vkd3d/-/commit/69ecfdfb0bf9e5fddc3b74732f7db…
Author: Zebediah Figura <zfigura(a)codeweavers.com> Date: Fri Jun 23 15:36:26 2023 -0500 tests: Use compare_uint() in compare_float(). Comparing the result of abs() is broken in the case that x - y == INT_MIN. --- tests/d3d12_test_utils.h | 7 ------- tests/utils.h | 12 ++++++++---- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/tests/d3d12_test_utils.h b/tests/d3d12_test_utils.h index 19105e19..ec5ba5c5 100644 --- a/tests/d3d12_test_utils.h +++ b/tests/d3d12_test_utils.h @@ -74,13 +74,6 @@ static void set_viewport(D3D12_VIEWPORT *vp, float x, float y, vp->MaxDepth = max_depth; } -static bool compare_uint(unsigned int x, unsigned int y, unsigned int max_diff) -{ - unsigned int diff = x > y ? x - y : y - x; - - return diff <= max_diff; -} - static bool compare_color(DWORD c1, DWORD c2, BYTE max_diff) { return compare_uint(c1 & 0xff, c2 & 0xff, max_diff) diff --git a/tests/utils.h b/tests/utils.h index 5fd7b086..67094190 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -82,6 +82,13 @@ static inline bool vkd3d_array_reserve(void **elements, size_t *capacity, size_t return true; } +static bool compare_uint(unsigned int x, unsigned int y, unsigned int max_diff) +{ + unsigned int diff = x > y ? x - y : y - x; + + return diff <= max_diff; +} + static bool compare_float(float f, float g, unsigned int ulps) { int x, y; @@ -101,10 +108,7 @@ static bool compare_float(float f, float g, unsigned int ulps) if (y < 0) y = INT_MIN - y; - if (abs(x - y) > ulps) - return false; - - return true; + return compare_uint(x, y, ulps); } static inline bool compare_uvec4(const struct uvec4 *v1, const struct uvec4 *v2)
1
0
0
0
Giovanni Mascellani : vkd3d-shader/hlsl: Fold logical expressions.
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: vkd3d Branch: master Commit: bdfec4886da209d60a532656ebee4b05ec307425 URL:
https://gitlab.winehq.org/wine/vkd3d/-/commit/bdfec4886da209d60a532656ebee4…
Author: Giovanni Mascellani <gmascellani(a)codeweavers.com> Date: Fri Jun 9 22:39:25 2023 +0200 vkd3d-shader/hlsl: Fold logical expressions. --- libs/vkd3d-shader/hlsl_constant_ops.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d-shader/hlsl_constant_ops.c index b9bca0d3..570773cd 100644 --- a/libs/vkd3d-shader/hlsl_constant_ops.c +++ b/libs/vkd3d-shader/hlsl_constant_ops.c @@ -223,7 +223,7 @@ static bool fold_add(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, cons return true; } -static bool fold_bit_and(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, +static bool fold_and(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, const struct hlsl_ir_constant *src1, const struct hlsl_ir_constant *src2) { enum hlsl_base_type type = dst_type->base_type; @@ -238,18 +238,19 @@ static bool fold_bit_and(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, { case HLSL_TYPE_INT: case HLSL_TYPE_UINT: + case HLSL_TYPE_BOOL: dst->u[k].u = src1->value.u[k].u & src2->value.u[k].u; break; default: - FIXME("Fold bit and for type %s.\n", debug_hlsl_type(ctx, dst_type)); + FIXME("Fold bit/logic and for type %s.\n", debug_hlsl_type(ctx, dst_type)); return false; } } return true; } -static bool fold_bit_or(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, +static bool fold_or(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, const struct hlsl_ir_constant *src1, const struct hlsl_ir_constant *src2) { enum hlsl_base_type type = dst_type->base_type; @@ -264,11 +265,12 @@ static bool fold_bit_or(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, c { case HLSL_TYPE_INT: case HLSL_TYPE_UINT: + case HLSL_TYPE_BOOL: dst->u[k].u = src1->value.u[k].u | src2->value.u[k].u; break; default: - FIXME("Fold bit or for type %s.\n", debug_hlsl_type(ctx, dst_type)); + FIXME("Fold bit/logic or for type %s.\n", debug_hlsl_type(ctx, dst_type)); return false; } } @@ -724,11 +726,13 @@ bool hlsl_fold_constant_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, break; case HLSL_OP2_BIT_AND: - success = fold_bit_and(ctx, &res, instr->data_type, arg1, arg2); + case HLSL_OP2_LOGIC_AND: + success = fold_and(ctx, &res, instr->data_type, arg1, arg2); break; case HLSL_OP2_BIT_OR: - success = fold_bit_or(ctx, &res, instr->data_type, arg1, arg2); + case HLSL_OP2_LOGIC_OR: + success = fold_or(ctx, &res, instr->data_type, arg1, arg2); break; case HLSL_OP2_BIT_XOR:
1
0
0
0
Giovanni Mascellani : vkd3d-shader/hlsl: Fold floating point minimum expressions.
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: vkd3d Branch: master Commit: 5a05fabe6299f60d942f18189ce5d53afe6774b1 URL:
https://gitlab.winehq.org/wine/vkd3d/-/commit/5a05fabe6299f60d942f18189ce5d…
Author: Giovanni Mascellani <gmascellani(a)codeweavers.com> Date: Fri Jun 9 22:30:56 2023 +0200 vkd3d-shader/hlsl: Fold floating point minimum expressions. --- libs/vkd3d-shader/hlsl_constant_ops.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d-shader/hlsl_constant_ops.c index edfc898e..b9bca0d3 100644 --- a/libs/vkd3d-shader/hlsl_constant_ops.c +++ b/libs/vkd3d-shader/hlsl_constant_ops.c @@ -535,6 +535,15 @@ static bool fold_min(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, cons { switch (type) { + case HLSL_TYPE_FLOAT: + case HLSL_TYPE_HALF: + dst->u[k].f = fminf(src1->value.u[k].f, src2->value.u[k].f); + break; + + case HLSL_TYPE_DOUBLE: + dst->u[k].d = fmin(src1->value.u[k].d, src2->value.u[k].d); + break; + case HLSL_TYPE_INT: dst->u[k].i = min(src1->value.u[k].i, src2->value.u[k].i); break;
1
0
0
0
Giovanni Mascellani : vkd3d-shader/hlsl: Fold floating point maximum expressions.
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: vkd3d Branch: master Commit: 2a2943c2cf962c90eda6732288b6bd0c3c873050 URL:
https://gitlab.winehq.org/wine/vkd3d/-/commit/2a2943c2cf962c90eda6732288b6b…
Author: Giovanni Mascellani <gmascellani(a)codeweavers.com> Date: Fri Jun 9 22:30:12 2023 +0200 vkd3d-shader/hlsl: Fold floating point maximum expressions. --- libs/vkd3d-shader/hlsl_constant_ops.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d-shader/hlsl_constant_ops.c index 00bacbf5..edfc898e 100644 --- a/libs/vkd3d-shader/hlsl_constant_ops.c +++ b/libs/vkd3d-shader/hlsl_constant_ops.c @@ -497,6 +497,15 @@ static bool fold_max(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, cons { switch (type) { + case HLSL_TYPE_FLOAT: + case HLSL_TYPE_HALF: + dst->u[k].f = fmaxf(src1->value.u[k].f, src2->value.u[k].f); + break; + + case HLSL_TYPE_DOUBLE: + dst->u[k].d = fmax(src1->value.u[k].d, src2->value.u[k].d); + break; + case HLSL_TYPE_INT: dst->u[k].i = max(src1->value.u[k].i, src2->value.u[k].i); break;
1
0
0
0
Giovanni Mascellani : vkd3d-shader/hlsl: Fold greater-than-or-equal comparisons.
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: vkd3d Branch: master Commit: 358d656262666de4a23bcb1f0675b2ac96a888ae URL:
https://gitlab.winehq.org/wine/vkd3d/-/commit/358d656262666de4a23bcb1f0675b…
Author: Giovanni Mascellani <gmascellani(a)codeweavers.com> Date: Fri Jun 9 22:27:03 2023 +0200 vkd3d-shader/hlsl: Fold greater-than-or-equal comparisons. --- libs/vkd3d-shader/hlsl_constant_ops.c | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d-shader/hlsl_constant_ops.c index 9232cd77..00bacbf5 100644 --- a/libs/vkd3d-shader/hlsl_constant_ops.c +++ b/libs/vkd3d-shader/hlsl_constant_ops.c @@ -406,6 +406,45 @@ static bool fold_equal(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, co return true; } +static bool fold_gequal(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, + const struct hlsl_ir_constant *src1, const struct hlsl_ir_constant *src2) +{ + unsigned int k; + + assert(dst_type->base_type == HLSL_TYPE_BOOL); + assert(src1->node.data_type->base_type == src2->node.data_type->base_type); + + for (k = 0; k < 4; ++k) + { + switch (src1->node.data_type->base_type) + { + case HLSL_TYPE_FLOAT: + case HLSL_TYPE_HALF: + dst->u[k].u = src1->value.u[k].f >= src2->value.u[k].f; + break; + + case HLSL_TYPE_DOUBLE: + dst->u[k].u = src1->value.u[k].d >= src2->value.u[k].d; + break; + + case HLSL_TYPE_INT: + dst->u[k].u = src1->value.u[k].i >= src2->value.u[k].i; + break; + + case HLSL_TYPE_UINT: + case HLSL_TYPE_BOOL: + dst->u[k].u = src1->value.u[k].u >= src2->value.u[k].u; + break; + + default: + vkd3d_unreachable(); + } + + dst->u[k].u *= ~0u; + } + return true; +} + static bool fold_less(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, const struct hlsl_ir_constant *src1, const struct hlsl_ir_constant *src2) { @@ -686,6 +725,10 @@ bool hlsl_fold_constant_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, success = fold_equal(ctx, &res, instr->data_type, arg1, arg2); break; + case HLSL_OP2_GEQUAL: + success = fold_gequal(ctx, &res, instr->data_type, arg1, arg2); + break; + case HLSL_OP2_LESS: success = fold_less(ctx, &res, instr->data_type, arg1, arg2); break;
1
0
0
0
Giovanni Mascellani : vkd3d-shader/hlsl: Fold less-than comparisons.
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: vkd3d Branch: master Commit: bf452b5907df5f4e92a73ba817c084709f7b5c73 URL:
https://gitlab.winehq.org/wine/vkd3d/-/commit/bf452b5907df5f4e92a73ba817c08…
Author: Giovanni Mascellani <gmascellani(a)codeweavers.com> Date: Fri Jun 9 22:25:51 2023 +0200 vkd3d-shader/hlsl: Fold less-than comparisons. --- libs/vkd3d-shader/hlsl_constant_ops.c | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d-shader/hlsl_constant_ops.c index 6ba059fa..9232cd77 100644 --- a/libs/vkd3d-shader/hlsl_constant_ops.c +++ b/libs/vkd3d-shader/hlsl_constant_ops.c @@ -406,6 +406,45 @@ static bool fold_equal(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, co return true; } +static bool fold_less(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, + const struct hlsl_ir_constant *src1, const struct hlsl_ir_constant *src2) +{ + unsigned int k; + + assert(dst_type->base_type == HLSL_TYPE_BOOL); + assert(src1->node.data_type->base_type == src2->node.data_type->base_type); + + for (k = 0; k < 4; ++k) + { + switch (src1->node.data_type->base_type) + { + case HLSL_TYPE_FLOAT: + case HLSL_TYPE_HALF: + dst->u[k].u = src1->value.u[k].f < src2->value.u[k].f; + break; + + case HLSL_TYPE_DOUBLE: + dst->u[k].u = src1->value.u[k].d < src2->value.u[k].d; + break; + + case HLSL_TYPE_INT: + dst->u[k].u = src1->value.u[k].i < src2->value.u[k].i; + break; + + case HLSL_TYPE_UINT: + case HLSL_TYPE_BOOL: + dst->u[k].u = src1->value.u[k].u < src2->value.u[k].u; + break; + + default: + vkd3d_unreachable(); + } + + dst->u[k].u *= ~0u; + } + return true; +} + static bool fold_max(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, const struct hlsl_ir_constant *src1, const struct hlsl_ir_constant *src2) { @@ -647,6 +686,10 @@ bool hlsl_fold_constant_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, success = fold_equal(ctx, &res, instr->data_type, arg1, arg2); break; + case HLSL_OP2_LESS: + success = fold_less(ctx, &res, instr->data_type, arg1, arg2); + break; + case HLSL_OP2_MAX: success = fold_max(ctx, &res, instr->data_type, arg1, arg2); break;
1
0
0
0
Giovanni Mascellani : vkd3d-shader/hlsl: Fold equality comparisons.
by Alexandre Julliard
27 Jun '23
27 Jun '23
Module: vkd3d Branch: master Commit: 488af1414431692eb16b1b43701db739198f9f15 URL:
https://gitlab.winehq.org/wine/vkd3d/-/commit/488af1414431692eb16b1b43701db…
Author: Giovanni Mascellani <gmascellani(a)codeweavers.com> Date: Fri Jun 9 22:23:40 2023 +0200 vkd3d-shader/hlsl: Fold equality comparisons. --- libs/vkd3d-shader/hlsl_constant_ops.c | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/libs/vkd3d-shader/hlsl_constant_ops.c b/libs/vkd3d-shader/hlsl_constant_ops.c index 1ae338fe..6ba059fa 100644 --- a/libs/vkd3d-shader/hlsl_constant_ops.c +++ b/libs/vkd3d-shader/hlsl_constant_ops.c @@ -370,6 +370,42 @@ static bool fold_div(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, cons return true; } +static bool fold_equal(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, + const struct hlsl_ir_constant *src1, const struct hlsl_ir_constant *src2) +{ + unsigned int k; + + assert(dst_type->base_type == HLSL_TYPE_BOOL); + assert(src1->node.data_type->base_type == src2->node.data_type->base_type); + + for (k = 0; k < 4; ++k) + { + switch (src1->node.data_type->base_type) + { + case HLSL_TYPE_FLOAT: + case HLSL_TYPE_HALF: + dst->u[k].u = src1->value.u[k].f == src2->value.u[k].f; + break; + + case HLSL_TYPE_DOUBLE: + dst->u[k].u = src1->value.u[k].d == src2->value.u[k].d; + break; + + case HLSL_TYPE_INT: + case HLSL_TYPE_UINT: + case HLSL_TYPE_BOOL: + dst->u[k].u = src1->value.u[k].u == src2->value.u[k].u; + break; + + default: + vkd3d_unreachable(); + } + + dst->u[k].u *= ~0u; + } + return true; +} + static bool fold_max(struct hlsl_ctx *ctx, struct hlsl_constant_value *dst, const struct hlsl_type *dst_type, const struct hlsl_ir_constant *src1, const struct hlsl_ir_constant *src2) { @@ -607,6 +643,10 @@ bool hlsl_fold_constant_exprs(struct hlsl_ctx *ctx, struct hlsl_ir_node *instr, success = fold_div(ctx, &res, instr->data_type, arg1, arg2, &instr->loc); break; + case HLSL_OP2_EQUAL: + success = fold_equal(ctx, &res, instr->data_type, arg1, arg2); + break; + case HLSL_OP2_MAX: success = fold_max(ctx, &res, instr->data_type, arg1, arg2); break;
1
0
0
0
← Newer
1
...
10
11
12
13
14
15
16
...
64
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Results per page:
10
25
50
100
200