Note for patch 7:
See https://docs.microsoft.com/en-us/windows/win32/api/d3d10/ns-d3d10-d3d10_map… :
> A block-compressed texture is encoded in 4x4 blocks (see virtual size vs physical size) ; therefore, RowPitch is the number of bytes in a block of 4x4 texels.
--
v2: d3dx10: Return E_FAIL in D3DX10CreateEffectFromFile for NULL file name.
d3dx10: Support effect creation for compiled shader.
d3dx10: Introduce create_effect().
d3dx10/tests: Add tests for D3DX10CreateEffectFromResource.
d3dx10/tests: Add tests for D3DX10CreateEffectFromFile.
d3dx10/tests: Add tests for D3DX10CreateEffectFromMemory.
https://gitlab.winehq.org/wine/wine/-/merge_requests/697
--
v2: mf: Initialize output media types when binding session output nodes.
mf/tests: Test that IMFMediaSession_SetTopology should set media types.
mf/tests: Test some IMFMediaSession_SetTopology error cases.
mf/tests: Add helpers to wait and check media session events.
mf/tests: Allocate test callbacks dynamically and check refcounts.
mf/tests: Keep a presentation descriptor in the test source.
mf/tests: Move and split some helper code around.
https://gitlab.winehq.org/wine/wine/-/merge_requests/711
In preparation for nulldrv display modes support.
--
v9: win32u: Move display placement logic out of graphics drivers.
winemac.drv: Remove unnecessary display mode flags checks.
win32u: Support interlaced and stretched display modes.
winex11.drv: Remove unnecessary display mode flags checks.
win32u: Move full display mode lookup out of graphics drivers.
win32u: Sort adapter display modes after reading from the registry.
https://gitlab.winehq.org/wine/wine/-/merge_requests/576
Created a new MR, because the mailing bridge wouldn't trigger on force pushes.
--
v4: windows.media.speech/tests: Skip SpeechRecognitionListConstraint tests on Win10 1709 x32 and below.
windows.media.speech/tests: Add basic query tests for SpeechSynthesizerOptions.
include/windows.media.speechsynthesis.idl: Add missing interfaces to SpeechSynthesizerOptions runtimeclass.
windows.media.speech: Add missing async_void_Release implementation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/708
Created a new MR, because the mailing bridge wouldn't trigger on force pushes.
--
v3: windows.media.speech/tests: Skip SpeechRecognitionListConstraint tests on Win10 1709 x32 and below.
windows.media.speech/tests: Add basic query tests for SpeechSynthesizerOptions.
include/windows.media.speechsynthesis.idl: Order items alphabetically.
include/windows.media.speechsynthesis.idl: Add missing interfaces to SpeechSynthesizerOptions runtimeclass.
include/windows.media.speechsynthesis.idl: Add SpeechAppendedSilence and SpeechPunctuationSilence enums.
windows.media.speech: Add missing async_void_Release implementation.
windows.media.speech/tests: Remove some flaky refcount checks.
https://gitlab.winehq.org/wine/wine/-/merge_requests/708
This should implement all of sessionStorage and most of the missing localStorage (except for the space quota for the latter). Some other common parts are still missing and pending (using props to directly access items in the underlying storage, and StorageEvents, which will come later).
On native, sessionStorage seems to be per-thread, and based on a specific origin, so it's implemented that way using a rbtree for origins in the thread local storage. The diff below (applied after all of the patches) should show that, which works on native as expected, but it's not in the actual commits because it crashes wine-gecko due to known multi-threading issues ([bug 37906](https://bugs.winehq.org/show_bug.cgi?id=37906)).
```diff
diff --git a/dlls/mshtml/tests/misc.c b/dlls/mshtml/tests/misc.c
index c2c8370..e358e9c 100644
--- a/dlls/mshtml/tests/misc.c
+++ b/dlls/mshtml/tests/misc.c
@@ -193,6 +193,32 @@ static HRESULT get_sessionstorage(IHTMLDocument2 *doc, IHTMLStorage **storage)
return hres;
}
+static DWORD WINAPI test_HTMLStorage_thread(void *data)
+{
+ IHTMLStorage *storage;
+ IHTMLDocument2 *doc;
+ BSTR key = data;
+ HRESULT hres;
+ VARIANT var;
+
+ CoInitialize(NULL);
+
+ doc = create_doc_from_url(L"http://www.codeweavers.com/");
+ hres = get_sessionstorage(doc, &storage);
+ ok(hres == S_OK, "got %08lx\n", hres);
+
+ V_VT(&var) = 0xdead;
+ hres = IHTMLStorage_getItem(storage, key, &var);
+ ok(hres == S_OK, "getItem failed: %08lx\n", hres);
+ ok(V_VT(&var) == VT_NULL, "got %d\n", V_VT(&var));
+
+ IHTMLStorage_Release(storage);
+ IHTMLDocument2_Release(doc);
+
+ CoUninitialize();
+ return 0;
+}
+
static void test_HTMLStorage(void)
{
IHTMLDocument2 *doc, *doc2;
@@ -200,7 +226,9 @@ static void test_HTMLStorage(void)
LONG space, length, lval;
VARIANT var;
BSTR key, value;
+ HANDLE thread;
HRESULT hres;
+ DWORD ret;
doc = create_doc_from_url(L"http://www.codeweavers.com/");
doc2 = create_doc_from_url(L"http://www.codeweavers.com/");
@@ -607,6 +635,12 @@ static void test_HTMLStorage(void)
ok(hres == S_OK, "get_remainingSpace failed %08lx\n", hres);
ok(lval == space, "remainingSpace = %ld\n", lval);
+ /* Different thread */
+ thread = CreateThread(NULL, 0, test_HTMLStorage_thread, key, 0, NULL);
+ ret = WaitForSingleObject(thread, INFINITE);
+ ok(ret == WAIT_OBJECT_0, "WaitForSingleObject returned %08lx\n", ret);
+ CloseHandle(thread);
+
hres = IHTMLStorage_clear(storage);
ok(hres == S_OK, "clear failed %08lx\n", hres);
```
There's another rbtree for the actual storage on a given origin, which contains key/value pairs, with keys stored inline because they do not change.
--
v3: mshtml: Implement remainingSpace prop for sessionStorage.
mshtml: Implement length prop for Storage.
mshtml: Implement key() for localStorage.
mshtml: Implement key() for sessionStorage.
mshtml: Implement clear() for Storage.
mshtml: Implement removeItem() for sessionStorage.
mshtml: Implement getItem() for sessionStorage.
mshtml: Implement setItem() for sessionStorage.
https://gitlab.winehq.org/wine/wine/-/merge_requests/704
Initial implementation for registry application hives, this is a step forward to get Visual Studio to run.
:-)
--
v3: server: save app hive into it's file when closing handle.
server/registry: pass file name instead of file handle to server.
kernelbase: Implement RegLoadAppKey.
ntdll: Initial implementation for application hives.
ntdll: Move NtLoadKey implementation to NtLoadKeyEx.
ntdll/test: Test for application hives.
ntdll: Create NtLoadKeyEx syscall stub.
advapi32/test: Create tests for RegLoadAppKey.
https://gitlab.winehq.org/wine/wine/-/merge_requests/717
Initial implementation for registry application hives, this is a step forward to get Visual Studio to run.
:-)
--
v2: server: save app hive into it's file when closing handle.
server/registry: pass file name instead of file handle to server.
kernelbase: Implement RegLoadAppKey.
ntdll: Initial implementation for application hives.
https://gitlab.winehq.org/wine/wine/-/merge_requests/717
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
--
v2: mfplat: Partially implement MFInitMediaTypeFromAMMediaType().
mfplat: Partially implement MFInitMediaTypeFromVideoInfoHeader().
mfplat/tests: Add some tests for legacy media type conersion functions.
https://gitlab.winehq.org/wine/wine/-/merge_requests/713
On Fri Aug 26 00:36:32 2022 +0000, Davide Beatrici wrote:
> What do you mean? A complex piece of software like this has rigid
> standards in order to prevent potential issues from arising, whether
> immediately or in the future.
> I too made a few mistakes in my merge requests, but I have always taken
> the time to fix them and make things look nice. This is what improving
> is about.
> Also, consider that generally the more reviewers the better:
> - @julliard noticed that you changed the WinAPI definitions and
> explained that you cannot do that.
> - @jhol spotted the icon issue.
> - I tested your changes and reported back the results.
> Imagine if this merge request was accepted as it was right at the
> beginning: guaranteed breakage.
> If you deem your contribution(s) important to the project, please put on
> hold the MR until you have time to fix it.
OK, fair enough. I'm unemployed at the moment, so I have plenty of time, but, it's not always enjoyable. I suppose I can keep it open and work on it when I'm doing better.
I found it difficult finding implementations for COM interfaces in the code, and would like to have C++ classes instead, as I notice through public debugging symbols for DLL's on Windows 10, especially comdlg32, that developers at Microsoft are writing significant parts in C++.
I bought that up before, but it was dismissed because it may add complexity that others do not want to deal with, and, I agree that C code is more transparent.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/672#note_6971
On Thu Aug 25 22:59:28 2022 +0000, Ben Cottrell wrote:
> I wish you had cut to the point. I'm closing this merge request for now,
> and reconsidering whether I should contribute again, because this has
> been more difficult than it should have been.
What do you mean? A complex piece of software like this has rigid standards in order to prevent potential issues from arising, whether immediately or in the future.
I too made a few mistakes in my merge requests, but I have always taken the time to fix them and make things look nice. This is what improving is about.
Also, consider that generally the more reviewers the better:
- @julliard noticed that you changed the WinAPI definitions and explained that you cannot do that.
- @jhol spotted the icon issue.
- I tested your changes and reported back the results.
Imagine if this merge request was accepted as it was right at the beginning: guaranteed breakage.
If you deem your contribution(s) important to the project, please put on hold the MR until you have time to fix it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/672#note_6968
On Thu Aug 25 18:51:50 2022 +0000, jhol wrote:
> It looks like you just rotated the up arrow 90-degrees, and it isn't
> aligned with the pixel grid making it look blurry.
> The original icon was derrived from
> `tango-icon-theme-0.8.90/scalable/actions/go-XXX.svg`, but with the
> layout adjusted to reduce the size to 24x24 while preserving the
> 1-pixel. The end result should match
> `tango-icon-theme-0.8.90/22x22/actions/go-XXX.svg` with a 1-pixel
> transparent border all around.
I wish you had cut to the point. I'm closing this merge request for now, and reconsidering whether I should contribute again, because this has been more difficult than it should have been.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/672#note_6965
This should implement all of sessionStorage and most of the missing localStorage (except for the space quota for the latter). Some other common parts are still missing and pending (using props to directly access items in the underlying storage, and StorageEvents, which will come later).
On native, sessionStorage seems to be per-thread, and based on a specific origin, so it's implemented that way using a rbtree for origins in the thread local storage. The diff below (applied after all of the patches) should show that, which works on native as expected, but it's not in the actual commits because it crashes wine-gecko due to known multi-threading issues ([bug 37906](https://bugs.winehq.org/show_bug.cgi?id=37906)).
```diff
diff --git a/dlls/mshtml/tests/misc.c b/dlls/mshtml/tests/misc.c
index c2c8370..e358e9c 100644
--- a/dlls/mshtml/tests/misc.c
+++ b/dlls/mshtml/tests/misc.c
@@ -193,6 +193,32 @@ static HRESULT get_sessionstorage(IHTMLDocument2 *doc, IHTMLStorage **storage)
return hres;
}
+static DWORD WINAPI test_HTMLStorage_thread(void *data)
+{
+ IHTMLStorage *storage;
+ IHTMLDocument2 *doc;
+ BSTR key = data;
+ HRESULT hres;
+ VARIANT var;
+
+ CoInitialize(NULL);
+
+ doc = create_doc_from_url(L"http://www.codeweavers.com/");
+ hres = get_sessionstorage(doc, &storage);
+ ok(hres == S_OK, "got %08lx\n", hres);
+
+ V_VT(&var) = 0xdead;
+ hres = IHTMLStorage_getItem(storage, key, &var);
+ ok(hres == S_OK, "getItem failed: %08lx\n", hres);
+ ok(V_VT(&var) == VT_NULL, "got %d\n", V_VT(&var));
+
+ IHTMLStorage_Release(storage);
+ IHTMLDocument2_Release(doc);
+
+ CoUninitialize();
+ return 0;
+}
+
static void test_HTMLStorage(void)
{
IHTMLDocument2 *doc, *doc2;
@@ -200,7 +226,9 @@ static void test_HTMLStorage(void)
LONG space, length, lval;
VARIANT var;
BSTR key, value;
+ HANDLE thread;
HRESULT hres;
+ DWORD ret;
doc = create_doc_from_url(L"http://www.codeweavers.com/");
doc2 = create_doc_from_url(L"http://www.codeweavers.com/");
@@ -607,6 +635,12 @@ static void test_HTMLStorage(void)
ok(hres == S_OK, "get_remainingSpace failed %08lx\n", hres);
ok(lval == space, "remainingSpace = %ld\n", lval);
+ /* Different thread */
+ thread = CreateThread(NULL, 0, test_HTMLStorage_thread, key, 0, NULL);
+ ret = WaitForSingleObject(thread, INFINITE);
+ ok(ret == WAIT_OBJECT_0, "WaitForSingleObject returned %08lx\n", ret);
+ CloseHandle(thread);
+
hres = IHTMLStorage_clear(storage);
ok(hres == S_OK, "clear failed %08lx\n", hres);
```
There's another rbtree for the actual storage on a given origin, which contains key/value pairs, with keys stored inline because they do not change.
--
v2: mshtml: Implement remainingSpace prop for sessionStorage.
mshtml: Implement length prop for Storage.
mshtml: Implement key() for localStorage.
mshtml: Implement key() for sessionStorage.
mshtml: Implement clear() for Storage.
mshtml: Implement removeItem() for sessionStorage.
mshtml: Implement getItem() for sessionStorage.
mshtml: Implement setItem() for sessionStorage.
https://gitlab.winehq.org/wine/wine/-/merge_requests/704
--
v3: user32: Pass resource ID as a string in DIALOG_CreateControls32.
user32: Support passing bitmap and icon resource ID as a string when creating static conctrol.
user32: Support resource ID strings in CREATESTRUCT Unicode conversion.
https://gitlab.winehq.org/wine/wine/-/merge_requests/693
jhol (@jhol) commented about dlls/comctl32/idb_hist_large.svg:
> -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
It looks like you just rotated the up arrow 90-degrees, and it isn't aligned with the pixel grid making it look blurry.
The original icon was derrived from `tango-icon-theme-0.8.90/scalable/actions/go-XXX.svg`, but with the layout adjusted to reduce the size to 24x24 while preserving the 1-pixel. The end result should match `tango-icon-theme-0.8.90/22x22/actions/go-XXX.svg` with a 1-pixel transparent border all around.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/672#note_6938
This should implement all of sessionStorage and most of the missing localStorage (except for the space quota for the latter). Some other common parts are still missing and pending (using props to directly access items in the underlying storage, and StorageEvents, which will come later).
On native, sessionStorage seems to be per-thread, and based on a specific origin, so it's implemented that way using a rbtree for origins in the thread local storage. The diff below (applied after all of the patches) should show that, which works on native as expected, but it's not in the actual commits because it crashes wine-gecko due to known multi-threading issues ([bug 37906](https://bugs.winehq.org/show_bug.cgi?id=37906)).
```diff
diff --git a/dlls/mshtml/tests/misc.c b/dlls/mshtml/tests/misc.c
index c2c8370..e358e9c 100644
--- a/dlls/mshtml/tests/misc.c
+++ b/dlls/mshtml/tests/misc.c
@@ -193,6 +193,32 @@ static HRESULT get_sessionstorage(IHTMLDocument2 *doc, IHTMLStorage **storage)
return hres;
}
+static DWORD WINAPI test_HTMLStorage_thread(void *data)
+{
+ IHTMLStorage *storage;
+ IHTMLDocument2 *doc;
+ BSTR key = data;
+ HRESULT hres;
+ VARIANT var;
+
+ CoInitialize(NULL);
+
+ doc = create_doc_from_url(L"http://www.codeweavers.com/");
+ hres = get_sessionstorage(doc, &storage);
+ ok(hres == S_OK, "got %08lx\n", hres);
+
+ V_VT(&var) = 0xdead;
+ hres = IHTMLStorage_getItem(storage, key, &var);
+ ok(hres == S_OK, "getItem failed: %08lx\n", hres);
+ ok(V_VT(&var) == VT_NULL, "got %d\n", V_VT(&var));
+
+ IHTMLStorage_Release(storage);
+ IHTMLDocument2_Release(doc);
+
+ CoUninitialize();
+ return 0;
+}
+
static void test_HTMLStorage(void)
{
IHTMLDocument2 *doc, *doc2;
@@ -200,7 +226,9 @@ static void test_HTMLStorage(void)
LONG space, length, lval;
VARIANT var;
BSTR key, value;
+ HANDLE thread;
HRESULT hres;
+ DWORD ret;
doc = create_doc_from_url(L"http://www.codeweavers.com/");
doc2 = create_doc_from_url(L"http://www.codeweavers.com/");
@@ -607,6 +635,12 @@ static void test_HTMLStorage(void)
ok(hres == S_OK, "get_remainingSpace failed %08lx\n", hres);
ok(lval == space, "remainingSpace = %ld\n", lval);
+ /* Different thread */
+ thread = CreateThread(NULL, 0, test_HTMLStorage_thread, key, 0, NULL);
+ ret = WaitForSingleObject(thread, INFINITE);
+ ok(ret == WAIT_OBJECT_0, "WaitForSingleObject returned %08lx\n", ret);
+ CloseHandle(thread);
+
hres = IHTMLStorage_clear(storage);
ok(hres == S_OK, "clear failed %08lx\n", hres);
```
There's another rbtree for the actual storage on a given origin, which contains key/value pairs, with keys stored inline because they do not change.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/704
On Thu Aug 25 10:37:24 2022 +0000, Robert Wilhelm wrote:
> Hi Etaash, you have to squash the formatting and whitespace changes into
> the first commit. The test build will run after each commit and bail out
> if there are errors and warnings.
lol it did nothing other than duplicate the commits,
pls help
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/706#note_6910
fixes bug #48988
I am not very familiar with assembly, so feedback is appreciated
--
v11: improve formatting
check correct number of bytes
fix missing newline
remove extra space
fix errors
fix potential logic error
fix print formatting
maybe fixes error?
implement cmp instruction
https://gitlab.winehq.org/wine/wine/-/merge_requests/706
> This was already committed, but is this really correct? I'm not seeing RtlRestoreContext exported from i386 kernel32 or ntdll on my Windows 10 machine. (Maybe it's out of date, though? I have Windows 10 version 21H2, build 19044.1826.)
Yes, it was added fairly recently.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/678#note_6852
Fixes a bug that occurs when:
- `CoInitializeEx(NULL, COINIT_MULTITHREADED);` is called on thread 1
- `CoInitializeEx(NULL, COINIT_MULTITHREADED);` is called on thread 2
- `CoUninitialize()` is called on thread 1.
- `CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);` is called on thread 1.
After this, when attempting to marshal an interface on thread 2, when `ipid_to_ifstub` is called, `apartment_findfromtid()` will find thread 1's STA and not the MTA.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/705
This includes some fixes for obvious mistakes as well as initial cleanup of the WM async reader, in preparation for implementing proper threading support.
I'm planning on doing some more refactoring first, ultimately implementing the async reader on top of the sync reader, and removing the need for a private interface. I've checked that it can indeed work on Windows too, and it'll make the code simpler overall.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/695
- Based on !463
- _RunAndWait and exception handling implemented in later commits
@piotr
--
v28: msvcr100: Implement _StructuredTaskCollection::_Schedule and _Schedule_loc.
msvcr100: Factor out the mapping of a context to a scheduler.
https://gitlab.winehq.org/wine/wine/-/merge_requests/464
I could have used CryptStringToBinaryA for the hex->bin conversion, but that would add another import to wineboot.
This patch was created by me on request from Alexandr Oleynikov of the Lutris project back in September of 2020.
--
v3: wineboot: Generate ProductId from host's machine id.
https://gitlab.winehq.org/wine/wine/-/merge_requests/701
I could have used CryptStringToBinaryA for the hex->bin conversion, but that would add another import to wineboot.
This patch was created by me on request from Alexandr Oleynikov of the Lutris project back in September of 2020.
--
v2: wineboot: Generate ProductId from host's machine id.
https://gitlab.winehq.org/wine/wine/-/merge_requests/701
I could have used CryptStringToBinaryA for the hex->bin conversion, but that would add another import to wineboot.
This patch was created by me on request from Alexandr Oleynikov of the Lutris project back in September of 2020.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/701
In order to write conformance tests for widl we'll need to run midl.exe from the SDK against some tests IDL, and do the same with our own IDL parser implementation. This is going to be easier using some midl.exe program, which will import widl lexer and parser.
This MR is some cleanup in preparation for this, trying to reduce the amount of global state in widl, and make it possible to share only selected parts with midl.exe.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/570
--
v3: mshtml: Handle S_FALSE return values from IUri methods.
mshtml: Handle S_FALSE from IUri methods in the NSAPI interfaces.
mshtml: Handle S_FALSE from IUri methods when navigating.
mshtml: Don't navigate if GetDisplayUri failed.
mshtml: Handle S_FALSE from IUri methods when checking targetOrigin.
mshtml: Handle S_FALSE from IUri methods in Anchor Elements.
mshtml: Handle S_FALSE from IUri methods in localStorage and sessionStorage.
https://gitlab.winehq.org/wine/wine/-/merge_requests/683
The objective of this patch series is to converge to the correct argument count checks and offset parameter dimensions when parsing the Load, Sample, SampleLevel, Gather (and variants) methods, for the different texture types.
I made the following table to summarize the expected arguments and their dimensions:

Getting these required some extensive trial-and-error, because:
- Official documentation about the methods is spread in different pages and in a somewhat inconsistent manner.
- Automatic vector truncation, scalar broadcasting, and type conversion, make shaders that pass inexact types compile.
- clamp and status arguments (for tiled resources) are not present in fxc 9, and yet, they are part of ps_5_0 and vs_5_0.
- Some methods (Load() in particular) require the mipmap level as part of the location parameter (except for Multi-Sampled textures), while other don't.
For implementing new methods I recommend passing an invalid parameter count to them in fxc 10, so that it lists available overloads.
And to do this for each texture type.
--
v2: vkd3d-shader/hlsl: Add offset parameter to 'Load' method.
vkd3d-shader/hlsl: Properly check argument count in gather methods.
vkd3d-shader/hlsl: Properly check argument count in SampleLevel method.
vkd3d-shader/hlsl: Use proper dimensions on SampleLevel method offset parameter.
vkd3d-shader/hlsl: Properly check argument count in Sample method.
vkd3d-shader/hlsl: Use proper dimensions on gather methods offset parameter.
vkd3d-shader/hlsl: Use proper dimensions on Sample method offset parameter.
vkd3d-shader/hlsl: Parse the SampleLevel method.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/9
Copy propagation is translated to index paths, invalidation of variable components is made more precise.
This, together with checking for non-static object references (which are not allowed in HLSL) allows to set object register sizes back to zero without overlapping registers.
I also included implicit array initialization, since, if I remember correctly, what was holding it back was that structs/arrays with object components couldn't be represented with the correct register offsets.
After this, we have to decide if (and how to) move register allocation and register offset calculation to each shader model.
--
v3: vkd3d-shader/hlsl: Support initialization of implicit size arrays.
vkd3d-shader/hlsl: Set objects' register size back to 0.
vkd3d-shader/hlsl: Check for non-static object references.
vkd3d-shader/hlsl: Invalidate components more precisely in copy
vkd3d-shader/hlsl: Replace register offsets with index paths in copy
vkd3d-shader/hlsl: Print halfs in dump_ir_constant().
vkd3d-shader/hlsl: Skip implicit conversion if types are equal.
vkd3d-shader/hlsl: Set component count for objects to 1.
tests: Test object references.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/7
--
v2: mshtml: Handle S_FALSE return values from IUri methods.
mshtml: Handle S_FALSE from IUri methods in the NSAPI interfaces.
mshtml: Handle S_FALSE from IUri methods when navigating.
mshtml: Handle S_FALSE from IUri methods when checking targetOrigin.
mshtml: Handle S_FALSE from IUri methods in Anchor Elements.
mshtml: Handle S_FALSE from IUri methods in localStorage and sessionStorage.
https://gitlab.winehq.org/wine/wine/-/merge_requests/683