Zebediah Figura (@zfigura) commented about dlls/d3drm/d3drm_private.h:
> IDirect3DRM *d3drm;
> IDirectDraw *ddraw;
> IDirectDrawSurface *primary_surface, *render_target;
> - IDirectDrawClipper *clipper;
This should ideally be a separate patch.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5161#note_63575
This also bumps the minimum supported version of macOS to 10.12 to unconditionally assume the ulock syscalls are present.
As discussed with @Gcenx this shouldn't be an issue, as the current minimum support version of 10.8 does not work anyways at the moment with only 10.10+ being useable and even then virtually no-one using wine on versions < 10.12 (and also being unsupported by the prebuilt binaries).
Bumping to 10.12 would also have the side-benefit of allowing some cleanup of deprecated functions or legacy codepaths (like `mach_continuous_time` vs `mach_absolute_time` and probably much more).
In my testing ulock futexes are about 2x faster for synchronization than kevents. Using the syscall wrappers here should provide protection against changing syscall numbers, and given that ulock is also directly used by libc++, the probability of an incompatible API change here is basically zero imo.
By default ulock is also process-private, similar to the current linux implementation, cross-process synchronization would require darwin 19+ (macOS 10.15+) with `UL_COMPARE_AND_WAIT_SHARED`.
The diff is a bit bigger than it actually is in effect, since https://gitlab.winehq.org/mzent/wine/-/commit/28a8a991c165f0d37dbf78ca3cdee… is only moving some code around and not actually changing anything.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5237
More details here: https://devblogs.microsoft.com/oldnewthing/20181206-00/?p=100415
However it does not mention that `PAGE_NOACCESS` and `PAGE_READONLY` still result in an error on Windows, which is properly implemented in this MR.
Only `WriteProcessMemory` offers this "service", `NtWriteVirtualMemory` will fail on non-writeable and executable regions (and already does so, except for the the mach server backend, which needs https://gitlab.winehq.org/wine/wine/-/merge_requests/4826 to also behave correctly here).
--
v3: kernelbase: Flush instruction cache when necessary in WriteProcessMemory.
kernelbase: Allow WriteProcessMemory to succeed on PAGE_EXECUTE_READ.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5222
--
v2: wined3d/nvrc: Remove now redundant WINED3D_TSS_RESULT_ARG handlers.
wined3d/nvrc: Move alpha op application to nvrc_apply_draw_state().
wined3d/nvrc: Remove now redundant STATE_SAMPLER handlers.
wined3d/nvrc: Move color ops from nvrc_colorop() to nvrc_apply_draw_state().
wined3d/nvrc: Move FFP bumpenv constant loading to nvrc_apply_draw_state().
wined3d/nvrc: Move TEXTUREFACTOR constant loading to nvrc_apply_draw_state().
https://gitlab.winehq.org/wine/wine/-/merge_requests/5171