The plan is to move as much GL code as possible to win32u, similarly to what's been done with vulkan. While I intend to keep the existing driver-specific GL backend (GLX, macos?), I win32u can use EGL more directly while delegating only the platform specific display and surface creation to the drivers.
At the same time, it could also make it possible to use EGL for memory DCs too, as osmesa is being removed from Mesa3D main branch (still going to be present in a separate historical branch iiuc).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7468
While some host includes may work, we can't assume they will. Additionally, they may interfere with the code being built. In my case, LLVM's libc++ build with winegcc was failing due to an [unexpected `__has_include`](https://github.com/llvm/llvm-project/blob/44607666b3429868bce9f0489715eb367d0e08f8/libcxx/include/__mbstate_t.h#L42).
--
v2: winegcc: Don't include host include paths when compiling with MSVCRT.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7469
While some host includes may work, we can't assume they will. Additionally, they may interfere with the code being built. In my case, LLVM's libc++ build with winegcc was failing due to an [unexpected `__has_include`](https://github.com/llvm/llvm-project/blob/44607666b3429868bce9f0489715eb367d0e08f8/libcxx/include/__mbstate_t.h#L42).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7469
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v3: windowscodecs: Implement GetPreferredVendorGUID().
windowscodecs/metadata: Implement GetClassID().
windowscodecs/tests: Add some tests for metadata handler GetClassID().
windowscodecs/metadata: Replicate original stream position when creating writer instances from readers.
windowscodecs/metadata: Restore original stream position on GetStream().
windowscodecs/tests: Add some tests for stream position handling when nested readers are used.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7407
The icons and texts are too tiny in KDE Plasma 6 with 100% scaling on my 4K monitor, so I adjust it to 200%, and the window of my game just becomes 2x bigger, much bigger than my monitor.
This doesn't make any sense!
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6805#note_96557
Tests show test propsys:propsys is failing for many Windows 7 machines. https://test.winehq.org/data/patterns-tb-win.html#propsys:propsys
It looks like windows 7 processes VT_R4 like VT_R8. (`0.125f / 0x3e000000 (float/4 byte)` becomes `5.1392085562440189e-315 / 0x3e000000 (double/8 byte)`.
Is this worth the effort to remove the failures from the test patterns page?
--
v3: propsys/tests: Add broken for unexpected value in windows 7.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7460
The spec says if the passed pointer is NULL then return E_POINTER
and not to just unconditionally deref then set NULL.
Signed-off-by: Edward O'Callaghan <edward(a)antitrust.cc>
--
v2: dlls/shell32: Fix IUnknown::QueryInterface() to meet spec
https://gitlab.winehq.org/wine/wine/-/merge_requests/7451
Tests show test propsys:propsys is failing for many Windows 7 machines. https://test.winehq.org/data/patterns-tb-win.html#propsys:propsys
It looks like windows 7 processes VT_R4 like VT_R8. (`0.125f / 0x3e000000 (float/4 byte)` becomes `5.1392085562440189e-315 / 0x3e000000 (double/8 byte)`.
Is this worth the effort to remove the failures from the test patterns page?
--
v2: propsys/tests: Add broken for unexpected value in windows 7.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7460
Supersedes !741.
On macOS 10.14+ `thread_get_register_pointer_values` is called on every thread of the process.
On Linux 4.14+ `membarrier(MEMBARRIER_CMD_PRIVATE_EXPEDITED, ...)` is used.
On x86 Linux <= 4.13 and on other platforms it falls back to calling `NtGetContextThread()` on each thread.
The fast path patches from @tmatthies are slightly modified in the following ways:
1. On unsupported platforms, the `try_*()` functions return `FALSE` instead of `0`.
2. `try_exp_membarrier()` is called first, then `try_mach_tgrpvs()`.
---
Known applications fixed by this MR:
- osu! (rhythm game) song selection menu stuttering
- .NET CoreCLR GC
- HotSpot JVM (-XX:+UseSystemMemoryBarrier) safepoints
--
v4: kernel32/tests: Add a store buffering litmus test involving FlushProcessWriteBuffers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7250
On Mon Mar 3 11:04:01 2025 +0000, Jinoh Kang wrote:
> My two cents:
> This PR is a no-op change except for the test. While this PR improves
> readability a little, I guess we could go further and handle flip
> horz/vert flags in a more readable way if we want to go that direction?
> (Otherwise just keeping the test should be fine too.)
In any case, the commit message is misleading and should be reworded on commit.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7459#note_96526
On Mon Mar 3 08:08:34 2025 +0000, Dmitry Timoshkov wrote:
> It looks like you are right, new tests actually pass with current
> implementation. Although the patch makes support for
> WICBitmapTransformRotate270 more explicit I'm not opposed to leave the
> code intact. I'm open to suggestions.
My two cents:
This PR is a no-op change except for the test. While this PR improves readability a little, I guess we could go further and handle flip horz/vert flags in a more readable way if we want to go that direction? (Otherwise just keeping the test should be fine too.)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7459#note_96525
## Context
This is a problem discovered when running "Max: The Curse of Brotherhood" under proton. This game writes 4MB a piece into `wg_transform`, which contains about 4 seconds of compressed video. `wg_transform` calls `gst_pad_push` in `transform_ProcessOutput`, which takes \~300ms (i.e. 20 frames @ 60fps) to decode this buffer of video. So the end result is the game hitches every 4 seconds while playing cut scene videos.
Proton currently has a special case for this particular game, for which it breaks up the buffer into small chunks to avoid long blocks. This MR adopts that and applies it generally.
One concern raised by @redmcg is:
> The only issue I can think of is if there are any decoders which don't have a parser; then they might not know how to deal with an arbitrary 4096 byte buffer (the parser is generally responsible for taking arbitrary buffers and producing something the decoder can work with, for example: a full frame).
So this MR only enables this strategy when there is a parser element.
--
v9: winegstreamer: Avoid large buffer pushes in wg_transform.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7288