--
v3: win32u: Move surface and swapchain wrappers from winevulkan.
winevulkan: Keep the host function pointers in devices and instances.
winevulkan: Use the vulkan object as the wrapper tree node.
winevulkan: Get rid of unnecessary *to_handle helpers.
winevulkan: Avoid changing client command buffer pointer.
winevulkan: Fix incorrect client queue pointers.
winevulkan: Introduce a new vulkan_object_init helper.
winevulkan: Use the result to decide if creation failed.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6931
This MR improves configuration scheme when using clang as cross compiler:
- it fixes test for dwarf (-4) support (current test is failing as ldd emits
a warning when generating the long section names for the dwarf section,
that configure.ac treats as an error),
- it fixes --enable-build-id option with clang (clang linker uses -build-id
option, while gcc uses --build-id /mind the extra '-'/)
- it adds support in winegcc for a generic build-id linker option.
(extracted from draft MR!6715)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6922
For all mach vm operations this removes the task suspend and resume, which are not needed.
This uses `mach_vm_read_overwrite` to read into a caller-specified buffer, saving the `mach_vm_deallocate` call (bringing all read operations down to 1 syscall from 4).
The only alignment restriction on `mach_vm_write` according to the original CMU documentation is that data is
> [pointer to page aligned in array of bytes] An array of data to be written.
(In practice it also works with arbitrary addresses on macOS, but it probably doesn't hurt to follow the original specifications here).
The only other reference that these read/writes should be page-aligned is from the GNU Hurd documentation
> The current implementation requires that address, data and data_count all be page-aligned. Otherwise, KERN_INVALID_ARGUMENT is returned.
which I assume was the reason why this was originally done (plus it sounds to me like they will fix that in the future and 4fe19777 already broke GNU Hurd support anyways, if that was supposed to be working).
Also this includes the missing mach part of 5b1f3b14, which was only applied to the ptrace backend, and together with the `write_process_memory` rework, this gets rid of all fixmes in mach.c
--
v9: server: Do not page align address in write_process_memory.
server: Do not suspend mach task in write_process_memory.
server: Use mach_vm_read_overwrite in get_selector_entry.
server: Do not suspend mach task in get_selector_entry.
server: Use mach_vm_read_overwrite in read_process_memory.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4826
For all mach vm operations this removes the task suspend and resume, which are not needed.
This uses `mach_vm_read_overwrite` to read into a caller-specified buffer, saving the `mach_vm_deallocate` call (bringing all read operations down to 1 syscall from 4).
The only alignment restriction on `mach_vm_write` according to the original CMU documentation is that data is
> [pointer to page aligned in array of bytes] An array of data to be written.
(In practice it also works with arbitrary addresses on macOS, but it probably doesn't hurt to follow the original specifications here).
The only other reference that these read/writes should be page-aligned is from the GNU Hurd documentation
> The current implementation requires that address, data and data_count all be page-aligned. Otherwise, KERN_INVALID_ARGUMENT is returned.
which I assume was the reason why this was originally done (plus it sounds to me like they will fix that in the future and 4fe19777 already broke GNU Hurd support anyways, if that was supposed to be working).
Also this includes the missing mach part of 5b1f3b14, which was only applied to the ptrace backend, and together with the `write_process_memory` rework, this gets rid of all fixmes in mach.c
--
v8: server: Do not page align address in write_process_memory.
server: Do not suspend mach task in write_process_memory.
server: Use mach_vm_read_overwrite in get_selector_entry.
server: Do not suspend mach task in get_selector_entry.
server: Use mach_vm_read_overwrite in read_process_memory.
server: Do not suspend mach task in read_process_memory.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4826
--
v2: win32u: Move surface and swapchain wrappers from winevulkan.
win32u: Keep track of redirected host vulkan functions.
winevulkan: Pass wrapper structs to win32u_vkGet(Device|Instance)ProcAddr.
winevulkan: Use the vulkan object as the wrapper tree node.
winevulkan: Get rid of unnecessary *to_handle helpers.
winevulkan: Avoid changing client command buffer pointer.
winevulkan: Fix incorrect client queue pointers.
winevulkan: Introduce a new vulkan_object_init helper.
winevulkan: Use the result to decide if creation failed.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6931
On Sun Dec 1 21:56:35 2024 +0000, Jinoh Kang wrote:
> I'd advise you to test WaitCompletionPacket againat waitable objects
> that use `get_wait_queue_thread()`, including keyed events, mutexes, and
> message queue objects (not exposed via Win32 API, only at win32k level).
Thanks for the review. The problem is that there might be no threads that initiate any wait. Anyway, I will add more tests and get back to you.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6911#note_89419