Add a dummy track parser, that reads through MIDI tracks and events. To make sure we understand the file structure correctly, no actual tracks or events are generated.
Also add test cases to make sure we read through a MIDI file correctly.
This is skeleton of the actual MIDI parser. Pending on the merge of !4982
--
v15: dmime/tests: Improve error reporting from expect_track.
dmime: Read through a MIDI file.
dmime: Don't skip chunk for MIDI files.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5081
This is a preparation for supporting more xstate features in the contexts.
The remaining parts are:
- support arbitrary xstate in usr1_handler();
- support arbitrary xstate in the server contexts (probably transferring only the present part);
- support arbitrary xstate in context manipulation functions;
- enabling more xstates in system.c and in user shared data.
--
v4: ntdll: Don't hardcode xstate size in exception stack layout.
ntdll: Don't hardcode xstate size in syscall frame.
ntdll: Don't hardcode xstate feature mask.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4987
This is a preparation for supporting more xstate features in the contexts.
The remaining parts are:
- support arbitrary xstate in usr1_handler();
- support arbitrary xstate in the server contexts (probably transferring only the present part);
- support arbitrary xstate in context manipulation functions;
- enabling more xstates in system.c and in user shared data.
--
v3: ntdll: Don't hardcode xstate size in exception stack layout.
ntdll: Don't hardcode xstate size in syscall frame.
ntdll: Don't hardcode xstate feature mask.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4987
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.
--
v10: 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: Record valid methods in object_methods[].
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/569
Based on [a patch](https://www.winehq.org/mailman3/hyperkitty/list/wine-devel@winehq.or… by Jinoh Kang (@iamahuman) from February 2022.
I removed the need for the event object and implemented fast paths for Linux.
On macOS 10.14+ `thread_get_register_pointer_values` is called on every thread of the process.
On Linux 4.14+ `membarrier(MEMBARRIER_CMD_GLOBAL_EXPEDITED, ...)` is used.
On x86 Linux <= 4.13 and on other platforms `madvise(..., MADV_DONTNEED)` is used, which sends IPIs to all cores causing them to do a memory barrier.
--
v11: ntdll: Add thread_get_register_pointer_values-based implementation of NtFlushProcessWriteBuffers.
ntdll: Add sys_membarrier-based implementation of NtFlushProcessWriteBuffers.
ntdll: Add MADV_DONTNEED-based implementation of NtFlushProcessWriteBuffers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/741
This WIP branch prototypes the usage of virtual display devices (through "virtual desktop" mode at the moment) to support display mode emulation in the Wayland driver.
It works by allowing the driver to mark each host adapter with a virtual_id, which, if present, signals to win32u that it should include the adapter in the virtual display configuration. The virtual configuration (along with the virtual ids) is reported back to the driver though a new user driver function. If none of the host adapters is marked with a virtual id (i.e., all other drivers) we fall back to the single virtual display mode as before.
Some deficiencies and open questions with the prototype:
1. Virtual desktop mode implies a lot of behavior that we don't want at this point the Wayland driver (e.g., taskbar window, changing the display mode to the virtual desktop resolution at startup, some changes in fsclip behavior). One way forward would be to have a "virtual display devices" mode separate from the "virtual desktop" mode, so that drivers can opt in only to the desired behavior (virtual desktop would imply virtual devices, to maintain the current behavior).
2. It's not clear to me what would be the best way for a driver to opt in or out of certain core behavior. Perhaps the driver would change some volatile registry key which other components would consult? Or introduce a user driver function for core to query the driver about such features on demand? Is there some precedence I can get inspiration from?
3. At the moment, the prototype calls the new "NotifyVirtualDevices" user driver callback only in the process which the display update occurred. This means that other processes don't get notified of the virtual devices mapping to host devices, so, in the Wayland driver case, we are not able to scale windows from those processes properly. One approach would be for core to ensure that the NotifyVirtualDevices callback is called once in all processes, but I am not sure what's the best way to achieve this (or even if this is the preferred approach). Another way would be to have a mechanism for the driver to query the virtual device info (+mappings) on demand, and just broadcast a message to all windows. In this case it could even be done internally by the driver (so more in line with what the part-12 MR is doing), if we don't want to introduce a more global behavior. Perhaps there is some even better mechanism, which would also be more fitting to how we envision the virtual display/devic
es to evolve going forward.
Let me know what you think!
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5057
This includes viewport and scissor rect (core in 1.0), and depth/stencil state
(comprised entirely of elements in EXT_extended_dynamic_state).
Further patches add other dynamic state extensions and make other parts of the
pipeline state dynamic.
Theoretically dynamic state should be an improvement, giving greater freedom to
the driver and hardware to optimize, and (perhaps more importantly) reducing the
time needed to look up and compile new pipeline states. In practice I haven't
observed a clear and measureable difference in either performance or stutter;
however, my testing has been extremely scarce.
Note: This patch series in particular introduces a new validation warning which
prints on almost every draw. The warning is described at [1]. Similar warnings
are triggered by future patches making other parts of the pipeline state dynamic.
An unfortunately internal Khronos discussion has determined that the warning is
undesirable, and there is currently motion to adjust the specification
accordingly; however, the validation layers have not yet been adjusted.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5078