Word 2016 queries a lot of font glyph bounding boxes and bitmaps with translation matrices. The
result of these queries is not cached because the transform matrix is not the identity matrix.
However, the translation offsets don't affect FreeType font operations at all, which can be
verified in ft_matrix_from_dwrite_matrix() called by get_glyph_transform(). So these results with
translation matrices can be cached as well. With this patch, Word 2016 stuttering is reduced
significantly.
--
v3: dwrite: Use cache when font transform matrix contains only translation offsets.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2482
Based on [a patch](https://www.winehq.org/mailman3/hyperkitty/list/wine-devel@winehq.or… by Jinoh Kang (@iamahuman) from February 2022.
I removed the need for the event object and implemented fast paths for Linux.
On macOS 10.14+ `thread_get_register_pointer_values` is called on every thread of the process.
On Linux 4.14+ `membarrier(MEMBARRIER_CMD_GLOBAL_EXPEDITED, ...)` is used.
On x86 Linux <= 4.13 and on other platforms `madvise(..., MADV_DONTNEED)` is used, which sends IPIs to all cores causing them to do a memory barrier.
--
v10: ntdll: Add thread_get_register_pointer_values-based implementation of NtFlushProcessWriteBuffers.
ntdll: Add sys_membarrier-based implementation of NtFlushProcessWriteBuffers.
ntdll: Add MADV_DONTNEED-based implementation of NtFlushProcessWriteBuffers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/741
This second MR in the Wayland series adds display configuration related enhancements, including providing more display information (like a proper/consistent name and position) to Wine and implementing GetCurrentDisplaySettings.
To get additional information from the Wayland compositor we need to use a protocol from the wayland-protocols collection, so we introduce support in the build system for protocol .xml files. These changes are introduced on their own in the first commit in the series, but we can squash it with the next commit, where the functionality is first used, if preferred.
To be able to provide a consistent view of the display settings across all processes, this MR adds a shared memory region containing an authoritative version of the Wayland output information (see the "winewayland.drv: Implement GetCurrentDisplaySettings." commit for more details).
Thanks!
--
v2: winewayland.drv: Update desktop window size on display changes.
winewayland.drv: Update registry settings after monitor changes.
winewayland.drv: Infer and report Windows monitor positions.
winewayland.drv: Handle wl_output objects only in the desktop process.
winewayland.drv: Implement GetCurrentDisplaySettings.
winewayland.drv: Use the output name reported by the compositor.
tools: Support building Wayland protocol source files.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2476
This is what it looks like:

--
v11: winecfg: Add an option to set WinRT app dark theme.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2183
According to the tests in 23b72ad, when we are reading a compressed stream, the type returned by `stream_props_GetMediaType()` should reflect compressed format even if we finnally output uncomressed data. For example, if we use wmvcore reader to read a WMV3 stream and output RGB24, the format information returned by `stream_props_GetMediaType()` should be WMV3, not RGB24.
This patch set is marked as draft now, because PATCH 2 and PATCH 3 is affected by 3e8936a2 in MR !2258. So I'll submit a newer version of this after !2258 get merged.
--
v4: winegstreamer: Use codec format in stream_props_GetMediaType.
winegstreamer: Implement amt_from_wg_format_video_wmv.
winegstreamer: Implement wg_format_from_caps_video_wmv.
winegstreamer: Implement wg_parser_stream_get_codec_format.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2387
* Deleting tasks & folders requires elevated privileges on Windows 7.
* Elevated privileges are needed to connect using a hostname.
* Use a winetest context in the scheduler loops.
* Use wide character string literals in scheduler.c.
* Store the xml definitions as wide string literals in scheduler.c.
* Use __HRESULT_FROM_WIN32() to initialize constants.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2518
Diablo IV (closed beta) depends on DEVPKEY_Device_MatchingDeviceId being present for GPUs (once it is able to match GPU luid to the one obtained from dxgi). It also depends on the MatchingDeviceId conating "ven_" and "dev_" substrings. Without those it doesn't consider the gpu as valid, which currently results in the game complaining about no GPUs found. I guess that maybe it is trying to filter out software GPUs and such this way.
As far as my testing goes, DEVPKEY_Device_MatchingDeviceId has this form with hardware GPUs only and maybe with the recent enough Win10 or Win11.
The other two device properties being added are also queried by the game although they are not strictly needed for it.
--
v5: win32u: Set DEVPKEY_Device_RemovalPolicy for GPUs.
win32u: Set DEVPKEY_Device_BusNumber for GPUs.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2449
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54701
---
The private draw texture did not get evicted on reset(), causing us to
try to read from a non-existent texture with the new contest. For more
details see comment 9 on the bug.
--
v2: ddraw/tests: Show that SYSMEM | 3DDEVICE surfaces don't consume vidmem.
ddraw/tests: Native 64 bit ddraw has a video memory leak.
wined3d: Make video memory accounting a per-resource flag.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2478
This node type is intended for use during parse-time.
While we parse an indexing expression such as `a[3]`, we don't know if
it will end up as part of an expression (in which case it must be folded
into a load) or it is for the lhs of a store (in which case it must be
folded into the store's deref). This node type is used to represent these accesses and no longer rely on building an `hlsl_ir_load` for each array index or struct record access.
`hlsl_ir_index` chains are lowered into derefs when (and if) they are used to specify the lhs of an assignment. All `hlsl_ir_index`es are lowered into `hlsl_ir_load`s with a compilation pass.
The changes introduced in these series allow to solve the problem with the return variable of function calls presented in !93, and to properly support assignment to matrix indexes, which is something we are not doing correctly.
Further patches (in my [index node](https://gitlab.winehq.org/fcasas/vkd3d/-/commits/index_node) branch) add support for indexing non-load expressions, such as `(a + b)[1]` and allowing to represent resource loads through `hlsl_ir_index`, so that `hlsl_ir_resource_store`s don't have to rely on `hlsl_ir_resource_load`s.
--
v6: vkd3d-shader/hlsl: Evaluate index before array.
vkd3d-shader/hlsl: Support column-major matrix indexing in the lhs.
vkd3d-shader/hlsl: Always load from a synthetic copy in add_load_component().
vkd3d-shader/hlsl: Remove add_load_index().
vkd3d-shader/hlsl: Use hlsl_ir_index for array and record access.
vkd3d-shader/hlsl: Introduce hlsl_ir_index.
tests: Test indexing of non-loads.
tests: Test side effects on indexes.
tests: Test matrix indexing on the lhs.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/124
a hotfix for the recent release of Persona 5 Royal.
--
v14: kernel32: Add semi-stub for RemoveDirectoryTransactedA/W().
kernel32: Add semi-stub for GetFileAttributesTransactedA/W().
kernel32: Add semi-stub for FindFirstFileTransactedA/W().
kernel32: Add semi-stub for DeleteFileTransactedA/W().
kernel32: Add semi-stub for CreateDirectoryTransactedA/W().
kernel32: Add semi-stub for CreateFileTransactedA/W().
https://gitlab.winehq.org/wine/wine/-/merge_requests/1145
Find only supports one Column to filter on.
The parser for this will be the same for both Find/Filter with the only different
is the Filter supports multiple columns.
In trying to keep this patch small, only WSTR/BSTR/Integer have been supported. (The Common cases).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2498
Currently, we can't use `add_load_index()` or `add_load_component()` on the loads to the `"retval"` variables that come from `add_call()` because these functions assume that the loaded value (`var_instr`) won't change between its location and the location and the new load to be created.
We can't get rid of this assumptions either, because, at least
`add_load_index()` may be used in the lhs of an assignment, and in that case we
can't store to the "deref" synthetic:
```
x[0] = 20;
```
Here I implemented the alternative solution of copying `"retval"` into a synthetic variable after each function call, but we may want to discuss this approach.
--
v2:
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/93
--
v3: Release 7.0.2.
gitlab: Add workaround for more strict git ownership check.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2402
This node type is intended for use during parse-time.
While we parse an indexing expression such as `a[3]`, we don't know if
it will end up as part of an expression (in which case it must be folded
into a load) or it is for the lhs of a store (in which case it must be
folded into the store's deref). This node type is used to represent these accesses and no longer rely on building an `hlsl_ir_load` for each array index or struct record access.
`hlsl_ir_index` chains are lowered into derefs when (and if) they are used to specify the lhs of an assignment. All `hlsl_ir_index`es are lowered into `hlsl_ir_load`s with a compilation pass.
The changes introduced in these series allow to solve the problem with the return variable of function calls presented in !93, and to properly support assignment to matrix indexes, which is something we are not doing correctly.
Further patches (in my [index node](https://gitlab.winehq.org/fcasas/vkd3d/-/commits/index_node) branch) add support for indexing non-load expressions, such as `(a + b)[1]` and allowing to represent resource loads through `hlsl_ir_index`, so that `hlsl_ir_resource_store`s don't have to rely on `hlsl_ir_resource_load`s.
--
v5: vkd3d-shader/hlsl: Evaluate index before array.
vkd3d-shader/hlsl: Support column-major matrix indexing in the lhs.
vkd3d-shader/hlsl: Always load from a synthetic copy in add_load_component().
vkd3d-shader/hlsl: Remove add_load_index().
vkd3d-shader/hlsl: Use hlsl_ir_index for array and record access.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/124
Windows has the LDAP_OPT_SSL option to turn SSL on or off after calling
ldap_init but before connecting to the server. OpenLDAP doesn't have
that option and instead expects a fully SSL connection to be requested
by passing one or more "ldaps://" URIs to ldap_init. However, OpenLDAP
also has an LDAP_OPT_URI option, which Windows does not have, that can
be used to change the URIs before connecting. And OpenLDAP already takes
care of converting "ldap://" or "ldaps://" to lowercase, so all we have
to do is find and replace that exact string in each URI in the list.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54727
--
v2: wldap32: Implement setting LDAP_OPT_SSL and add tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2508
* Deleting tasks & folders requires elevated privileges on Windows 7.
* Document SchRpcGetTaskInfo() calls that crash on Windows.
* Use a winetest context in the rpcapi loops.
* Use wide character string literals in rpcapi.c.
* Use __HRESULT_FROM_WIN32() to initialize constants.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2516
--
v3: dinput: Rewrite IDirectInput8_EnumDevicesBySemantics.
dinput: Implement DIDBAM_PRESERVE BuildActionMap flag.
dinput: Check device type in BuildActionMap for specific semantics.
dinput: Load action map from registry before resetting guid.
dinput: Trace formats in (Build|Set)ActionMap and EnumDevicesBySemantics.
dinput/tests: Add more IDirectInput8_EnumDevicesBySemantics tests.
dinput/tests: Test BuildActionMap cases with multiple devices.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2511
This series aims to improve GPU-side performance by avoiding VK_IMAGE_LAYOUT_GENERAL for textures that are used as render target and shader resource view. To do so, we have to transition them between VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL and VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL depending on use (and likewise for depth stencils).
It improves performance of Rocket League from 80 fps to 100 fps in a GPU limited configuration on my Radeon Polaris GPU.
This MR is marked as draft for now because I am not convinced by patch 3 yet. For actual submission I think I'll create separate MRs for patches 1-3 and 4-8.
Patch 2 introduces a validation layer error in the d3d11 tests that gets fixed in patch 3. No new test failures are introduced, although none of the existing ones are fixed either.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2455
--
v2: dinput: Rewrite IDirectInput8_EnumDevicesBySemantics.
dinput: Implement DIDBAM_PRESERVE BuildActionMap flag.
dinput: Check device type in BuildActionMap for specific semantics.
dinput: Load action map from registry before resetting guid.
dinput: Trace formats in (Build|Set)ActionMap and EnumDevicesBySemantics.
dinput/tests: Add more IDirectInput8_EnumDevicesBySemantics tests.
dinput/tests: Test BuildActionMap cases with multiple devices.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2511
Passing `NULL` or `INVALID_HANDLE_VALUE` into `IcmpCloseHandle` currently causes a segfault on wine, whereas it returns `FALSE` on windows.
It seems FFXIV occasionally does this.
--
v2: iphlpapi: Return FALSE for bad handles in IcmpCloseHandle
https://gitlab.winehq.org/wine/wine/-/merge_requests/2505
Windows has the LDAP_OPT_SSL option to turn SSL on or off after calling
ldap_init but before connecting to the server. OpenLDAP doesn't have
that option and instead expects a fully SSL connection to be requested
by passing one or more "ldaps://" URIs to ldap_init. However, OpenLDAP
also has an LDAP_OPT_URI option, which Windows does not have, that can
be used to change the URIs before connecting. And OpenLDAP already takes
care of converting "ldap://" or "ldaps://" to lowercase, so all we have
to do is find and replace that exact string in each URI in the list.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54727
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2508
This fixes two wine_todo-marked tests. However, I'm not entirely sure this is correct. The behavior of Report Count == 0 isn't entirely clear to me, but it does pass the test now. Some more tests might be needed.
cc @rbernon
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2499
Needed to prevent VR games from crashing when the user attempts to capture the desktop.
The reference count seems to start at 0, which I've never encountered before. Not sure if my code is incorrect.
--
v2: graphicscapture: Partially implement IGraphicsCaptureSessionStatics::IsSupported().
graphicscapture/tests: Add IGraphicsCaptureSessionStatics::IsSupported() tests.
graphicscapture: Add IGraphicsCaptureSessionStatics stub interface.
graphicscapture: Add stub DLL.
include: Add windows.graphics.capture.idl file.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2490
include: Fix c++ compiler error with msxml2.idl
This moves ISAXXMLFilter declaration after its base class ISAXXMLReader.
Otherwise the following error is shown in C++ mode
$ wineg++ test-msxml2.cpp
In file included from test-msxml2.cpp:1:
/usr/include/wine/windows/msxml2.h:16199:24: error: invalid use of incomplete type ‘struct ISAXXMLReader’
16199 | ISAXXMLFilter : public ISAXXMLReader
| ^~~~~~~~~~~~~
/usr/include/wine/windows/msxml2.h:644:19: note: forward declaration of ‘struct ISAXXMLReader’
644 | typedef interface ISAXXMLReader ISAXXMLReader;
| ^~~~~~~~~~~~~
winegcc: /usr/bin/g++ failed
Signed-off-by: Biswapriyo Nath <nathbappai(a)gmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2509
Word 2016 queries a lot of font glyph bounding boxes and bitmaps with translation matrices. The
result of these queries is not cached because the transform matrix is not the identity matrix.
However, the translation offsets don't affect FreeType font operations at all, which can be
verified in ft_matrix_from_dwrite_matrix() called by get_glyph_transform(). So these results with
translation matrices can be cached as well. With this patch, Word 2016 stuttering is reduced
significantly.
--
v2: dwrite: Use cache when font transform matrix contains only translation offsets.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2482
Passing `NULL` or `INVALID_HANDLE_VALUE` into `IcmpCloseHandle` currently causes a segfault on wine, whereas it returns `FALSE` on windows.
It seems FFXIV occasionally does this.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2505
This node type is intended for use during parse-time.
While we parse an indexing expression such as `a[3]`, we don't know if
it will end up as part of an expression (in which case it must be folded
into a load) or it is for the lhs of a store (in which case it must be
folded into the store's deref). This node type is used to represent these accesses and no longer rely on building an `hlsl_ir_load` for each array index or struct record access.
`hlsl_ir_index` chains are lowered into derefs when (and if) they are used to specify the lhs of an assignment. All `hlsl_ir_index`es are lowered into `hlsl_ir_load`s with a compilation pass.
The changes introduced in these series allow to solve the problem with the return variable of function calls presented in !93, and to properly support assignment to matrix indexes, which is something we are not doing correctly.
Further patches (in my [index node](https://gitlab.winehq.org/fcasas/vkd3d/-/commits/index_node) branch) add support for indexing non-load expressions, such as `(a + b)[1]` and allowing to represent resource loads through `hlsl_ir_index`, so that `hlsl_ir_resource_store`s don't have to rely on `hlsl_ir_resource_load`s.
--
v4: vkd3d-shader/hlsl: Evaluate index before array.
vkd3d-shader/hlsl: Support column-major matrix indexing in the lhs.
vkd3d-shader/hlsl: Always load from a synthetic copy in add_load_component().
vkd3d-shader/hlsl: Remove add_load_index().
vkd3d-shader/hlsl: Use hlsl_ir_index for array and record access.
vkd3d-shader/hlsl: Introduce hlsl_ir_index.
tests: Test indexing of non-loads.
tests: Test side effects on indexes.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/124
Fixes bug [53826](https://bugs.winehq.org/show_bug.cgi?id=53826).
--
v20: ntdll/tests: Increase margins in timer merging tests.
ntdll: Set xattr in NtCreateFile if inferred and requested attributes don't match.
ntdll: Only infer hidden attribute from file name if xattr is not present.
ntdll: Handle hidden file names inside get_file_info instead of after it.
ntdll: Do not open-code hidden file handling in get_dir_data_entry.
ntdll/tests: Add test for file attributes of files with names beginning with a dot.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1148
Removing WINED3D_RS entries from state tables and moving stubs to wined3d_device_apply_stateblock.
--
v2: wined3d: Move the WINED3D_RS_ENABLEADAPTIVETESSELLATION stub to wined3d_device_apply_stateblock.
wined3d: Move the WINED3D_RS_ADAPTIVETESS_W stub to wined3d_device_apply_stateblock.
wined3d: Move the WINED3D_RS_ADAPTIVETESS_Z stub to wined3d_device_apply_stateblock.
wined3d: Move the WINED3D_RS_ADAPTIVETESS_Y stub to wined3d_device_apply_stateblock.
wined3d: Move the WINED3D_RS_ADAPTIVETESS_X stub to wined3d_device_apply_stateblock.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2469
Word 2016 queries a lot of font glyph bounding boxes and bitmaps with translation matrices. The
result of these queries is not cached because the transform matrix is not the identity matrix.
However, the translation offsets don't affect FreeType font operations at all, which can be
verified in ft_matrix_from_dwrite_matrix() called by get_glyph_transform(). So these results with
translation matrices can be cached as well. With this patch, Word 2016 stuttering is reduced
significantly.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2482