Required by Hitman 2.
Signed-off-by: Conor McCarthy cmccarthy@codeweavers.com --- .../api-ms-win-core-processthreads-l1-1-3.spec | 2 +- dlls/kernel32/kernel32.spec | 1 + dlls/kernelbase/kernelbase.spec | 2 +- dlls/kernelbase/thread.c | 10 ++++++++++ 4 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/api-ms-win-core-processthreads-l1-1-3/api-ms-win-core-processthreads-l1-1-3.spec b/dlls/api-ms-win-core-processthreads-l1-1-3/api-ms-win-core-processthreads-l1-1-3.spec index 3b57e1c8..f8f5a870 100644 --- a/dlls/api-ms-win-core-processthreads-l1-1-3/api-ms-win-core-processthreads-l1-1-3.spec +++ b/dlls/api-ms-win-core-processthreads-l1-1-3/api-ms-win-core-processthreads-l1-1-3.spec @@ -5,6 +5,6 @@ @ stub GetThreadSelectedCpuSets @ stub SetProcessDefaultCpuSets @ stub SetProcessInformation -@ stub SetThreadDescription +@ stdcall SetThreadDescription(ptr ptr) kernel32.SetThreadDescription @ stdcall SetThreadIdealProcessor(long long) kernel32.SetThreadIdealProcessor @ stub SetThreadSelectedCpuSets diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 23c25b7a..347d2da2 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -1447,6 +1447,7 @@ @ stdcall SetTermsrvAppInstallMode(long) @ stdcall SetThreadAffinityMask(long long) @ stdcall -import SetThreadContext(long ptr) +@ stdcall -import SetThreadDescription(ptr ptr) @ stdcall -import SetThreadErrorMode(long ptr) @ stdcall SetThreadExecutionState(long) @ stdcall -import SetThreadGroupAffinity(long ptr ptr) diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index c1fa4795..743c48c2 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -1478,7 +1478,7 @@ @ stdcall SetSystemTime(ptr) @ stdcall SetSystemTimeAdjustment(long long) kernel32.SetSystemTimeAdjustment @ stdcall SetThreadContext(long ptr) -# @ stub SetThreadDescription +@ stdcall SetThreadDescription(ptr ptr) @ stdcall SetThreadErrorMode(long ptr) @ stdcall SetThreadGroupAffinity(long ptr ptr) @ stdcall SetThreadIdealProcessor(long long) diff --git a/dlls/kernelbase/thread.c b/dlls/kernelbase/thread.c index 0cac2b69..f6823640 100644 --- a/dlls/kernelbase/thread.c +++ b/dlls/kernelbase/thread.c @@ -387,6 +387,16 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetThreadContext( HANDLE thread, const CONTEXT *co }
+/*********************************************************************** + * SetThreadDescription (kernelbase.@) + */ +HRESULT WINAPI DECLSPEC_HOTPATCH SetThreadDescription( HANDLE thread, PCWSTR description ) +{ + FIXME( "(%p %p): stub\n", thread, description ); + return E_NOTIMPL; +} + + /*********************************************************************** * SetThreadErrorMode (kernelbase.@) */
Required by Hitman 2. Multiple nodes and command queues are not supported.
Signed-off-by: Conor McCarthy cmccarthy@codeweavers.com --- dlls/dxgi/swapchain.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c index 9e620e0b..fa1bb3d8 100644 --- a/dlls/dxgi/swapchain.c +++ b/dlls/dxgi/swapchain.c @@ -2642,11 +2642,22 @@ static HRESULT STDMETHODCALLTYPE d3d12_swapchain_ResizeBuffers1(IDXGISwapChain3 UINT buffer_count, UINT width, UINT height, DXGI_FORMAT format, UINT flags, const UINT *node_mask, IUnknown * const *present_queue) { - FIXME("iface %p, buffer_count %u, width %u, height %u, format %s, flags %#x, " - "node_mask %p, present_queue %p stub!\n", + struct d3d12_swapchain *swapchain = d3d12_swapchain_from_IDXGISwapChain3(iface); + size_t i; + + TRACE("iface %p, buffer_count %u, width %u, height %u, format %s, flags %#x, " + "node_mask %p, present_queue %p partial stub!\n", iface, buffer_count, width, height, debug_dxgi_format(format), flags, node_mask, present_queue);
- return E_NOTIMPL; + for (i = 0; i < buffer_count; ++i) + { + if (node_mask[i] > 1) + FIXME("Ignoring node mask %#x.\n", node_mask[i]); + if ((ID3D12CommandQueue*)present_queue[i] != swapchain->command_queue) + FIXME("Ignoring present queue %p.\n", present_queue[i]); + } + + return d3d12_swapchain_ResizeBuffers(iface, buffer_count, width, height, format, flags); }
static const struct IDXGISwapChain3Vtbl d3d12_swapchain_vtbl =
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=59014
Your paranoid android.
=== debian10 (32 bit Chinese:China report) ===
kernel32: debugger.c:320: Test failed: GetThreadContext failed: 5
=== debian10 (32 bit WoW report) ===
kernel32: comm.c:919: Test failed: OutQueue should not be empty
=== debian10 (64 bit WoW report) ===
kernel32: comm.c:919: Test failed: OutQueue should not be empty
On Mon, 4 Nov 2019 at 14:39, Conor McCarthy cmccarthy@codeweavers.com wrote:
- for (i = 0; i < buffer_count; ++i)
- {
if (node_mask[i] > 1)
FIXME("Ignoring node mask %#x.\n", node_mask[i]);
if ((ID3D12CommandQueue*)present_queue[i] != swapchain->command_queue)
FIXME("Ignoring present queue %p.\n", present_queue[i]);
- }
- return d3d12_swapchain_ResizeBuffers(iface, buffer_count, width, height, format, flags);
Is that correct? MSDN suggests "buffer_count" can be 0, in which case the original buffer count is used. It also seems to hint at the possibility of at least the "node_mask" array being allowed to be NULL. It could be lying of course, but without tests we don't know that. We also tend to implement the simpler functions on top of the more advanced ones, so that would be d3d12_swapchain_ResizeBuffers() on top of d3d12_swapchain_ResizeBuffers1() instead of the other way around.
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=59013
Your paranoid android.
=== debian10 (32 bit Chinese:China report) ===
kernel32: debugger.c:320: Test failed: GetThreadContext failed: 5 debugger.c:320: Test failed: GetThreadContext failed: 5
=== debian10 (32 bit WoW report) ===
kernel32: debugger: Timeout
=== debian10 (64 bit WoW report) ===
kernel32: comm.c:919: Test failed: OutQueue should not be empty debugger.c:320: Test failed: GetThreadContext failed: 5
On 11/4/19 7:08 PM, Conor McCarthy wrote:
Required by Hitman 2.
Signed-off-by: Conor McCarthy cmccarthy@codeweavers.com
.../api-ms-win-core-processthreads-l1-1-3.spec | 2 +- dlls/kernel32/kernel32.spec | 1 + dlls/kernelbase/kernelbase.spec | 2 +- dlls/kernelbase/thread.c | 10 ++++++++++ 4 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/api-ms-win-core-processthreads-l1-1-3/api-ms-win-core-processthreads-l1-1-3.spec b/dlls/api-ms-win-core-processthreads-l1-1-3/api-ms-win-core-processthreads-l1-1-3.spec index 3b57e1c8..f8f5a870 100644 --- a/dlls/api-ms-win-core-processthreads-l1-1-3/api-ms-win-core-processthreads-l1-1-3.spec +++ b/dlls/api-ms-win-core-processthreads-l1-1-3/api-ms-win-core-processthreads-l1-1-3.spec @@ -5,6 +5,6 @@ @ stub GetThreadSelectedCpuSets @ stub SetProcessDefaultCpuSets @ stub SetProcessInformation -@ stub SetThreadDescription +@ stdcall SetThreadDescription(ptr ptr) kernel32.SetThreadDescription @ stdcall SetThreadIdealProcessor(long long) kernel32.SetThreadIdealProcessor @ stub SetThreadSelectedCpuSets diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 23c25b7a..347d2da2 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -1447,6 +1447,7 @@ @ stdcall SetTermsrvAppInstallMode(long) @ stdcall SetThreadAffinityMask(long long) @ stdcall -import SetThreadContext(long ptr) +@ stdcall -import SetThreadDescription(ptr ptr)
The last parameter should be wstr.
@ stdcall -import SetThreadErrorMode(long ptr) @ stdcall SetThreadExecutionState(long) @ stdcall -import SetThreadGroupAffinity(long ptr ptr) diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index c1fa4795..743c48c2 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -1478,7 +1478,7 @@ @ stdcall SetSystemTime(ptr) @ stdcall SetSystemTimeAdjustment(long long) kernel32.SetSystemTimeAdjustment @ stdcall SetThreadContext(long ptr) -# @ stub SetThreadDescription +@ stdcall SetThreadDescription(ptr ptr) @ stdcall SetThreadErrorMode(long ptr) @ stdcall SetThreadGroupAffinity(long ptr ptr) @ stdcall SetThreadIdealProcessor(long long) diff --git a/dlls/kernelbase/thread.c b/dlls/kernelbase/thread.c index 0cac2b69..f6823640 100644 --- a/dlls/kernelbase/thread.c +++ b/dlls/kernelbase/thread.c @@ -387,6 +387,16 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetThreadContext( HANDLE thread, const CONTEXT *co }
+/***********************************************************************
SetThreadDescription (kernelbase.@)
- */
+HRESULT WINAPI DECLSPEC_HOTPATCH SetThreadDescription( HANDLE thread, PCWSTR description ) +{
- FIXME( "(%p %p): stub\n", thread, description );
It use %s and wine_dbgstr_w(description).
- return E_NOTIMPL;
+}
/***********************************************************************
SetThreadErrorMode (kernelbase.@)
*/