win32u: Use syscall interface for some D3DKMT functions.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d208b29d10
commit
00222f6d06
|
@ -1079,17 +1079,10 @@ static struct unix_funcs unix_funcs =
|
|||
NtGdiCreateDIBitmapInternal,
|
||||
NtGdiCreateMetafileDC,
|
||||
NtGdiDdDDICheckVidPnExclusiveOwnership,
|
||||
NtGdiDdDDICloseAdapter,
|
||||
NtGdiDdDDICreateDCFromMemory,
|
||||
NtGdiDdDDICreateDevice,
|
||||
NtGdiDdDDIDestroyDCFromMemory,
|
||||
NtGdiDdDDIDestroyDevice,
|
||||
NtGdiDdDDIEscape,
|
||||
NtGdiDdDDIOpenAdapterFromDeviceName,
|
||||
NtGdiDdDDIOpenAdapterFromHdc,
|
||||
NtGdiDdDDIOpenAdapterFromLuid,
|
||||
NtGdiDdDDIQueryStatistics,
|
||||
NtGdiDdDDISetQueuedLimit,
|
||||
NtGdiDdDDISetVidPnSourceOwner,
|
||||
NtGdiDeleteObjectApp,
|
||||
NtGdiDoPalette,
|
||||
|
|
|
@ -51,6 +51,13 @@ static void * const syscalls[] =
|
|||
NtGdiCreateRectRgn,
|
||||
NtGdiCreateRoundRectRgn,
|
||||
NtGdiCreateSolidBrush,
|
||||
NtGdiDdDDICloseAdapter,
|
||||
NtGdiDdDDICreateDevice,
|
||||
NtGdiDdDDIOpenAdapterFromDeviceName,
|
||||
NtGdiDdDDIOpenAdapterFromHdc,
|
||||
NtGdiDdDDIOpenAdapterFromLuid,
|
||||
NtGdiDdDDIQueryStatistics,
|
||||
NtGdiDdDDISetQueuedLimit,
|
||||
NtGdiDeleteClientObj,
|
||||
NtGdiDescribePixelFormat,
|
||||
NtGdiDrawStream,
|
||||
|
|
|
@ -187,14 +187,14 @@
|
|||
@ stub NtGdiDdDDICheckOcclusion
|
||||
@ stub NtGdiDdDDICheckSharedResourceAccess
|
||||
@ stdcall NtGdiDdDDICheckVidPnExclusiveOwnership(ptr)
|
||||
@ stdcall NtGdiDdDDICloseAdapter(ptr)
|
||||
@ stdcall -syscall NtGdiDdDDICloseAdapter(ptr)
|
||||
@ stub NtGdiDdDDIConfigureSharedResource
|
||||
@ stub NtGdiDdDDICreateAllocation
|
||||
@ stub NtGdiDdDDICreateBundleObject
|
||||
@ stub NtGdiDdDDICreateContext
|
||||
@ stub NtGdiDdDDICreateContextVirtual
|
||||
@ stdcall NtGdiDdDDICreateDCFromMemory(ptr)
|
||||
@ stdcall NtGdiDdDDICreateDevice(ptr)
|
||||
@ stdcall -syscall NtGdiDdDDICreateDevice(ptr)
|
||||
@ stub NtGdiDdDDICreateHwContext
|
||||
@ stub NtGdiDdDDICreateHwQueue
|
||||
@ stub NtGdiDdDDICreateKeyedMutex
|
||||
|
@ -268,9 +268,9 @@
|
|||
@ stub NtGdiDdDDINetDispStartMiracastDisplayDevice
|
||||
@ stub NtGdiDdDDINetDispStopMiracastDisplayDevice
|
||||
@ stub NtGdiDdDDIOfferAllocations
|
||||
@ stdcall NtGdiDdDDIOpenAdapterFromDeviceName(ptr)
|
||||
@ stdcall NtGdiDdDDIOpenAdapterFromHdc(ptr)
|
||||
@ stdcall NtGdiDdDDIOpenAdapterFromLuid(ptr)
|
||||
@ stdcall -syscall NtGdiDdDDIOpenAdapterFromDeviceName(ptr)
|
||||
@ stdcall -syscall NtGdiDdDDIOpenAdapterFromHdc(ptr)
|
||||
@ stdcall -syscall NtGdiDdDDIOpenAdapterFromLuid(ptr)
|
||||
@ stub NtGdiDdDDIOpenBundleObjectNtHandleFromName
|
||||
@ stub NtGdiDdDDIOpenKeyedMutex
|
||||
@ stub NtGdiDdDDIOpenKeyedMutex2
|
||||
|
@ -305,7 +305,7 @@
|
|||
@ stub NtGdiDdDDIQueryRemoteVidPnSourceFromGdiDisplayName
|
||||
@ stub NtGdiDdDDIQueryResourceInfo
|
||||
@ stub NtGdiDdDDIQueryResourceInfoFromNtHandle
|
||||
@ stdcall NtGdiDdDDIQueryStatistics(ptr)
|
||||
@ stdcall -syscall NtGdiDdDDIQueryStatistics(ptr)
|
||||
@ stub NtGdiDdDDIQueryVidPnExclusiveOwnership
|
||||
@ stub NtGdiDdDDIQueryVideoMemoryInfo
|
||||
@ stub NtGdiDdDDIReclaimAllocations
|
||||
|
@ -330,7 +330,7 @@
|
|||
@ stub NtGdiDdDDISetProcessDeviceRemovalSupport
|
||||
@ stub NtGdiDdDDISetProcessSchedulingPriorityBand
|
||||
@ stub NtGdiDdDDISetProcessSchedulingPriorityClass
|
||||
@ stdcall NtGdiDdDDISetQueuedLimit(ptr)
|
||||
@ stdcall -syscall NtGdiDdDDISetQueuedLimit(ptr)
|
||||
@ stub NtGdiDdDDISetStablePowerState
|
||||
@ stub NtGdiDdDDISetStereoEnabled
|
||||
@ stub NtGdiDdDDISetSyncRefreshCountWaitTarget
|
||||
|
|
|
@ -64,17 +64,10 @@ struct unix_funcs
|
|||
ULONG flags, HANDLE xform );
|
||||
HDC (WINAPI *pNtGdiCreateMetafileDC)( HDC hdc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDICheckVidPnExclusiveOwnership)( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDICloseAdapter)( const D3DKMT_CLOSEADAPTER *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDICreateDCFromMemory)( D3DKMT_CREATEDCFROMMEMORY *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDICreateDevice)( D3DKMT_CREATEDEVICE *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDIDestroyDCFromMemory)( const D3DKMT_DESTROYDCFROMMEMORY *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDIDestroyDevice)( const D3DKMT_DESTROYDEVICE *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDIEscape)( const D3DKMT_ESCAPE *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDIOpenAdapterFromDeviceName)( D3DKMT_OPENADAPTERFROMDEVICENAME *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDIOpenAdapterFromHdc)( D3DKMT_OPENADAPTERFROMHDC *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDIOpenAdapterFromLuid)( D3DKMT_OPENADAPTERFROMLUID *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDIQueryStatistics)( D3DKMT_QUERYSTATISTICS *stats );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDISetQueuedLimit)( D3DKMT_SETQUEUEDLIMIT *desc );
|
||||
NTSTATUS (WINAPI *pNtGdiDdDDISetVidPnSourceOwner)( const D3DKMT_SETVIDPNSOURCEOWNER *desc );
|
||||
BOOL (WINAPI *pNtGdiDeleteObjectApp)( HGDIOBJ obj );
|
||||
LONG (WINAPI *pNtGdiDoPalette)( HGDIOBJ handle, WORD start, WORD count, void *entries,
|
||||
|
|
|
@ -574,21 +574,11 @@ NTSTATUS WINAPI NtGdiDdDDICheckVidPnExclusiveOwnership( const D3DKMT_CHECKVIDPNE
|
|||
return unix_funcs->pNtGdiDdDDICheckVidPnExclusiveOwnership( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDICloseAdapter( const D3DKMT_CLOSEADAPTER *desc )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDICloseAdapter( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDICreateDCFromMemory( D3DKMT_CREATEDCFROMMEMORY *desc )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDICreateDCFromMemory( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDICreateDevice( D3DKMT_CREATEDEVICE *desc )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDICreateDevice( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDIDestroyDCFromMemory( const D3DKMT_DESTROYDCFROMMEMORY *desc )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDIDestroyDCFromMemory( desc );
|
||||
|
@ -604,31 +594,6 @@ NTSTATUS WINAPI NtGdiDdDDIEscape( const D3DKMT_ESCAPE *desc )
|
|||
return unix_funcs->pNtGdiDdDDIEscape( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDIOpenAdapterFromDeviceName( D3DKMT_OPENADAPTERFROMDEVICENAME *desc )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDIOpenAdapterFromDeviceName( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDIOpenAdapterFromHdc( D3DKMT_OPENADAPTERFROMHDC *desc )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDIOpenAdapterFromHdc( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDIOpenAdapterFromLuid( D3DKMT_OPENADAPTERFROMLUID *desc )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDIOpenAdapterFromLuid( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDIQueryStatistics( D3DKMT_QUERYSTATISTICS *stats )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDIQueryStatistics( stats );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDISetQueuedLimit( D3DKMT_SETQUEUEDLIMIT *desc )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDISetQueuedLimit( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI NtGdiDdDDISetVidPnSourceOwner( const D3DKMT_SETVIDPNSOURCEOWNER *desc )
|
||||
{
|
||||
return unix_funcs->pNtGdiDdDDISetVidPnSourceOwner( desc );
|
||||
|
|
|
@ -583,3 +583,108 @@ NTSTATUS WINAPI wow64_NtGdiFlush( UINT *args )
|
|||
{
|
||||
return NtGdiFlush();
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI wow64_NtGdiDdDDICloseAdapter( UINT *args )
|
||||
{
|
||||
const D3DKMT_CLOSEADAPTER *desc = get_ptr( &args );
|
||||
|
||||
return NtGdiDdDDICloseAdapter( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI wow64_NtGdiDdDDICreateDevice( UINT *args )
|
||||
{
|
||||
struct
|
||||
{
|
||||
D3DKMT_HANDLE hAdapter;
|
||||
D3DKMT_CREATEDEVICEFLAGS Flags;
|
||||
D3DKMT_HANDLE hDevice;
|
||||
ULONG pCommandBuffer;
|
||||
UINT CommandBufferSize;
|
||||
ULONG pAllocationList;
|
||||
UINT AllocationListSize;
|
||||
ULONG pPatchLocationList;
|
||||
UINT PatchLocationListSize;
|
||||
} *desc32 = get_ptr( &args );
|
||||
|
||||
D3DKMT_CREATEDEVICE desc =
|
||||
{
|
||||
{ desc32->hAdapter },
|
||||
desc32->Flags
|
||||
};
|
||||
NTSTATUS status;
|
||||
|
||||
if (!(status = NtGdiDdDDICreateDevice( &desc )))
|
||||
{
|
||||
desc32->hDevice = desc.hDevice;
|
||||
desc32->pCommandBuffer = PtrToUlong( desc.pCommandBuffer );
|
||||
desc32->CommandBufferSize = desc.CommandBufferSize;
|
||||
desc32->pAllocationList = PtrToUlong( desc.pAllocationList );
|
||||
desc32->AllocationListSize = desc.AllocationListSize;
|
||||
desc32->pPatchLocationList = PtrToUlong( desc.pPatchLocationList );
|
||||
desc32->PatchLocationListSize = desc.PatchLocationListSize;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromDeviceName( UINT *args )
|
||||
{
|
||||
struct
|
||||
{
|
||||
ULONG pDeviceName;
|
||||
D3DKMT_HANDLE hAdapter;
|
||||
LUID AdapterLuid;
|
||||
} *desc32 = get_ptr( &args );
|
||||
|
||||
D3DKMT_OPENADAPTERFROMDEVICENAME desc = { UlongToPtr( desc32->pDeviceName ) };
|
||||
NTSTATUS status;
|
||||
|
||||
if (!(status = NtGdiDdDDIOpenAdapterFromDeviceName( &desc )))
|
||||
{
|
||||
desc32->hAdapter = desc.hAdapter;
|
||||
desc32->AdapterLuid = desc.AdapterLuid;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromHdc( UINT *args )
|
||||
{
|
||||
struct
|
||||
{
|
||||
ULONG hDc;
|
||||
D3DKMT_HANDLE hAdapter;
|
||||
LUID AdapterLuid;
|
||||
D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId;
|
||||
} *desc32 = get_ptr( &args );
|
||||
|
||||
D3DKMT_OPENADAPTERFROMHDC desc = { UlongToHandle( desc32->hDc ) };
|
||||
NTSTATUS status;
|
||||
|
||||
if (!(status = NtGdiDdDDIOpenAdapterFromHdc( &desc )))
|
||||
{
|
||||
desc32->hAdapter = desc.hAdapter;
|
||||
desc32->AdapterLuid = desc.AdapterLuid;
|
||||
desc32->VidPnSourceId = desc.VidPnSourceId;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI wow64_NtGdiDdDDIOpenAdapterFromLuid( UINT *args )
|
||||
{
|
||||
D3DKMT_OPENADAPTERFROMLUID *desc = get_ptr( &args );
|
||||
|
||||
return NtGdiDdDDIOpenAdapterFromLuid( desc );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI wow64_NtGdiDdDDIQueryStatistics( UINT *args )
|
||||
{
|
||||
D3DKMT_QUERYSTATISTICS *stats = get_ptr( &args );
|
||||
|
||||
return NtGdiDdDDIQueryStatistics( stats );
|
||||
}
|
||||
|
||||
NTSTATUS WINAPI wow64_NtGdiDdDDISetQueuedLimit( UINT *args )
|
||||
{
|
||||
D3DKMT_SETQUEUEDLIMIT *desc = get_ptr( &args );
|
||||
|
||||
return NtGdiDdDDISetQueuedLimit( desc );
|
||||
}
|
||||
|
|
|
@ -38,6 +38,13 @@
|
|||
SYSCALL_ENTRY( NtGdiCreateRectRgn ) \
|
||||
SYSCALL_ENTRY( NtGdiCreateRoundRectRgn ) \
|
||||
SYSCALL_ENTRY( NtGdiCreateSolidBrush ) \
|
||||
SYSCALL_ENTRY( NtGdiDdDDICloseAdapter ) \
|
||||
SYSCALL_ENTRY( NtGdiDdDDICreateDevice ) \
|
||||
SYSCALL_ENTRY( NtGdiDdDDIOpenAdapterFromDeviceName ) \
|
||||
SYSCALL_ENTRY( NtGdiDdDDIOpenAdapterFromHdc ) \
|
||||
SYSCALL_ENTRY( NtGdiDdDDIOpenAdapterFromLuid ) \
|
||||
SYSCALL_ENTRY( NtGdiDdDDIQueryStatistics ) \
|
||||
SYSCALL_ENTRY( NtGdiDdDDISetQueuedLimit ) \
|
||||
SYSCALL_ENTRY( NtGdiDeleteClientObj ) \
|
||||
SYSCALL_ENTRY( NtGdiDescribePixelFormat ) \
|
||||
SYSCALL_ENTRY( NtGdiDrawStream ) \
|
||||
|
|
Loading…
Reference in New Issue