From: Rémi Bernon rbernon@codeweavers.com
--- dlls/gdi32/gdi32.spec | 1 + dlls/win32u/d3dkmt.c | 6 ++++++ dlls/win32u/main.c | 5 +++++ dlls/win32u/win32syscalls.h | 5 ++--- dlls/win32u/win32u.spec | 2 +- dlls/wow64win/gdi.c | 10 ++++++++++ include/ntgdi.h | 1 + 7 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/dlls/gdi32/gdi32.spec b/dlls/gdi32/gdi32.spec index db6407135c3..28dab037a74 100644 --- a/dlls/gdi32/gdi32.spec +++ b/dlls/gdi32/gdi32.spec @@ -99,6 +99,7 @@ # @ stub CreateScaledCompatibleBitmap # @ stub CreateSessionMappedDIBSection @ stdcall CreateSolidBrush(long) +@ stdcall D3DKMTCheckOcclusion(ptr) win32u.NtGdiDdDDICheckOcclusion @ stdcall D3DKMTCheckVidPnExclusiveOwnership(ptr) win32u.NtGdiDdDDICheckVidPnExclusiveOwnership @ stdcall D3DKMTCloseAdapter(ptr) win32u.NtGdiDdDDICloseAdapter @ stdcall D3DKMTCreateAllocation(ptr) win32u.NtGdiDdDDICreateAllocation diff --git a/dlls/win32u/d3dkmt.c b/dlls/win32u/d3dkmt.c index 7fd4a4950da..1016b02ad5f 100644 --- a/dlls/win32u/d3dkmt.c +++ b/dlls/win32u/d3dkmt.c @@ -540,6 +540,12 @@ NTSTATUS WINAPI NtGdiDdDDISetVidPnSourceOwner( const D3DKMT_SETVIDPNSOURCEOWNER return STATUS_SUCCESS; }
+NTSTATUS WINAPI NtGdiDdDDICheckOcclusion( const D3DKMT_CHECKOCCLUSION *desc ) +{ + FIXME( "desc %p stub!\n", desc ); + return STATUS_PROCEDURE_NOT_FOUND; +} + /****************************************************************************** * NtGdiDdDDICheckVidPnExclusiveOwnership (win32u.@) */ diff --git a/dlls/win32u/main.c b/dlls/win32u/main.c index 5e37770a7e7..53b9d25143b 100644 --- a/dlls/win32u/main.c +++ b/dlls/win32u/main.c @@ -211,6 +211,11 @@ HBRUSH SYSCALL_API NtGdiCreateSolidBrush( COLORREF color, HBRUSH brush ) SYSCALL_FUNC( NtGdiCreateSolidBrush ); }
+NTSTATUS SYSCALL_API NtGdiDdDDICheckOcclusion( const D3DKMT_CHECKOCCLUSION *desc ) +{ + SYSCALL_FUNC( NtGdiDdDDICheckOcclusion ); +} + NTSTATUS SYSCALL_API NtGdiDdDDICheckVidPnExclusiveOwnership( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc ) { SYSCALL_FUNC( NtGdiDdDDICheckVidPnExclusiveOwnership ); diff --git a/dlls/win32u/win32syscalls.h b/dlls/win32u/win32syscalls.h index aa3777c8cc9..6fe9b47087c 100644 --- a/dlls/win32u/win32syscalls.h +++ b/dlls/win32u/win32syscalls.h @@ -213,7 +213,7 @@ SYSCALL_ENTRY( 0x10d1, NtGdiDdDDICheckMultiPlaneOverlaySupport, 0 ) \ SYSCALL_ENTRY( 0x10d2, NtGdiDdDDICheckMultiPlaneOverlaySupport2, 0 ) \ SYSCALL_ENTRY( 0x10d3, NtGdiDdDDICheckMultiPlaneOverlaySupport3, 0 ) \ - SYSCALL_ENTRY( 0x10d4, NtGdiDdDDICheckOcclusion, 0 ) \ + SYSCALL_ENTRY( 0x10d4, NtGdiDdDDICheckOcclusion, 4 ) \ SYSCALL_ENTRY( 0x10d5, NtGdiDdDDICheckSharedResourceAccess, 0 ) \ SYSCALL_ENTRY( 0x10d6, NtGdiDdDDICheckVidPnExclusiveOwnership, 4 ) \ SYSCALL_ENTRY( 0x10d7, NtGdiDdDDICloseAdapter, 4 ) \ @@ -1755,7 +1755,7 @@ SYSCALL_ENTRY( 0x10d1, NtGdiDdDDICheckMultiPlaneOverlaySupport, 0 ) \ SYSCALL_ENTRY( 0x10d2, NtGdiDdDDICheckMultiPlaneOverlaySupport2, 0 ) \ SYSCALL_ENTRY( 0x10d3, NtGdiDdDDICheckMultiPlaneOverlaySupport3, 0 ) \ - SYSCALL_ENTRY( 0x10d4, NtGdiDdDDICheckOcclusion, 0 ) \ + SYSCALL_ENTRY( 0x10d4, NtGdiDdDDICheckOcclusion, 8 ) \ SYSCALL_ENTRY( 0x10d5, NtGdiDdDDICheckSharedResourceAccess, 0 ) \ SYSCALL_ENTRY( 0x10d6, NtGdiDdDDICheckVidPnExclusiveOwnership, 8 ) \ SYSCALL_ENTRY( 0x10d7, NtGdiDdDDICloseAdapter, 8 ) \ @@ -3269,7 +3269,6 @@ SYSCALL_STUB( NtGdiDdDDICheckMultiPlaneOverlaySupport ) \ SYSCALL_STUB( NtGdiDdDDICheckMultiPlaneOverlaySupport2 ) \ SYSCALL_STUB( NtGdiDdDDICheckMultiPlaneOverlaySupport3 ) \ - SYSCALL_STUB( NtGdiDdDDICheckOcclusion ) \ SYSCALL_STUB( NtGdiDdDDICheckSharedResourceAccess ) \ SYSCALL_STUB( NtGdiDdDDIConfigureSharedResource ) \ SYSCALL_STUB( NtGdiDdDDICreateBundleObject ) \ diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec index c6917ed89cb..adc5f2f19b5 100644 --- a/dlls/win32u/win32u.spec +++ b/dlls/win32u/win32u.spec @@ -211,7 +211,7 @@ @ stub -syscall NtGdiDdDDICheckMultiPlaneOverlaySupport @ stub -syscall NtGdiDdDDICheckMultiPlaneOverlaySupport2 @ stub -syscall NtGdiDdDDICheckMultiPlaneOverlaySupport3 -@ stub -syscall NtGdiDdDDICheckOcclusion +@ stdcall -syscall NtGdiDdDDICheckOcclusion(ptr) @ stub -syscall NtGdiDdDDICheckSharedResourceAccess @ stdcall -syscall NtGdiDdDDICheckVidPnExclusiveOwnership(ptr) @ stdcall -syscall NtGdiDdDDICloseAdapter(ptr) diff --git a/dlls/wow64win/gdi.c b/dlls/wow64win/gdi.c index 62f77927ae0..d8b4fd89249 100644 --- a/dlls/wow64win/gdi.c +++ b/dlls/wow64win/gdi.c @@ -399,6 +399,16 @@ NTSTATUS WINAPI wow64_NtGdiCreateSolidBrush( UINT *args ) return HandleToUlong( NtGdiCreateSolidBrush( color, brush )); }
+NTSTATUS WINAPI wow64_NtGdiDdDDICheckOcclusion( UINT *args ) +{ + struct + { + HWND hWnd; + } *desc32 = get_ptr( &args ); + D3DKMT_CHECKOCCLUSION desc = {.hWnd = desc32->hWnd}; + return NtGdiDdDDICheckOcclusion( &desc ); +} + NTSTATUS WINAPI wow64_NtGdiDdDDICheckVidPnExclusiveOwnership( UINT *args ) { const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc = get_ptr( &args ); diff --git a/include/ntgdi.h b/include/ntgdi.h index 5fdd666b208..81fa1eff14a 100644 --- a/include/ntgdi.h +++ b/include/ntgdi.h @@ -514,6 +514,7 @@ W32KAPI BOOL WINAPI NtGdiUnrealizeObject( HGDIOBJ obj ); W32KAPI BOOL WINAPI NtGdiUpdateColors( HDC hdc ); W32KAPI BOOL WINAPI NtGdiWidenPath( HDC hdc );
+W32KAPI NTSTATUS WINAPI NtGdiDdDDICheckOcclusion( const D3DKMT_CHECKOCCLUSION *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDICheckVidPnExclusiveOwnership( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDICloseAdapter( const D3DKMT_CLOSEADAPTER *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDICreateAllocation( D3DKMT_CREATEALLOCATION *params );