On Sat Mar 16 23:31:12 2024 +0000, Nikolay Sivov wrote:
> So, no bigger plan other than fixing up idls basically?
I currently don't have one.
Through wine-staging patches for FreeThreadedXMLHTTP60 interface rely on this change.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1060#note_65058
On Sat Mar 16 23:31:12 2024 +0000, Alistair Leslie-Hughes wrote:
> First brings the headers inline with the SDK.
> Second allows you to build against the wine headers without getting a
> link time GUID duplicates.
So, no bigger plan other than fixing up idls basically?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1060#note_65057
First part of Proton shared memory series. The full branch can be seen at https://gitlab.winehq.org/rbernon/wine/-/commits/mr/shared-memories.
--
v24: win32u: Use the desktop shared data for GetCursorPos.
server: Move the last cursor time to the desktop session object.
server: Move the cursor position to the desktop session object.
win32u: Open desktop shared objects from session mapping.
server: Allocate shared session object for desktops.
win32u: Open the global session shared mapping.
include: Add ReadNoFence64 inline helpers.
server: Create a global session shared mapping.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3103
This is a series of commits tackling dead key state handling and scan code to vkey mapping improvements (especially for French and German keyboards).
* https://gitlab.winehq.org/mzent/wine/-/commit/6c5c90b746cc341049eec216e3bb9…: Simplifies the logic a bit there and also correctly null-terminates dead keys in ToUnicodeEx
* https://gitlab.winehq.org/mzent/wine/-/commit/a05e2fc5068a22cae94bc800b4972…: Windows does not do it and some applications misbehave with this, fully fixed later in https://gitlab.winehq.org/mzent/wine/-/commit/7cf1f6a00f17b0626126448f77a1c…
* https://gitlab.winehq.org/mzent/wine/-/commit/4bd96932139a22f2c3b1311e44c43…: MSDN states single keys are always uppercased there.
* https://gitlab.winehq.org/mzent/wine/-/commit/bac8e97d7e6a7494672d76f5fc586…: There is a bug in `CFStringCompare` with the flags used there currently, resulting in the comparison of the identical buffers "ß" and "ß" to be false. In any case `UCCompareText` behaves correctly and is much faster there.
* https://gitlab.winehq.org/mzent/wine/-/commit/bac5f485a09fbddd39efb8f2c0d87…: I think this was an accidental mistake there, going through all modifiers first per symbol almost always results in the wrong match being made. The logic is adjusted there now to be similar to the other iterations involving `char_matches_string`.
* https://gitlab.winehq.org/mzent/wine/-/commit/ffde55df4ae3f6d53198839c58356…https://gitlab.winehq.org/mzent/wine/-/commit/a453d0d4c89c59c3e1ba6c24d2d0f…: Adds additional symbol vkey mappings (now completely maps a German Macintosh and PC keyboard correctly). There are still some minor defects with the French layout (around the ú region), however changing the symbol mapping there will cause issues with other layouts I think, since the wrong match happens very early there in the priority in these cases. With this change at least the number row is now behaving correctly. Additionally the French Macintosh keyboard layout is further complicated by the "=" key being next to right shift, which is in conflict with pretty much any other keyboard layout. To fix this properly would require a partial rewrite of the heuristic being used or a new approach, but most likely more of a long term project.
* https://gitlab.winehq.org/mzent/wine/-/commit/7cf1f6a00f17b0626126448f77a1c…: Gives dead keys friendly names in `GetKeyNameFriendlyText`, just like Windows does. I tried to be as exhaustive as possible, but if there are any missing the mapping can be easily extended.
All in all the incorrect scan code to vkey mapping is usually not that tragic, since an application would need to be aware of the layout and have its own mapping of scan codes of each (FFXIV does this though). The French layout corrections are now "good enough" to behave correctly for all the hotbar slots being assigned there with these changes now though.
--
v2: winemac.drv: Give dead keys a friendly name in GetKeyNameText.
winemac.drv: Add additional French symbol vkeys.
winemac.drv: Add additional German symbol vkeys.
winemac.drv: Resolve symbol vkeys first without modifiers.
winemac.drv: Use UCCompareText in char_matches_string.
winemac.drv: Uppercase single keys in GetKeyNameText.
winemac.drv: Do not append " dead" to dead keycodes in GetKeyNameText.
winemac.drv: Handle length of dead keycodes in ToUnicodeEx correctly.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5319
A couple of win32u auto-repeat related improvements:
1. Cancel auto-repeat only if the repeat key is released (not other keys).
2. Cancel previous key auto-repeat when starting a new one for a different window (see commit message for more info).
I have kept the changes minimal, which can lead to a few extraneous `kill_system_timer` calls. To improve on this would require more extensive tracking/clearing of `thread_info->key_repeat_msg`.
--
v2: win32u: Cancel previous key auto-repeat when starting a new one.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5323
This is a change from the default behavior in macdrv for as long as it's existed, as far as I can tell. Previously, gaining a dock icon was a one-way path. However, that doesn't jive with the way taskbar entries work on Windows; if an app has no windows, it doesn't appear in the taskbar. This patch attempts to remedy cases where an app winds up with superfluous dock icons for exe's that no longer have windows (looking at you, basically every launcher and Steam).
The major concern I can see with this is that if an app closes all of its windows but does not exit, there will be no indication that it is still running. Two thoughts on that:
1. That *should* be an anomalous case, such as the app hanging on exit.
2. Effectively the same behavior would happen on Windows.
I would love to hear any other thoughts about this change. I'm open (though I would not prefer it) to defaulting the registry key to false if that would alleviate any concerns.
--
v3: winemac.drv: Hide app's dock icon when it wouldn't have a taskbar item on Windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5188
With no compiler support, there's no easy way to verify shader runner support for d3d11 UAV counters works, so I've left it out for now.
--
v5: vkd3d-shader/dxil: Implement DX intrinsic BufferUpdateCounter.
tests/hlsl: Add UAV counter tests.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/714
This is the last part for handling the minidump slow downs:
- it removes the integration of RUNTIME_INFO chunks for x86_64
- adds fallback mechanism to read this unwind info from winedbg side.
Some remarks:
- it looks a bit awkward that SymFunctionTableAccess reads PE
information from PE image on dbghelp side, while the unwind
information reading is read (in this MR) from debugger side
- some testings with native show that:
+ unwind info (inside StackWalk calls) is read through the
read memory handler (so delegated to debugger)
+ there's no fallback from the read memory handler
- so this looks like the minimal things to do
- however, there could be additional fallback in dbghelp
(like in dbghelp internal read memory handler); didn't
spend time on these as they would only be helpful for
non live targets, using the default read memory handler.
- fixed winedbg to reload properly minidumps.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5321
This is the first set of patches aimed at improving the functions to convert between media types and various representations. Not everything ended up being necessary for what I wanted to do (MFVIDEOFORMAT seems to be the only format able to carry aperture information after all) but the tests and implementation are now there and will still be useful to convert media types from/to AM_MEDIA_TYPE formats.
--
v3: mfplat/mediatype: Implement MFInitAMMediaTypeFromMFMediaType for FORMAT_VideoInfo2.
mfplat/tests: Add tests for MFInitMediaTypeFromVideoInfoHeader2.
mfplat/mediatype: Implement MFInitMediaTypeFromVideoInfoHeader2.
mfplat/mediatype: Implement implicit MFInitMediaTypeFromVideoInfoHeader subtype.
mfplat/tests: Test each VIDEOINFOHEADER field conversion separately.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5294
~~This applies on top of !704, the last two commits belong here.~~
Here we finally emit the structured program, replacing the older simple structurizer. The advantage of the new structurizer is that the CFG if statically described in the generated program, without having to trace the value of a variable. Upcoming MRs will make the CFG even simpler, easier to read and hopefully to optimize for downstream compilers.
--
v4: vkd3d-shader/ir: Emit multilevel jumps in the structured program.
vkd3d-shader/ir: Emit the reconstructed structured program.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/711
On Fri Mar 15 07:55:52 2024 +0000, Rémi Bernon wrote:
> changed this line in [version 2 of the diff](/wine/wine/-/merge_requests/5294/diffs?diff_id=105317&start_sha=bda0dbe0b9086716616731c86c81b550162e8811#f44c614b47a01be8d6d29ad07f7a5616e1ae60ec_26_26)
Indeed, fixed.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5294#note_64866
DXVK fails to create a device for the desktop window which causes the test to crash.
Instead of crashing, it should just skip the remaining desktop window tests if device creation fails.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5258
When there are two monitors and they are mirrored, both of them are considered primary. When the
first primary monitor happens to be a clone, EnumDisplayMonitors() ends up not reporting any
monitors because should_enumerate_monitor() returns FALSE and we break out the loop to enumerate
primary monitors after that.
This is a regression from b59619d and my review comments. My indent was to break out of the loop
after finding the *master* primary monitor, not cloned primary monitors, to avoid unnecessary
iterations. However, the primary monitor count is small and it's cleaner this way so let's break
when should_enumerate_monitor() returns TRUE.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5317
When ddraw_texture_init needs to clean up on failure, it will call the
wined3d_texture_get_sub_resource_parent function on draw_texture in
order to retrieve its parent for a IDirectDrawSurface release call.
However, if draw_texture is NULL, then the function call will crash
due to a null pointer dereference.
Therefore, on failure cleanup, the release operation on the texture
parent should only be performed if draw_texture is not NULL.
This fixes a crash in the Virtual Insanity game demo.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5305
--
v7: tests: Trace more info on buffer creation failure.
vkd3d: Support aliased tile binding if available.
vkd3d: Implement ID3D12CommandQueue::UpdateTileMappings() for textures.
vkd3d: Implement ID3D12CommandQueue::UpdateTileMappings() for buffers.
vkd3d: Pre-bind sparse texture mip tails.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/631
This applies on top of !711, the last three commits belong here.
This MR and the following ones will introduce a number of optimization passes on the structured representation of the shader, with the goal of fixing the idiosyncrasies of the code generated by the new structurizer. The general pattern is that we want to recognize when the combination of loops and jumps can be rather written with selection constructs. Ideally that should bring to removing all the synthesized loop intervals, but that cannot be guaranteed in general. We still want to do remove all the loops we can, first to make the generated code easier to read and to recompile, and second because having fewer loops also means that more multilevel jumps become ordinary single level jumps, which do not require overhead to be represented in SPIR-V.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/722
This is the first set of patches aimed at improving the functions to convert between media types and various representations. Not everything ended up being necessary for what I wanted to do (MFVIDEOFORMAT seems to be the only format able to carry aperture information after all) but the tests and implementation are now there and will still be useful to convert media types from/to AM_MEDIA_TYPE formats.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5294
--
v3: winevulkan: Get rid of the wine_vk_instance_free helper.
winevulkan: Add handle mappings on creation success only.
winevulkan: Simplify wine_vk_instance_free helper.
winevulkan: Get rid of the wine_vk_device_free helper.
winevulkan: Use a single allocation for instance and physical devices.
winevulkan: Rename wine_vk_physical_device_alloc parameters and variables.
winevulkan: Pass VkDeviceQueueCreateInfo to wine_vk_device_init_queues.
winevulkan: Use a single allocation for device and queues.
winevulkan: Use an rb_tree and allocate entries for handle mappings.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5274
Stub Implementations of UIViewSettings and InputPaneStatics. This will reduce the FIXME clutter of missing UIViewSettings class implementation in .NET applications esp: Paint .Net
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5314
Mainly the implementation of SM1 comparison operators, defined in terms of CMP and SLT instructions, and the capacity to transform SLT->CMP for pixel shaders and CMP->SLT for vertex shaders.
--
v3: vkd3d-shader/hlsl: Lower CMP instructions for vertex shaders.
vkd3d-shader/hlsl: Use hlsl_fixme() on missing SM1 matrix writemask lowering.
vkd3d-shader/hlsl: Lower SLT instructions for pixel shaders.
tests: Test equality between tiny and between large numbers on ps_2_0.
vkd3d-shader/hlsl: Implement SM1 comparison operators.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/706
--
v4: vkd3d-shader/dxil: Implement DX instruction Barrier.
vkd3d-shader/spirv: Emit a trace message if TGSM alignment is ignored.
vkd3d-shader/dxil: Implement structured groupshared address space global variables.
vkd3d-shader/dxil: Implement raw groupshared address space global variables.
vkd3d-shader/spirv: Support zero-initialisation for workgroup memory.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/681
--
v2: winevulkan: Get rid of the wine_vk_instance_free helper.
winevulkan: Add handle mappings on creation success only.
winevulkan: Simplify wine_vk_instance_free helper.
winevulkan: Get rid of the wine_vk_device_free helper.
winevulkan: Allocate all host command buffers at once.
winevulkan: Use a single allocation for instance and physical devices.
winevulkan: Rename wine_vk_physical_device_alloc parameters and variables.
winevulkan: Pass VkDeviceQueueCreateInfo to wine_vk_device_init_queues.
winevulkan: Use a single allocation for device and queues.
winevulkan: Use an rb_tree and allocate entries for handle mappings.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5274
When present, the aperture indicates the area of the sample's buffers to display. The frame size instead includes some undesired padding. This is the case when color planes are aligned, such as with YUV output from a decoder MFT.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5297
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v3: vkd3d-shader/fx: Fail effect writing on unsupported annotations.
vkd3d-shader/fx: Remove newlines from fixme messages.
vkd3d-shader/fx: Add initial support for writing fx_2_0 parameters.
vkd3d-shader/fx: Populate global variables list during context initialization.
vkd3d-shader/fx: Fix an instruction block leak.
vkd3d-shader/fx: Use type writing helper only for fx_4+.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/717