This is relevant to the structuriser because branched DXIL can sometimes contain forward refs. It doesn't need to be implemented in the backend until necessary, but it adds a parameter to `register_init_ssa_vector()` and `register_init_ssa_scalar()` so it's convenient to add before further use of those functions.
--
v3: vkd3d-shader/dxil: Support forward-referenced value ids.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/590
This is the first part of !608, which I decided to separate to ease review.
It consists of improvements to SM1 testing, mainly:
- Correctly passing int and bool uniforms as IEEE 754 floats to SM1 profiles.
- The introduction of the "only" qualifier to avoid abusing `[require]` blocks in case tests retrieve different results for different shader models.
- Allowing some of the tests we already have for SM4/SM6 to run in SM1 after those improvements.
--
v3: tests: Remove [require] directives for tests that use int and bool uniforms.
tests/shader-runner: Introduce "if" qualifier.
tests: Don't ignore SM1 on a non-const-indexing.shader_test test.
tests/vkd3d-shader: Set uninitialized uniforms to zero.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/616
There are still some issues I need to fix, mainly around timing conversion between MIDI and dmusic. Right now MIDI files seem to be cut off before the end is reached.
Please have a look at the general approach in the meantime, I need to know if this is the right way to do this or not.
--
v14: dmime: Create a band track for MIDI segments.
dmime/test: Add test for getting band track from midi file.
dmime: Implement IDirectMusicTrack_Play for MIDI tracks.
dmime: Implement getting/setting TempoParam for MIDI tracks.
dmime: Parse MIDI tracks.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4982
There are still some issues I need to fix, mainly around timing conversion between MIDI and dmusic. Right now MIDI files seem to be cut off before the end is reached.
Please have a look at the general approach in the meantime, I need to know if this is the right way to do this or not.
--
v13: dmime: Create a band track for MIDI segments.
dmime/test: Add test for getting band track from midi file.
dmime: Implement IDirectMusicTrack_Play for MIDI tracks.
dmime: Implement getting/setting TempoParam for MIDI tracks.
dmime: Parse MIDI tracks.
dmime: Add stubs for MIDI tracks
dmime: Parse MIDI headers.
dmime/test: add MIDI loading test
https://gitlab.winehq.org/wine/wine/-/merge_requests/4982
There are still some issues I need to fix, mainly around timing conversion between MIDI and dmusic. Right now MIDI files seem to be cut off before the end is reached.
Please have a look at the general approach in the meantime, I need to know if this is the right way to do this or not.
--
v12: dmime: Create a band track for MIDI segments.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4982
While using [x64dbg](https://x64dbg.com/) I was experiencing incredibly strange issue - `int3` was swallowed and `KiUserExceptionDispatcher` was never invoked.
Turns out that x64dbg ([TitanEngine](https://github.com/x64dbg/TitanEngine/blob/x64dbg/TitanEngine/…) expects system breakpoint to be first breakpoint that will be triggered and it always swallows it (it's hardcoded no setting to change it's behavior).
That means if you have a DLL with `int3` for example
```c
LONG ExceptionHandler(EXCEPTION_POINTERS *ExceptionInfo) {
ExceptionInfo->ContextRecord->Rip++;
return EXCEPTION_CONTINUE_EXECUTION;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
{
AddVectoredExceptionHandler(1, ExceptionHandler);
asm("int $0x03; nop; nop;");
}
return TRUE;
}
```
That `int3` would be swallowed and `ExceptionHandler` never invoked when running under x64dbg.
Now with this MR applied it works correctly and as expected (same as on Windows).
Another interesting thing is that without this MR it wouldn't just swallow `int3` but even skip first `nop` aswell and RIP would end up on 2nd `nop`.
--
v3: ntdll: loader_init() invoke breakpoint before loading dlls
https://gitlab.winehq.org/wine/wine/-/merge_requests/4655
This allows to declare SRV buffers in the shader tests using `[buffer srv n]` blocks, and passing them to the different backends.
Also, 1/2 includes a missing bit required to parse `Buffer<>` types in the HLSL compiler.
This is a step towards supporting StructuredBuffer types in further patches.
--
v5: vkd3d-shader/hlsl: Parse Buffer types.
tests/shader-runner: Change probe directive syntax on shader_test files.
tests/shader-runner: Change resource declaration syntax on shader_test files.
tests/shader-runner: Support SRV buffers.
tests/shader-runner: Separate resource_type into type and dimension.
vkd3d-shader/hlsl: Use positive logic on add_*_method_call() functions.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/569