Recap:
My previous proposals to extend the shader_runner to SM1 were focusing on separating compilation tests ([shader] directives) from execution tests ([test] directives), and let the generic shader_runner.c:compile_shader() in charge of the former.
However, Henri was more inclined to aim for making the parser agnostic to the language of the tests so we can potentially extend the shader_runner tests to other languages such as d3d-asm. This means, removing the burden of compilation from the parser altogether, and moving it to the runners, probably through a runner->compile function pointer (even if most of them end up doing the same thing, compiling with vkd3d-shader or the native compiler, depending on availability).
Agreeing with going in this general direction, this MR contains patches to do SM1 compilation calling run_shader_tests() for SM1 profiles from the Vulkan runner (skipping execution for now), and some improvements to the qualifiers syntax.
Despite this, there are parallel discussions on:
- Whether to name the shader models individually in the [require] directives or expressing the range of shader models where the test should pass. In the latter case, whether to run for all shader models, only the lowest one in the SM1, SM4, and SM6 groups, or to allow the runner to select a shader model within the range (I feel strongly against this now, I think the runner should just retrieve a boolean in runner->check_requirements).
- Where to do the iteration across different shader models, if in run_shader_tests() or expect each runner to call run_shader_tests() several times as we do now.
But there is no need to settle on something for these yet.
---
Now, what may be the most noisy part of this MR is that even though we are calling run_shader_tests() through the Vulkan runner, this will result in calling shader_runner.c:compile_shader() instead of shader_runner_vulkan.c:compile_shader(), but if we follow the "making the parser agnostic" plan, we eventually should get rid of shader_runner.c:compile_shader() and introduce the runner->compile pointer instead.
--
v13: tests: Use the vulkan runner to run SM1 compilation tests.
vkd3d-shader/ir: Lower texkill instructions to discard_nz.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/514
This replaces the deprecated `syscall()` to `__pthread_kill` with its wrapper version, which will continue working when the syscall numbers change (happens luckily very rarely on XNU compared to NT).
Also replaces the deprecated `bootstrap_register` with `bootstrap_register2` (which although being private is being used by `-[NSMachBootstrapServer registerPort:name:]`, and what `bootstrap_register` calls into as well).
Both of these are available on at least OSX 10.5+ as far as I can tell, so should be fine support wise.
I took the liberty to also slightly adjust the formatting of `void init_tracing_mechanism(void)` to better fit into the surrounding code.
For me this makes it so mach.c now builds with 0 warnings all in all.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4862
--
v2: win32u: Remove now unnecessary ImeToAsciiEx driver entry.
winemac: Use the default ImeToAsciiEx implementation.
win32u: Support posting IME updates while processing keys.
win32u: Move ImeToAsciiEx implementation from winex11.
winex11: Return STATUS_NOT_FOUND when IME update isn't found.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4859
The `write_process_memory ` calls are also down from 8 syscalls to 1 and fixes a bug where it should fail on non-writable memory, but still succeeds, because it changes the memory protection to allow them and then changes it back.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4826#note_57730
--
v4: dmime: Semi-support creating an audio path from config.
dmime: IDirectMusicPerformance::CreateAudioPath should fail when config is NULL.
dmime: Parse AudioPathConfig
https://gitlab.winehq.org/wine/wine/-/merge_requests/4852
--
v3: dmime: Semi-support creating an audio path from config.
dmime: IDirectMusicPerformance::CreateAudioPath should fail when config is NULL.
dmime: Parse AudioPathConfig
dmime: AudioPathConfig is not AudioPath.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4852
--
v2: dmime: Semi-support creating an audio path from config.
dmime: IDirectMusicPerformance::CreateAudioPath should fail when config is NULL.
dmime: Parse AudioPathConfig
dmime: AudioPathConfig is not AudioPath.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4852