Implement the function `IXMLDOMElement_removeAttributeNode`. Essentially
pass the hard work to `IXMLDOMNamedNodeMap_removeNamedItem`.
Use the fact, that attribute names are unique in elements.
One case that isn't checked is wheter or not the value of the provided
attribute match with the one stored in the dom-element.
This MR implements according to the tests introduced in https://gitlab.winehq.org/wine/wine/-/merge_requests/8928
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9056
I'm opening this MR as an RFC. It's an initial attempt to support OpenGL persistent memory mapping in the new wow64. The implementation is not complete yet (details below), but it's intentionally kept as simple as possible for a proof of concept.
Since we can't control where OpenGL maps memory, the idea is to use the available Vulkan extension with enough glue between them. Because of how GL–VK interop works, this requires creating a memory object on the Vulkan side and importing it into OpenGL. Once that's done, all operations on such buffers are performed through GL, except for mapping, which is handled by Vulkan. This is achieved by hooking `gl*BufferStorage` and reimplementing it on top of `glImportMemoryFdEXT` for mappable buffers. Recently introduced buffer wrappers make further tracking of these buffers straightforward.
If we move forward with this, the feature will need to be enabled based on available driver capabilities (for now, it's force-enabled). Some parts might also be worth moving into win32u.
This alone seems enough to claim persistent memory support and thus expose OpenGL 4.6 on the new wow64. Performance looks good in my limited testing, although that hasn't been a focus yet. Possible improvements include:
- Currently only GL buffers created with `gl*BufferStorage` are affected. Other cases still fall back to the slow memcpy path.
- The draft just picks the first host-visible coherent memory type exposed by Vulkan. We could try harder to pick an optimal type taking into account GL flags.
- The draft allocates a new Vulkan memory and fd for each mapped buffer. This is inefficient for small buffers, for which a suballocator could help.
- The draft always picks the first GPU reported by Vulkan. We may need to ensure that the selected device matches the one OpenGL actually uses.
An alternative would be a new OpenGL extension. A driver-level solution could be more efficient, and it would certainly be nice to have. However, since such an extension doesn't exist yet, and even if we have it soon, I think it's still valuable to have a fallback solution that works with existing drivers.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9032
On Fri Sep 26 12:12:08 2025 +0000, Matthias Zorn wrote:
> I programmed it with the MinGW compilers (mingw32 and mingw64) in MSYS2.
> I tested the program on Windows 2000, Windows XP, Windows 7, and Windows
> 11. The program runs on Windows 7 and Windows 11:
> {width=278
> height=251}
> When I start the program with Windows 2000 or Windows XP, I only get the
> following error message:
> 
Great, thanks!
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9057#note_116872
Jinoh Kang (@iamahuman) commented about dlls/shlwapi/shlwapi.spec:
> 385 stub -noname SHLoadRawAccelerators
> 386 stub -noname SHQueryRawAccelerator
> 387 stub -noname SHQueryRawAcceleratorMsg
> -388 varargs -ordinal ShellMessageBoxWrapW(long long wstr wstr long)
> +388 varargs ShellMessageBoxW(long long wstr wstr long)
The CI tests are not passing due to the following build failure:
```
../dlls/shlwapi/ordinal.c:3988:13: error: 'ShellMessageBoxW' redeclared without dllimport attribute: previous dllimport ignored [-Werror=attributes]
3988 | INT WINAPIV ShellMessageBoxW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText,
| ^~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [Makefile:151583: dlls/shlwapi/x86_64-windows/ordinal.o] Error 1
```
To fix this, can you keep the ShellMessageBoxWrapW name and use aliasing to export it as ShellMessageBox**W** (no Wrap)? Aliases look like this:
```suggestion:-0+0
388 varargs ShellMessageBoxW(long long wstr wstr long) ShellMessageBoxWrapW
```
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9057#note_116871
For some reason, MsiEnumFeaturesW() still look for the list of features
in the registry key which Wine itself has not been writing to since
commit af56e28f ("msi: Don't publish features to an invalid location."),
authored in 2008. Make it look in the new registry location which
is used by ACTION_PublishFeatures().
While we're at it, remove the helper function used only by
MsiEnumFeaturesW().
A conformance test is added.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9041
So that we can access the correct device IDs.
---
The EA launcher uses WMI to query system information to tie licenses to particular machines. It expects that a video controller's PNPDeviceID will be valid (i.e. something under CurrentControlSet\Enum), which it no longer is since we stopped using DXGI in d511872a3d0dce5148d23ce5cbf80c989d484b26 / !7450. That information is available from setupapi, which is presumably faster than DXGI (speed was the motivating factor for !7450 - see the original bug https://bugs.winehq.org/show_bug.cgi?id=38879).
I'm all ears if there's a better way to associate the devices under CurrentControlSet\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318} with those that setupapi reads from ...\Enum, or if there's a way to get the stuff that's in ...\Class out of setupapi (e.g. the RAM and DAC type).
--
v2: wbemprox: Use setupapi to enumerate video controllers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/9035
On Thu Sep 25 22:36:32 2025 +0000, Jinoh Kang wrote:
> Hello, thanks for your reply!
> You built your program with MinGW, right? It seems MinGW has a problem
> with shlwapi.
> Does your program run correctly on Windows when built *with* MinGW?
> Would you post a screenshot on Windows?
I programmed it with the MinGW compilers (mingw32 and mingw64) in MSYS2. I tested the program on Windows 2000, Windows XP, Windows 7, and Windows 11. The program runs on Windows 7 and Windows 11:
{width=278 height=251}
When I start the program with Windows 2000 or Windows XP, I only get the following error message:

--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9057#note_116867
Fix regression, likely caused by me, where DIR /O options entered at the command line do not override any /O options that might be set in the DIRCMD environment variable. Fix is to reset applicable sort order state whenever /O is encountered in the options list.
--
v3: cmd: Allow DIR /Oxxx at the command line to override DIRCMD=/Oyyy set in the environment.
cmd/tests: Duplicate DIR /O tests, but specify parameters via DIRCMD environment variable.
https://gitlab.winehq.org/wine/wine/-/merge_requests/9040
For Assassin's Creed Syndicate. When switching from fullscreen to a smaller windowed resolution, it calls `SetWindowPos()` centering the window, then calls `ResizeTarget()` and finally `SetFullscreenState()`, and expects the window to preserve the position.
Window style handling is a bit iffy because of the manipulation we do when entering fullscreen, but that's not really new.
--
v3: dxgi/tests: Test window states tracking and restoration in fullscreen mode.
https://gitlab.winehq.org/wine/wine/-/merge_requests/9036