From: Rémi Bernon rbernon@codeweavers.com
--- include/ddk/d3dkmthk.h | 253 ++++++++++++++++++++++++++++++++++++++++- include/ntgdi.h | 11 +- 2 files changed, 262 insertions(+), 2 deletions(-)
diff --git a/include/ddk/d3dkmthk.h b/include/ddk/d3dkmthk.h index 9d31d765285..d5d8015ddf7 100644 --- a/include/ddk/d3dkmthk.h +++ b/include/ddk/d3dkmthk.h @@ -20,6 +20,7 @@ #define __WINE_D3DKMTHK_H
#include <d3dukmdt.h> +#include <winternl.h>
typedef enum _D3DKMT_VIDPNSOURCEOWNER_TYPE { @@ -781,6 +782,246 @@ typedef struct _D3DKMT_ENUMADAPTERS2 D3DKMT_ADAPTERINFO *pAdapters; } D3DKMT_ENUMADAPTERS2;
+typedef ULONGLONG D3DGPU_VIRTUAL_ADDRESS; + +typedef struct _D3DKMT_CREATESTANDARDALLOCATIONFLAGS +{ + union + { + struct + { + UINT Reserved : 32; + }; + UINT Value; + }; +} D3DKMT_CREATESTANDARDALLOCATIONFLAGS; + +typedef enum _D3DKMT_STANDARDALLOCATIONTYPE +{ + D3DKMT_STANDARDALLOCATIONTYPE_EXISTINGHEAP = 1, +} D3DKMT_STANDARDALLOCATIONTYPE; + +typedef struct _D3DKMT_STANDARDALLOCATION_EXISTINGHEAP +{ + SIZE_T Size; +} D3DKMT_STANDARDALLOCATION_EXISTINGHEAP; + +typedef struct _D3DKMT_CREATESTANDARDALLOCATION +{ + D3DKMT_STANDARDALLOCATIONTYPE Type; + union + { + D3DKMT_STANDARDALLOCATION_EXISTINGHEAP ExistingHeapData; + }; + D3DKMT_CREATESTANDARDALLOCATIONFLAGS Flags; +} D3DKMT_CREATESTANDARDALLOCATION; + +typedef struct _D3DDDI_ALLOCATIONINFO +{ + D3DKMT_HANDLE hAllocation; + const void *pSystemMem; + void *pPrivateDriverData; + UINT PrivateDriverDataSize; + D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; + union + { + struct + { + UINT Primary : 1; + UINT Stereo : 1; + UINT Reserved : 30; + }; + UINT Value; + } Flags; +} D3DDDI_ALLOCATIONINFO; + +typedef struct _D3DDDI_ALLOCATIONINFO2 +{ + D3DKMT_HANDLE hAllocation; + union + { + HANDLE hSection; + const void *pSystemMem; + }; + VOID *pPrivateDriverData; + UINT PrivateDriverDataSize; + D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId; + union + { + struct + { + UINT Primary : 1; + UINT Stereo : 1; + UINT OverridePriority : 1; + UINT Reserved : 29; + }; + UINT Value; + } Flags; + D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress; + union + { + UINT Priority; + ULONG_PTR Unused; + }; + ULONG_PTR Reserved[5]; +} D3DDDI_ALLOCATIONINFO2; + +typedef struct _D3DKMT_CREATEALLOCATIONFLAGS +{ + UINT CreateResource : 1; + UINT CreateShared : 1; + UINT NonSecure : 1; + UINT CreateProtected : 1; + UINT RestrictSharedAccess : 1; + UINT ExistingSysMem : 1; + UINT NtSecuritySharing : 1; + UINT ReadOnly : 1; + UINT CreateWriteCombined : 1; + UINT CreateCached : 1; + UINT SwapChainBackBuffer : 1; + UINT CrossAdapter : 1; + UINT OpenCrossAdapter : 1; + UINT PartialSharedCreation : 1; + UINT Zeroed : 1; + UINT WriteWatch : 1; + UINT StandardAllocation : 1; + UINT ExistingSection : 1; + UINT AllowNotZeroed : 1; + UINT PhysicallyContiguous : 1; + UINT Reserved : 12; +} D3DKMT_CREATEALLOCATIONFLAGS; + +typedef struct _D3DKMT_CREATEALLOCATION +{ + D3DKMT_HANDLE hDevice; + D3DKMT_HANDLE hResource; + D3DKMT_HANDLE hGlobalShare; + const void *pPrivateRuntimeData; + UINT PrivateRuntimeDataSize; + union + { + D3DKMT_CREATESTANDARDALLOCATION *pStandardAllocation; + const void *pPrivateDriverData; + }; + UINT PrivateDriverDataSize; + UINT NumAllocations; + union + { + D3DDDI_ALLOCATIONINFO *pAllocationInfo; + D3DDDI_ALLOCATIONINFO2 *pAllocationInfo2; + }; + D3DKMT_CREATEALLOCATIONFLAGS Flags; + HANDLE hPrivateRuntimeResourceHandle; +} D3DKMT_CREATEALLOCATION; + +typedef struct _D3DKMT_DESTROYALLOCATION +{ + D3DKMT_HANDLE hDevice; + D3DKMT_HANDLE hResource; + const D3DKMT_HANDLE *phAllocationList; + UINT AllocationCount; +} D3DKMT_DESTROYALLOCATION; + +typedef struct _D3DDDICB_DESTROYALLOCATION2FLAGS +{ + union + { + struct + { + UINT AssumeNotInUse : 1; + UINT SynchronousDestroy : 1; + UINT Reserved : 29; + UINT SystemUseOnly : 1; + }; + UINT Value; + }; +} D3DDDICB_DESTROYALLOCATION2FLAGS; + +typedef struct _D3DKMT_DESTROYALLOCATION2 +{ + D3DKMT_HANDLE hDevice; + D3DKMT_HANDLE hResource; + const D3DKMT_HANDLE *phAllocationList; + UINT AllocationCount; + D3DDDICB_DESTROYALLOCATION2FLAGS Flags; +} D3DKMT_DESTROYALLOCATION2; + +typedef struct _D3DDDI_OPENALLOCATIONINFO +{ + D3DKMT_HANDLE hAllocation; + const void *pPrivateDriverData; + UINT PrivateDriverDataSize; +} D3DDDI_OPENALLOCATIONINFO; + +typedef struct _D3DDDI_OPENALLOCATIONINFO2 +{ + D3DKMT_HANDLE hAllocation; + const void *pPrivateDriverData; + UINT PrivateDriverDataSize; + D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress; + ULONG_PTR Reserved[6]; +} D3DDDI_OPENALLOCATIONINFO2; + +typedef struct _D3DKMT_OPENRESOURCE +{ + D3DKMT_HANDLE hDevice; + D3DKMT_HANDLE hGlobalShare; + UINT NumAllocations; + union + { + D3DDDI_OPENALLOCATIONINFO *pOpenAllocationInfo; + D3DDDI_OPENALLOCATIONINFO2 *pOpenAllocationInfo2; + }; + void *pPrivateRuntimeData; + UINT PrivateRuntimeDataSize; + void *pResourcePrivateDriverData; + UINT ResourcePrivateDriverDataSize; + void *pTotalPrivateDriverDataBuffer; + UINT TotalPrivateDriverDataBufferSize; + D3DKMT_HANDLE hResource; +} D3DKMT_OPENRESOURCE; + +typedef struct _D3DKMT_OPENRESOURCEFROMNTHANDLE +{ + D3DKMT_HANDLE hDevice; + HANDLE hNtHandle; + UINT NumAllocations; + D3DDDI_OPENALLOCATIONINFO2 *pOpenAllocationInfo2; + UINT PrivateRuntimeDataSize; + void *pPrivateRuntimeData; + UINT ResourcePrivateDriverDataSize; + void *pResourcePrivateDriverData; + UINT TotalPrivateDriverDataBufferSize; + void *pTotalPrivateDriverDataBuffer; + D3DKMT_HANDLE hResource; + D3DKMT_HANDLE hKeyedMutex; + void *pKeyedMutexPrivateRuntimeData; + UINT KeyedMutexPrivateRuntimeDataSize; + D3DKMT_HANDLE hSyncObject; +} D3DKMT_OPENRESOURCEFROMNTHANDLE; + +typedef struct _D3DKMT_QUERYRESOURCEINFO +{ + D3DKMT_HANDLE hDevice; + D3DKMT_HANDLE hGlobalShare; + void *pPrivateRuntimeData; + UINT PrivateRuntimeDataSize; + UINT TotalPrivateDriverDataSize; + UINT ResourcePrivateDriverDataSize; + UINT NumAllocations; +} D3DKMT_QUERYRESOURCEINFO; + +typedef struct _D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE +{ + D3DKMT_HANDLE hDevice; + HANDLE hNtHandle; + void *pPrivateRuntimeData; + UINT PrivateRuntimeDataSize; + UINT TotalPrivateDriverDataSize; + UINT ResourcePrivateDriverDataSize; + UINT NumAllocations; +} D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE; + #ifdef __cplusplus extern "C" { @@ -788,8 +1029,12 @@ extern "C"
NTSTATUS WINAPI D3DKMTCheckVidPnExclusiveOwnership(const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc); NTSTATUS WINAPI D3DKMTCloseAdapter(const D3DKMT_CLOSEADAPTER *desc); -NTSTATUS WINAPI D3DKMTCreateDevice(D3DKMT_CREATEDEVICE *desc); +NTSTATUS WINAPI D3DKMTCreateAllocation( D3DKMT_CREATEALLOCATION *params ); +NTSTATUS WINAPI D3DKMTCreateAllocation2( D3DKMT_CREATEALLOCATION *params ); NTSTATUS WINAPI D3DKMTCreateDCFromMemory(D3DKMT_CREATEDCFROMMEMORY *desc); +NTSTATUS WINAPI D3DKMTCreateDevice(D3DKMT_CREATEDEVICE *desc); +NTSTATUS WINAPI D3DKMTDestroyAllocation( const D3DKMT_DESTROYALLOCATION *params ); +NTSTATUS WINAPI D3DKMTDestroyAllocation2( const D3DKMT_DESTROYALLOCATION2 *params ); NTSTATUS WINAPI D3DKMTDestroyDCFromMemory(const D3DKMT_DESTROYDCFROMMEMORY *desc); NTSTATUS WINAPI D3DKMTDestroyDevice(const D3DKMT_DESTROYDEVICE *desc); NTSTATUS WINAPI D3DKMTEnumAdapters2(D3DKMT_ENUMADAPTERS2 *desc); @@ -797,6 +1042,12 @@ NTSTATUS WINAPI D3DKMTEscape( const D3DKMT_ESCAPE *desc ); NTSTATUS WINAPI D3DKMTOpenAdapterFromGdiDisplayName(D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME *desc); NTSTATUS WINAPI D3DKMTOpenAdapterFromHdc( D3DKMT_OPENADAPTERFROMHDC *desc ); NTSTATUS WINAPI D3DKMTOpenAdapterFromLuid( D3DKMT_OPENADAPTERFROMLUID * desc ); +NTSTATUS WINAPI D3DKMTOpenResource( D3DKMT_OPENRESOURCE *params ); +NTSTATUS WINAPI D3DKMTOpenResource2( D3DKMT_OPENRESOURCE *params ); +NTSTATUS WINAPI D3DKMTOpenResourceFromNtHandle( D3DKMT_OPENRESOURCEFROMNTHANDLE *params ); +NTSTATUS WINAPI D3DKMTQueryAdapterInfo(D3DKMT_QUERYADAPTERINFO *desc); +NTSTATUS WINAPI D3DKMTQueryResourceInfo( D3DKMT_QUERYRESOURCEINFO *params ); +NTSTATUS WINAPI D3DKMTQueryResourceInfoFromNtHandle( D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE *params ); NTSTATUS WINAPI D3DKMTQueryStatistics(D3DKMT_QUERYSTATISTICS *stats); NTSTATUS WINAPI D3DKMTQueryVideoMemoryInfo(D3DKMT_QUERYVIDEOMEMORYINFO *desc); NTSTATUS WINAPI D3DKMTSetQueuedLimit(D3DKMT_SETQUEUEDLIMIT *desc); diff --git a/include/ntgdi.h b/include/ntgdi.h index 2bd1b44e982..e66bf5daed0 100644 --- a/include/ntgdi.h +++ b/include/ntgdi.h @@ -474,17 +474,26 @@ W32KAPI BOOL WINAPI NtGdiWidenPath( HDC hdc );
W32KAPI NTSTATUS WINAPI NtGdiDdDDICheckVidPnExclusiveOwnership( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDICloseAdapter( const D3DKMT_CLOSEADAPTER *desc ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDICreateAllocation( D3DKMT_CREATEALLOCATION *params ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDICreateAllocation2( D3DKMT_CREATEALLOCATION *params ); W32KAPI NTSTATUS WINAPI NtGdiDdDDICreateDCFromMemory( D3DKMT_CREATEDCFROMMEMORY *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDICreateDevice( D3DKMT_CREATEDEVICE *desc ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDIDestroyAllocation( const D3DKMT_DESTROYALLOCATION *params ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDIDestroyAllocation2( const D3DKMT_DESTROYALLOCATION2 *params ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIDestroyDCFromMemory( const D3DKMT_DESTROYDCFROMMEMORY *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIDestroyDevice( const D3DKMT_DESTROYDEVICE *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIEnumAdapters( D3DKMT_ENUMADAPTERS *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIEnumAdapters2( D3DKMT_ENUMADAPTERS2 *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIEscape( const D3DKMT_ESCAPE *desc ); -W32KAPI NTSTATUS WINAPI NtGdiDdDDIOpenAdapterFromHdc( D3DKMT_OPENADAPTERFROMHDC *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIOpenAdapterFromDeviceName( D3DKMT_OPENADAPTERFROMDEVICENAME *desc ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDIOpenAdapterFromHdc( D3DKMT_OPENADAPTERFROMHDC *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIOpenAdapterFromLuid( D3DKMT_OPENADAPTERFROMLUID *desc ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDIOpenResource( D3DKMT_OPENRESOURCE *params ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDIOpenResource2( D3DKMT_OPENRESOURCE *params ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDIOpenResourceFromNtHandle( D3DKMT_OPENRESOURCEFROMNTHANDLE *params ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIQueryAdapterInfo( D3DKMT_QUERYADAPTERINFO *desc ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDIQueryResourceInfo( D3DKMT_QUERYRESOURCEINFO *params ); +W32KAPI NTSTATUS WINAPI NtGdiDdDDIQueryResourceInfoFromNtHandle( D3DKMT_QUERYRESOURCEINFOFROMNTHANDLE *params ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIQueryStatistics( D3DKMT_QUERYSTATISTICS *stats ); W32KAPI NTSTATUS WINAPI NtGdiDdDDIQueryVideoMemoryInfo( D3DKMT_QUERYVIDEOMEMORYINFO *desc ); W32KAPI NTSTATUS WINAPI NtGdiDdDDISetQueuedLimit( D3DKMT_SETQUEUEDLIMIT *desc );