Generic ATTribute Profile (GATT) is a protocol used by BLE devices for data exchange. Broadly, every LE device contains one or more GATT services, with each service having multiple characteristics, which contain the actual piece of data to be exchanged. The Win32 BLE api is defined in [`bluetoothleapis.h`](https://learn.microsoft.com/en-us/windows/win32/api/bluetoothleapis/), and operates on `HANDLE`s to PDOs created by the driver to remote devices and services, using the `GUID_BLUETOOTHLE_DEVICE_INTERFACE` and `GUID_BLUETOOTH_GATT_SERVICE_DEVICE_INTERFACE` class interfaces respectively.
This MR introduces initial support for accessing GATT services on LE devices:
* Create PDOs for remote devices that we discover GATT services on, and enabling `GUID_BLUETOOTHLE_DEVICE_INTERFACE` for them.
* Because the driver also creates PDOs for bluetooth radios, a tagged union is used to distinguish between device extension values to dispatch IOCTL and PnP IRPs appropriately.
* Enumerate through all `org.bluez.GattService1` objects on BlueZ, and store them on the PE driver inside the associated devices.
* Implement IOCTL_WINEBTH_LE_DEVICE_GET_GATT_SERVICES for device PDOs.
* Use the newly added IOCTL to implement [`BluetoothGATTGetServices`](https://learn.microsoft.com/en-us/windows/win32/api/bluetoothleapis/nf-bluetoothleapis-bluetoothgattgetservices).
--
v6: bluetoothapis/tests: Add tests for BluetoothGATTGetServices.
bluetoothapis: Implement BluetoothGATTGetServices.
winebth.sys: Implement IOCTL_WINEBTH_LE_DEVICE_GET_GATT_SERVICES.
winebth.sys: Store a list of GATT services discovered on LE devices.
winebth.sys: Create PDOs for remote Bluetooth devices.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8174
For React Native. React Native applications use HLSL shader linking extensively. Obviously, these two functions are not enough because they are just stubs. But I think it's good to get them in the tree so they don't get lost. Currently, React Native applications need to rely on the bundled native d3dcompiler.
--
v2: d3dcompiler_47: Implement D3DCreateFunctionLinkingGraph().
d3dcompiler_47: Implement D3DCreateLinker().
https://gitlab.winehq.org/wine/wine/-/merge_requests/8245
These patches replace the existing libtxc_dxtn texture compression/decompression source files with new libraries that can handle more formats. This is will be helpful when we begin to share code with d3dx10/d3dx11, as we will be able to use bcdec to decode all supported compressed formats, and stb_dxt to compress BC1-BC5.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8226
IWinInetHttpInfo_QueryInfo returns a multibyte string, not a wide string. We
were also wrongly expecting it to have a NUL terminator.
* * *
this one doesn't feel good. IWinInetHttpInfo_QueryInfo calls HttpInfo_QueryInfo (urlmon), which calls HttpQueryInfoA (wininet), so it returns char*. but inside, HttpQueryInfoA is calling HttpQueryInfoW and does charset conversion. so we are converting the string to multibyte and back.
maybe there's an API that returns wchar* i don't know about.
--
v3: mshtml: Fix misuse of IWinInetHttpInfo_QueryInfo.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8228
I think it's not possible to implement it correctly using floating point operations when 24bit precision is used. We would either need to implement it without floating point operations (I'll look into that) or set the precision.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8242#note_106331
Wine applications crash in VNC/headless environments due to invalid all-zero monitor coordinates.
The root cause is:
- Environment Issue: VNC systems report all displays as RR_Disconnected
- Faulty Fallback: Wine incorrectly reverts to legacy XRandR 1.0 API when no "connected" displays are detected
- API Incompatibility: Modern XRandR 1.6 doesn't support Wine's XRandR 1.0 implementation, causing XRRSizes() to return empty display modes
- Uninitialized Data: This leaves critical display fields (dmPelsWidth/Height) at initialization value 0
--
v3: winex11: handle fallback display modes when XRandR fails
https://gitlab.winehq.org/wine/wine/-/merge_requests/8216