Some hours ago Wine Staging 1.7.45 was released with several bug fixes and enhancements.
Some applications use ICMP pings to check if a remote host / server is reachable, or to determine the round trip time. While Windows offers a special API to send ping requests and to receive the response, the only way to achieve the same on Linux/Unix based systems is to use raw sockets. For security reasons these sockets are limited to processes/users having the
CAP_NET_RAW capability, which means that such programs usually do not run out of the box in Wine. Manually adjusting capability flags fixes the problem, but also gives the program the permission to sniff traffic by other applications or users on the same interface.
In order to partially solve this problem, we implemented a fallback in Wine which makes use of the
ping commandline tool if Wine does not have the necessary capabilities. The ping utility usually has the necessary permission and provides most of the functions offered by the Windows API. While this is not sufficient for special things like traceroutes, the most common use-case of sending simple requests in order to measure the round trip time works fine with this approach.
One of the difficulties in Wined3d is to determine exact information about the hardware. While DirectX offers a way to get the amount of GPU memory or the PCI ID of the graphic card, a lot of this information is not accessible through the core OpenGL functions. So far Wined3d tries to match the graphic card name returned by OpenGL with an internal lookup table in order to fill out all these details. This is not always very precise and might result in false detections. One of the biggest problems is that the returned amount of detected VRAM is incorrect and the application tries to use more memory than available or decreases the graphic quality to stay within the reported limit.
Some drivers like the NVIDIA and the Mesa driver added their own OpenGL extensions to gather these details and in this release we added support for the
NVX_GPU_MEMORY_INFO extension by NVIDIA. We use this extension to get the total amount of GPU memory and moreover report proper memory usage to Wined3d. This is necessary to implement correct memory accounting. In case of problems it is still possible to use the old behavior by manually adjusting the amount of memory in the registry.
Besides the changes above, here is a list of all added features:
- Add semi-stub for FileFsVolumeInformation information class (Wine Bug #21466)
- Add stub for winscard.SCardListReadersA/W (Wine Bug #26978)
- Allow to enable/disable InsertMode in wineconsole settings (Wine Bug #38697)
- Allow to create Direct3D Device on desktop window (Required by Juiced 2 and various other applications)
- Ensure console InsertMode changes take effect immediately (Wine Staging Bug #351)
- Fallback to system ping command when CAP_NET_RAW is not available (Wine Bug #8332)
- Fix endless loop in regedit when importing files with very long lines
- Fix link notification conditions for riched20 (Wine Bug #35949)
- Forward GIF encoder requests to windowscodecs (Wine Bug #34356)
- Implement advapi32.GetWindowsAccountDomainSid (Wine Bug #38624)
- Implement default homepage button in inetcpl.cpl (Used by ReactOS)
- Improve stub for NtQueryEaFile (Wine Staging Bug #353)
- Initialize System\CurrentControlSet\Control\TimeZoneInformation registry keys (Wine Staging Bug #354)
- Only send WM_DROPFILES when OLE dnd fails (Wine Bug #29081)
- Properly check existence of libunwind before linking against it (Wine Bug #38713)
- Return proper status codes when NtReadFile/NtWriteFile is called on closed (but not disconnected) pipe (Wine Staging Bug #336)
- Set NamedPipeState to FILE_PIPE_CLOSING_STATE on broken pipe in NtQueryInformationFile (Wine Staging Bug #336)
- Support for AT_ROUND_TO_PAGE flag in NtMapViewOfSection (Wine Staging Bug #347)
- Support for NtSetInformationFile class FileLinkInformation (Wine Staging Bug #297)
- Support for NtSetInformationFile class FileRenameInformation (Wine Bug #30399)
- Use NVX_GPU_MEMORY_INFO extension for more exact video memory accounting on NVIDIA graphic cards
As usual you can also find all changes (including removed/upstream accepted patches) in our changelog.