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 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
Giovanni Mascellani (@giomasce) commented about libs/vkd3d-shader/dxil.c:
> [DX_LEGACY_F32TOF16 ] = {"i", "f", sm6_parser_emit_dx_unary},
> [DX_LOAD_INPUT ] = {"o", "ii8i", sm6_parser_emit_dx_load_input},
> [DX_LOG ] = {"g", "R", sm6_parser_emit_dx_unary},
> + [DX_RAW_BUFFER_LOAD ] = {"o", "Hii8i", sm6_parser_emit_dx_raw_buffer_load},
I just realized that the last parameter is never read. Is that intended? What is supposed to be there? Maybe you could add a comment in the code to explain this? Apparently something similar happens for `DX_LOAD_INPUT` too and maybe other DX opcodes.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/583#note_61454
The state table, as may have been described elsewhere, is not very friendly to
modern CPUs (due to its indirect calls). Additionally, interdependencies between
states are often more obscure (or at least harder to account for) than they
might be with a linear function.
Hence, we'd like to transform the table into a linear function, with "dirty"
state guarding explicitly spelled out. For the FFP tables, the approach I've
taken to achieve this is to gradually move states out of the table and into the
existing vp_enable() and fp_enable() functions, eventually making those
functions the aforementioned single linear functions.
--
v3: wined3d/arb: Move fragment program compilation from fragment_prog_arbfp() to arbfp_apply_draw_state().
wined3d: Pass a non-const wined3d_context pointer to the FFP *_apply_draw_state() methods.
wined3d: Pass a wined3d_state pointer to the vp_enable() and fp_enable() methods.
wined3d: Introduce a separate fp_disable() method.
wined3d: Introduce a separate vp_disable() method.
wined3d: Merge shader_load_constants() into shader_select().
https://gitlab.winehq.org/wine/wine/-/merge_requests/5053
--
v4: server: Enumerate desktop processes for rawinput messages.
server: Keep a list of threads connected to each desktop.
server: Send hardware input to the visible input desktop.
server: Keep track of the winstation input desktop.
win32u: Introduce new NtUserSwitchDesktop syscall stub.
user32/tests: Run in-desktop tests from a new thread.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5066
--
v3: vkd3d-shader/dxil: Implement DX intrinsic GetDimensions.
vkd3d-shader/dxil: Move the resource kind helper functions up.
vkd3d-shader/spirv: Introduce a sample info flag value for a scalar uint dst parameter.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/629