On Thu Sep 7 13:49:19 2023 +0000, Rémi Bernon wrote:
> I missed this before, but I think the check_interface check is a bit
> pointless as it will always succeed on Windows.
> Something like that would be better (using `check_interface_broken` only
> where it is needed):
> ```suggestion:-14+0
> #define check_interface_broken( obj, iid, supported ) check_interface_(
> __LINE__, obj, iid, supported, TRUE )
> #define check_interface( obj, iid, supported ) check_interface_(
> __LINE__, obj, iid, supported, FALSE )
> static void check_interface_( unsigned int line, void *obj, const IID
> *iid, BOOL supported, BOOL is_broken )
> {
> HRESULT hr, expected_hr, broken_hr;
> IUnknown *iface = obj;
> IUnknown *unk;
> expected_hr = supported ? S_OK : E_NOINTERFACE;
> broken_hr = supported ? E_NOINTERFACE : S_OK;
> hr = IUnknown_QueryInterface( iface, iid, (void **)&unk );
> ok_(__FILE__, line)( hr == expected_hr || broken( is_broken && hr ==
> broken_hr ), "got hr %#lx.\n", hr );
> if (SUCCEEDED(hr)) IUnknown_Release( unk );
> }
> ```
> Or, maybe even better, use the basic `check_interface`, without the
> broken result and remove the broken check for IAgileObject interface
> which probably doesn't really matter on the factory.
I've removed it, seems like it's not really necessary to test for it. Though, I don't understand why Office queries for `IAgileObject`. It's a Microsoft program so they should know it's not supported. Minecraft also queries for an interface that returns `E_NOINTERFACE`, it seems bizarre.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3672#note_44663
This goes on top of !325 (which was already approved).
--
v2: include: Add some misc D3D12 structs/enums.
include: Add some D3D12 raytracing specific structs.
include: Add the D3D12_BARRIER_GROUP struct.
include: Add the ID3D12Tools interface.
include: Add the ID3D12VirtualizationGuestDevice interface.
include: Add the ID3D12Device10 interface.
include: Add the ID3D12Device9 interface.
include: Add the ID3D12ShaderCacheSession interface.
include: Add the ID3D12GraphicsCommandList4 interface.
include: Add the ID3D12MetaCommand interface.
include: Add the ID3D12Heap1 interface.
include: Add the ID3D12Resource{1,2} interfaces.
include: Add the ID3D12Device8 interface.
include: Add the structs D3D12_FEATURE_DATA_D3D12_OPTIONS{6,7}.
include: Add the ID3D12Device7 interface.
include: Add the ID3D12ProtectedResourceSession1 interface.
include: Add the ID3D12Device6 interface.
include: Add the ID3D12DeviceRemovedExtendedData{,1,2} interfaces.
include: Add the ID3D12DeviceRemovedExtendedDataSettings{,1} interfaces.
include: Add the ID3D12Device5 interface.
include: Add the ID3D12StateObjectProperties interface.
include: Add the ID3D12StateObject interface.
include: Add the ID3D12LifetimeTracker interface.
include: Add the ID3D12SwapChainAssistant interface.
include: Add the ID3D12LifetimeOwner interface.
include: Add the ID3D12Device4 interface.
include: Add the ID3D12PipelineLibrary{,1} interfaces.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/332
This series fixes a few bugs in the d3d tests that cause them to crash on my Windows XP laptop with the r200 GPU (dx8 era).
There are plenty more problems on this GPU on Windows. d3d8:visual hangs the entire system. d3d9:device has some failing tests. d3d9:visual crashes, which is probably good because otherwise it would also cause a kernel panic.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3757
EA Desktop depends on that when tries to run the game with elevated privileges (which is performed from a process started by a service and running in a service session on Windows).
The improved stub only returns interactive ("Console") session, while Windows at least starting from Win Vista also always have "Services" session. While we could probably return "Sevices" as well, I think it is safer not to while we don't really have services running in "Services" session (along with all the winstation, token etc. info).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3756
The validation code is meant both as a check that the frontend is behaving properly and as a sort of the documentation to establish what is allowed and what is not in the IR.
~~Currently an assertion is thrown if validation fails. I realize this is a rather strong proposal, but it's of course up for debate. In theory asserting here is the right thing, as it is expected that the frontend is generating correct IR code. However vkd3d is already used in production for many programs, and it could very well be that some of those are working properly even if the generated IR is somewhat out of specs; allowing the assertion might cause regressions as soon as enough checks are implemented in the validator. Please let me know your opinions.~~ **Solved in favor of a softer failure, and only when validation is enabled**
--
v5: vkd3d-shader: Validate source parameters.
vkd3d-shader: Validate destination parameters.
vkd3d-shader: Validate register types.
vkd3d-shader: Validate instruction handlers.
vkd3d-shader: Introduce a boilerplate to validate the generated IR.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/317
If DISABLEAUTOREDIRECTS is set in BINDINFO options, urlmon does not set HTTP verb to GET when handling redirections.
Although HTTP specification is vague on the correct behaviour here, many web servers expect this. This is what's causing the "400 Bad Request" error when user tries to log into GMail accounts using Outlook.
--
v4: urlmon: test redirection of POST requests
urlmon: fix HTTP redirects when auto redirection is disabled
https://gitlab.winehq.org/wine/wine/-/merge_requests/3725
This begins the initial implementation of a unified QueryInterface on the dispex. There's a couple of hacks used to make the conversion split up easier, but they're all resolved within this MR.
--
v3: mshtml: Trace the object name in dispex methods.
mshtml: Use query_interface in the dispex vtbl for XMLHttpRequest.
mshtml: Use query_interface in the dispex vtbl for inner windows.
mshtml: Introduce query_interface in dispex vtbl and use it for DOM Nodes.
mshtml: Return interface directly from node vtbl's QI instead of HRESULT,
mshtml: Expose an EventTarget interface on the outer window for events'
https://gitlab.winehq.org/wine/wine/-/merge_requests/3723
This goes on top of !325 (which was already approved).
--
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/332
This begins the initial implementation of a unified QueryInterface on the dispex. There's a couple of hacks used to make the conversion split up easier, but they're all resolved within this MR.
--
v2: mshtml: Use query_interface in the dispex vtbl for XMLHttpRequest.
mshtml: Use query_interface in the dispex vtbl for inner windows.
mshtml: Introduce query_interface in dispex vtbl and use it for DOM Nodes.
mshtml: Return interface directly from node vtbl's QI instead of HRESULT,
mshtml: Expose an EventTarget interface on the outer window for events'
https://gitlab.winehq.org/wine/wine/-/merge_requests/3723
If DISABLEAUTOREDIRECTS is set in BINDINFO options, urlmon does not set HTTP verb to GET when handling redirections.
Although HTTP specification is vague on the correct behaviour here, many web servers expect this. This is what's causing the "400 Bad Request" error when user tries to log into GMail accounts using Outlook.
--
v3: urlmon: test redirection of POST requests
https://gitlab.winehq.org/wine/wine/-/merge_requests/3725
The validation code is meant both as a check that the frontend is behaving properly and as a sort of the documentation to establish what is allowed and what is not in the IR.
~~Currently an assertion is thrown if validation fails. I realize this is a rather strong proposal, but it's of course up for debate. In theory asserting here is the right thing, as it is expected that the frontend is generating correct IR code. However vkd3d is already used in production for many programs, and it could very well be that some of those are working properly even if the generated IR is somewhat out of specs; allowing the assertion might cause regressions as soon as enough checks are implemented in the validator. Please let me know your opinions.~~ **Solved in favor of a softer failure, and only when validation is enabled**
--
v4: vkd3d-shader: Validate source parameters.
vkd3d-shader: Validate destination parameters.
vkd3d-shader: Validate register types.
vkd3d-shader: Validator instruction handlers.
vkd3d-shader: Introduce a boilerplate to validate the generated IR.
vkd3d-shader: Embed the parsing location in vkd3d_shader_instruction.
vkd3d-shader: Destroy the SM6 parser on parsing errors.
vkd3d-shader: Destroy the SM4 parser on parsing errors.
vkd3d-shader: Destroy the SM1 parser on parsing errors.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/317
Windows 10 [received support](https://devblogs.microsoft.com/commandline/af_unix-comes-to-window… for AF_UNIX sockets in Insider Build 17063. This merge request adds basic support for AF_UNIX sockets to ws2_32 and wineserver.
Of particular note is the difficulty in handling `sun_path`. Most of the functions that allow for translating Windows paths to Unix paths are not accessible from ws2_32. I considered the following options:
* Pass the Windows path to wineserver and do the conversion there.
* This is, as far as I can tell, not possible without major rearchitecting. wineserver does not have functions to translate Windows paths to Unix paths, for obvious reasons.
* Obtain the current working directory of the requesting process and temporarily change directories to there.
* This only handles relative paths and fails for absolute paths, UNC paths, etc.
* Conditionally change directories based on whether the path is relative or not.
* This is error-prone and wineserver does not have the requisite functions to do this cleanly.
I ultimately decided to pass the translated Unix path to wineserver, which changes directories to `dirname(path)`. It then provides `bind` and `connect` with `basename(path)`. This is not threadsafe, but wineserver is not (currently) multithreaded.
Abstract sockets are not fully supported by this patch, matching the behavior of Windows.
--
v50: ws2_32/tests: Add test for AF_UNIX sockets fix.
server: Fix getsockname() and accept() on AF_UNIX sockets.
server: Introduce error when attempting to create a SOCK_DGRAM AF_UNIX socket.
server: Allow for deletion of socket files.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786
Windows 10 [received support](https://devblogs.microsoft.com/commandline/af_unix-comes-to-window… for AF_UNIX sockets in Insider Build 17063. This merge request adds basic support for AF_UNIX sockets to ws2_32 and wineserver.
Of particular note is the difficulty in handling `sun_path`. Most of the functions that allow for translating Windows paths to Unix paths are not accessible from ws2_32. I considered the following options:
* Pass the Windows path to wineserver and do the conversion there.
* This is, as far as I can tell, not possible without major rearchitecting. wineserver does not have functions to translate Windows paths to Unix paths, for obvious reasons.
* Obtain the current working directory of the requesting process and temporarily change directories to there.
* This only handles relative paths and fails for absolute paths, UNC paths, etc.
* Conditionally change directories based on whether the path is relative or not.
* This is error-prone and wineserver does not have the requisite functions to do this cleanly.
I ultimately decided to pass the translated Unix path to wineserver, which changes directories to `dirname(path)`. It then provides `bind` and `connect` with `basename(path)`. This is not threadsafe, but wineserver is not (currently) multithreaded.
Abstract sockets are not fully supported by this patch, matching the behavior of Windows.
--
v49: ws2_32/tests: Add test for AF_UNIX sockets fix.
server: Fix getsockname() and accept() on AF_UNIX sockets.
server: Introduce error when attempting to create a SOCK_DGRAM AF_UNIX socket.
server: Allow for deletion of socket files.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786
Windows 10 [received support](https://devblogs.microsoft.com/commandline/af_unix-comes-to-window… for AF_UNIX sockets in Insider Build 17063. This merge request adds basic support for AF_UNIX sockets to ws2_32 and wineserver.
Of particular note is the difficulty in handling `sun_path`. Most of the functions that allow for translating Windows paths to Unix paths are not accessible from ws2_32. I considered the following options:
* Pass the Windows path to wineserver and do the conversion there.
* This is, as far as I can tell, not possible without major rearchitecting. wineserver does not have functions to translate Windows paths to Unix paths, for obvious reasons.
* Obtain the current working directory of the requesting process and temporarily change directories to there.
* This only handles relative paths and fails for absolute paths, UNC paths, etc.
* Conditionally change directories based on whether the path is relative or not.
* This is error-prone and wineserver does not have the requisite functions to do this cleanly.
I ultimately decided to pass the translated Unix path to wineserver, which changes directories to `dirname(path)`. It then provides `bind` and `connect` with `basename(path)`. This is not threadsafe, but wineserver is not (currently) multithreaded.
Abstract sockets are not fully supported by this patch, matching the behavior of Windows.
--
v48: ws2_32/tests: Add test for AF_UNIX sockets fix.
server: Fix getsockname() and accept() on AF_UNIX sockets.
server: Introduce error when attempting to create a SOCK_DGRAM AF_UNIX socket.
server: Allow for deletion of socket files.
ws2_32: Add support for AF_UNIX sockets.
ntdll/unix: Add support for AF_UNIX sockets to multiple functions.
ws2_32: Add afunix.h header.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786