This improves performance for the game "Grounded", on a AMD Radeon RX 6700 XT,
with radv from Mesa 22.3.6. Testing was done with the "cb_access_map_w" option
enabled, which also improves performance with the game by itself.
From my testing, it's possible to raise the threshold from 2 ms up to 5 ms or
so, before the driver or GPU seems to reclock back to the lower power level.
However, this measurement is questionable for several reasons. It seems to vary
depending on the scene being rendered, and of course this will be specific to
the game and driver and GPU in question anyway. The game also has a weird
approach to vsync that seems to involve it presenting stale frames (and hence
artificially inflating the FPS), which I'm not fully sure I accounted for while
measuring. And of course, it's hard to be sure that 5 ms is actually the
threshold for how long the driver will go before powering down the GPU. In any
case, it seems better to err on the side of submitting more often, to make sure
the fix affects more drivers.
While submission isn't cheap, it seems to me that submitting every 2 ms is
unlikely to cause a bottleneck [consider that this is at most 8 (more)
submissions per frame].
The maximum of 4 concurrent periodically submitted buffers was chosen
arbitrarily. Removing the maximum altogether does not measurably affect
performance for this game either way.
Credit goes to Philip Rebohle and his work on DXVK for helping me to notice that
periodic submission might make a difference.
--
v3: wined3d: Submit command buffers after 512 draw or dispatch commands.
wined3d: Retrieve the VkCommandBuffer from wined3d_context_vk after executing RTV barriers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2724
Same bug class as https://gitlab.winehq.org/wine/wine/-/merge_requests/5550.
None of them are referenced by anything (not counting mfplat/main.c's debugstr_attr(), which names the two in mfapi.h - better debug output, yay I guess).
--
v3: include: Fix a typoed GUID
include: Fix a typoed GUID
include: Fix two typoed GUIDs
include: Fix two typoed GUIDs
include: Fix two typoed GUIDs
include: Fix a typoed GUID
include: Fix a typoed GUID
include: Fix a typoed GUID
include: Fix a typoed GUID
include: Fix a typoed GUID
https://gitlab.winehq.org/wine/wine/-/merge_requests/5559
After commit 898ab8dab19d498c17859f39a55e317ee7e367a5 wine would no longer
build on musl.
Issue is that apparently TCSETS2 isn't defined when including sys/ioctl.h.
A little digging shows that glibc goes ahead and includes asm/ioctls.h in
sys/ioctl.h, providing said macro. Musl on the other hand doesn't and relies
on bits/ioctl.h, which lacks said macro.
Since there is no mention in the manpage about the need to include asm/ioctls.h,
uncertain if that's an issue with musl or the manpage, would like some help on
that front so I can go open PRs to fix that respectively.
Signed-off-by: Fotios Valasiadis <fvalasiad(a)gmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5580
First part of Proton shared memory series. The full branch can be seen at https://gitlab.winehq.org/rbernon/wine/-/commits/mr/shared-memories.
--
v34: 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: Return the desktop object info in get_thread_desktop.
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