This finally solves a FIXME that was added back in 1997.
NFS High Stakes (and Motor City Online) both emit a 0x190 access
violation on startup (according to game's strings this was meant
to be debugger detection; I think this was done to interfere in
a DRM bypass but I'm probably wrong).
But anyway that feature causes a Wine Debugger dialog to appear
when starting the games (if you click "Show Details" though they
suddenly start working normally but this is an extra annoyance
for average people who just want to play the game).
This change prevents that by not starting the debugger if the
SEM_NOGPFAULTERRORBOX flag is set (if that flag wasn't set then
people would be complaining about the game crashing every time)
which lets the exception silently go through (it can still be seen
with WINEDEBUG=+seh set though).
I'm not sure how I can test for this exception handling behavior
(I'm thinking of calling RaiseException() inside a __try/__except
block but that might not be exactly what the games are doing).
This patch was originally posted by Zeb in a diff form (so the
patch description has been written by me, DodoGTA).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4567
I should've pushed this shortly after the workaround for the WineD3D
WoW64 graphics corruption got upstreamed (which I discovered when
messing around) but never got around to MR anything in Wine.
The copies of mapped buffers introduce significant performance overhead
(I'll add a FIXME so that people don't get surprised when their old games
run like a slideshow like for example NFS Most Wanted).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4513
Shader Model 6 introduces a 16-bit float (half) type, and 16-bit and 64-bit integer types. Storing extra info in the type enum simplifies checking if a type is any integer, floating point or numeric type, and the declaration of SPIR-V types. The benefits depend on using enum vkd3d_data_type in the backend instead of vkd3d_shader_component_type.
Patch 2 is difficult to split because types typically flow through to vkd3d_spirv_get_type_id(), so partial changes would require new calls to conversion functions which would be deleted again later.
--
v5: vkd3d-shader/spirv: Use enum vkd3d_data_type instead of vkd3d_shader_component_type.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/263
--
v3: jscript: Allow garbage collection between different jscript contexts.
jscript: Make the garbage collector thread-wide rather than per-ctx.
jscript: Don't use atomic compare exchange when setting the script ctx.
jscript: Move thread_id from JScript struct to TLS data.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4640
The problem is that registry save is a very heavy operation (scheduled each 30sec in wineserver) during which server doesn't process any requests and the whole prefix is stalled for the duration of the operation.
For some reference, the process takes from 50-100ms here up to 1-1.5sec with default initial registry (after some registry modifications which trigger actual registry flush), depending on the filesystem type and state (as huge time may be spent in file close / rename). With the same registry after this patchset the server part (flush_key returning the whole registry data) is taking ~4-5mcs, measured from the client side so that already includes data transfer.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3124