--
v5: wpcap/tests: Initial tests.
wpcap: Try to enable 32-bit mmap() support in libpcap.
wpcap: Add wow64 thunks.
wpcap: Enable UTF-8 encoding in libpcap.
wpcap: Reimplement pcap_loop() on top of pcap_next_ex().
wpcap: Implement pcap_init().
wpcap: Implement pcap_dump_close().
wpcap: Implement pcap_bufsize().
wpcap: Fix an off-by-one error in convert_length_to_ipv6_mask().
wpcap: Make Unix call parameters wow64 compatible.
wpcap: Sync spec file with latest version of libpcap.
configure: Check for pcap_init() instead of pcap_create().
https://gitlab.winehq.org/wine/wine/-/merge_requests/2123
Convert all consecutive calls to d7_DrawPrimitive(TRIANGLE_FAN) into
a single call to d7_DrawPrimitive(TRIANGLE_LIST) with all the vertices.
Note, it *increase* the number of vertices, but bandwith is much less costly
than multiple calls.
Note, only a very precise subset of the calls get buffered in order to
ensure that the disruption is minimal.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=33814
--
v7: ddraw: avoid magic fvf number
https://gitlab.winehq.org/wine/wine/-/merge_requests/2105
Convert all consecutive calls to d7_DrawPrimitive(TRIANGLE_FAN) into
a single call to d7_DrawPrimitive(TRIANGLE_LIST) with all the vertices.
Note, it *increase* the number of vertices, but bandwith is much less costly
than multiple calls.
Note, only a very precise subset of the calls get buffered in order to
ensure that the disruption is minimal.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=33814
--
v6: ddraw: avoid magic fvf number
ddraw: using d3d_device7_DrawIndexedPrimitive()
https://gitlab.winehq.org/wine/wine/-/merge_requests/2105
Normalise the incoming vkd3d_shader_instruction IR to the shader model 6 pattern where only one patch constant function is emitted. This allows generation of a single patch constant function in SPIR-V.
--
v5: vkd3d-shader: Introduce an internal sm6 signature structure.
vkd3d-shader/spirv: Move the function declaration from spirv_compiler_begin_shader_phase() to spirv_compiler_enter_shader_phase().
vkd3d-shader/spirv: Remove the hull shader phase array.
vkd3d-shader/spirv: Merge all shader IR fork and join phases into a single phase.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/84
Sorry to let this stagnate for months, but I can confirm that an NVidia GPU which exposes 32768 as a limit for Vulkan will still refuse to create d3d12 textures with a dimension larger than 16384, even with feature level 12.1. (And it still exposes 16384 as a limit for d3d9). Given that, I think the right thing to do is just add a test that the limit is no higher than 16384, and probably also cap this in wined3d rather than ddraw.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/126#note_23674
I took some time to look into this to see if there's extra overhead, and while I think there are some things we could do better in draw_primitive(), there's probably not very much. Depending on what's in frame, the CS spends the majority of its time in draw_primitive(). Probably about 20% of that is spent acquiring the GL context, 40% loading the RTVs, 20% in context_apply_draw_state(); the rest is difficult to measure. This is on a relatively powerful radeonsi machine, with the swap interval hacked to zero; the total frame time is probably about 9 ms in the scenes I'm testing.
I think we can potentially cut draw_primitive() down to 10% of its current overhead if none of the state changes, but when we're doing 5000 draw calls per frame, even that may be too much. We could potentially buffer in wined3d, perhaps making use of EXT_multi_draw_arrays, but as Henri pointed out on IRC, we'd have to do a fair amount of work to invalidate (less than in ddraw itself), and this sort of thing probably doesn't perform well in newer d3d versions on Windows anyway. So buffering in ddraw is probably the right way to go. I'll look at the patch itself anon.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2105#note_23673