[SDK][WIN32SS] Prepare d3dkmt functions up to Windows Vista (#5612)

Prepare the d3dkmt APIs up to Vista RTM
Build the skeleton needed for having userspace components talk to a WDDM KMD driver

Co-authored-by: Mark Jansen <mark.jansen@reactos.org>
Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
This commit is contained in:
Justin Miller 2025-03-24 21:21:09 +01:00 committed by GitHub
parent 818842de06
commit e7a9e7ca3d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 1987 additions and 16 deletions

241
sdk/include/ddk/d3dkmddi.h Normal file
View file

@ -0,0 +1,241 @@
/*
* PROJECT: ReactOS Display Driver Model
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Header file for WDDM style DDIs
* COPYRIGHT: Copyright 2024 Justin Miller <justin.miller@reactos.org>
*/
#ifndef _D3DKMDDI_H_
#define _D3DKMDDI_H_
#include <d3dkmdt.h>
typedef struct _DXGK_ALLOCATIONINFOFLAGS_WDDM2_0
{
union
{
struct
{
UINT CpuVisible : 1;
UINT PermanentSysMem : 1;
UINT Cached : 1;
UINT Protected : 1;
UINT ExistingSysMem : 1;
UINT ExistingKernelSysMem : 1;
UINT FromEndOfSegment : 1;
UINT DisableLargePageMapping : 1;
UINT Overlay : 1;
UINT Capture : 1;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_1)
UINT CreateInVpr : 1;
#else
UINT Reserved00 : 1;
#endif
UINT DXGK_ALLOC_RESERVED17 : 1;
UINT Reserved02 : 1;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_9)
UINT MapApertureCpuVisible : 1;
#else
UINT Reserved03 : 1;
#endif
UINT HistoryBuffer : 1;
UINT AccessedPhysically : 1;
UINT ExplicitResidencyNotification : 1;
UINT HardwareProtected : 1;
UINT CpuVisibleOnDemand : 1;
UINT DXGK_ALLOC_RESERVED16 : 1;
UINT DXGK_ALLOC_RESERVED15 : 1;
UINT DXGK_ALLOC_RESERVED14 : 1;
UINT DXGK_ALLOC_RESERVED13 : 1;
UINT DXGK_ALLOC_RESERVED12 : 1;
UINT DXGK_ALLOC_RESERVED11 : 1;
UINT DXGK_ALLOC_RESERVED10 : 1;
UINT DXGK_ALLOC_RESERVED9 : 1;
UINT DXGK_ALLOC_RESERVED4 : 1;
UINT DXGK_ALLOC_RESERVED3 : 1;
UINT DXGK_ALLOC_RESERVED2 : 1;
UINT DXGK_ALLOC_RESERVED1 : 1;
UINT DXGK_ALLOC_RESERVED0 : 1;
};
UINT Value;
};
} DXGK_ALLOCATIONINFOFLAGS_WDDM2_0;
C_ASSERT(sizeof(DXGK_ALLOCATIONINFOFLAGS_WDDM2_0) == 0x4);
typedef struct _DXGK_SEGMENTPREFERENCE
{
union
{
struct
{
UINT SegmentId0 : 5;
UINT Direction0 : 1;
UINT SegmentId1 : 5;
UINT Direction1 : 1;
UINT SegmentId2 : 5;
UINT Direction2 : 1;
UINT SegmentId3 : 5;
UINT Direction3 : 1;
UINT SegmentId4 : 5;
UINT Direction4 : 1;
UINT Reserved : 2;
};
UINT Value;
};
} DXGK_SEGMENTPREFERENCE, *PDXGK_SEGMENTPREFERENCE;
C_ASSERT(sizeof(DXGK_SEGMENTPREFERENCE) == 0x4);
typedef struct _DXGK_SEGMENTBANKPREFERENCE
{
union
{
struct
{
UINT Bank0 : 7;
UINT Direction0 : 1;
UINT Bank1 : 7;
UINT Direction1 : 1;
UINT Bank2 : 7;
UINT Direction2 : 1;
UINT Bank3 : 7;
UINT Direction3 : 1;
};
UINT Value;
};
} DXGK_SEGMENTBANKPREFERENCE;
C_ASSERT(sizeof(DXGK_SEGMENTBANKPREFERENCE) == 0x4);
typedef struct _DXGK_ALLOCATIONINFOFLAGS
{
union
{
struct
{
UINT CpuVisible : 1;
UINT PermanentSysMem : 1;
UINT Cached : 1;
UINT Protected : 1;
UINT ExistingSysMem : 1;
UINT ExistingKernelSysMem : 1;
UINT FromEndOfSegment : 1;
UINT Swizzled : 1;
UINT Overlay : 1;
UINT Capture : 1;
UINT UseAlternateVA : 1;
UINT SynchronousPaging : 1;
UINT LinkMirrored : 1;
UINT LinkInstanced : 1;
UINT HistoryBuffer : 1;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
UINT AccessedPhysically : 1;
UINT ExplicitResidencyNotification : 1;
UINT HardwareProtected : 1;
UINT CpuVisibleOnDemand : 1;
#else
UINT Reserved : 4;
#endif
UINT DXGK_ALLOC_RESERVED16 : 1;
UINT DXGK_ALLOC_RESERVED15 : 1;
UINT DXGK_ALLOC_RESERVED14 : 1;
UINT DXGK_ALLOC_RESERVED13 : 1;
UINT DXGK_ALLOC_RESERVED12 : 1;
UINT DXGK_ALLOC_RESERVED11 : 1;
UINT DXGK_ALLOC_RESERVED10 : 1;
UINT DXGK_ALLOC_RESERVED9 : 1;
UINT DXGK_ALLOC_RESERVED4 : 1;
UINT DXGK_ALLOC_RESERVED3 : 1;
UINT DXGK_ALLOC_RESERVED2 : 1;
UINT DXGK_ALLOC_RESERVED1 : 1;
UINT DXGK_ALLOC_RESERVED0 : 1;
};
UINT Value;
};
} DXGK_ALLOCATIONINFOFLAGS;
C_ASSERT(sizeof(DXGK_ALLOCATIONINFOFLAGS) == 0x4);
typedef struct _DXGK_ALLOCATIONUSAGEINFO1
{
union
{
struct
{
UINT PrivateFormat : 1;
UINT Swizzled : 1;
UINT MipMap : 1;
UINT Cube : 1;
UINT Volume : 1;
UINT Vertex : 1;
UINT Index : 1;
UINT Reserved : 25;
};
UINT Value;
} Flags;
union
{
D3DDDIFORMAT Format;
UINT PrivateFormat;
};
UINT SwizzledFormat;
UINT ByteOffset;
UINT Width;
UINT Height;
UINT Pitch;
UINT Depth;
UINT SlicePitch;
} DXGK_ALLOCATIONUSAGEINFO1;
C_ASSERT(sizeof(DXGK_ALLOCATIONUSAGEINFO1) == 0x24);
typedef struct _DXGK_ALLOCATIONUSAGEHINT
{
UINT Version;
DXGK_ALLOCATIONUSAGEINFO1 v1;
} DXGK_ALLOCATIONUSAGEHINT;
C_ASSERT(sizeof(DXGK_ALLOCATIONUSAGEHINT) == 0x28);
typedef struct _DXGK_ALLOCATIONINFO
{
VOID* pPrivateDriverData;
UINT PrivateDriverDataSize;
UINT Alignment;
SIZE_T Size;
SIZE_T PitchAlignedSize;
DXGK_SEGMENTBANKPREFERENCE HintedBank;
DXGK_SEGMENTPREFERENCE PreferredSegment;
UINT SupportedReadSegmentSet;
UINT SupportedWriteSegmentSet;
UINT EvictionSegmentSet;
union
{
UINT MaximumRenamingListLength;
UINT PhysicalAdapterIndex;
};
HANDLE hAllocation;
union
{
DXGK_ALLOCATIONINFOFLAGS Flags;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM2_0)
DXGK_ALLOCATIONINFOFLAGS_WDDM2_0 FlagsWddm2;
#endif
};
DXGK_ALLOCATIONUSAGEHINT* pAllocationUsageHint;
UINT AllocationPriority;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
DXGK_ALLOCATIONINFOFLAGS2 Flags2;
#endif
} DXGK_ALLOCATIONINFO;
#ifdef _WIN64
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
C_ASSERT(sizeof(DXGK_ALLOCATIONINFO) == 0x5C);
#else
C_ASSERT(sizeof(DXGK_ALLOCATIONINFO) == 0x58);
#endif
#else
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM3_0)
C_ASSERT(sizeof(DXGK_ALLOCATIONINFO) == 0x40);
#else
C_ASSERT(sizeof(DXGK_ALLOCATIONINFO) == 0x3C);
#endif
#endif
#endif // _D3DKMDDI_H_

View file

@ -3923,4 +3923,392 @@ NtGdiGetCurrentDpiInfo(
#endif /* PRIVATE_DWM_INTERFACE */
/* ReactOS Display Driver Model */
__kernel_entry
W32KAPI
BOOLEAN
APIENTRY
NtGdiDdDDICheckExclusiveOwnership(VOID);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICreateAllocation(
_Inout_ D3DKMT_CREATEALLOCATION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICheckMonitorPowerState(
_In_ const D3DKMT_CHECKMONITORPOWERSTATE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICheckOcclusion(
_In_ const D3DKMT_CHECKOCCLUSION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICloseAdapter(
_In_ const D3DKMT_CLOSEADAPTER* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
WINAPI
NtGdiDdDDICreateContext(
_Inout_ D3DKMT_CREATECONTEXT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICreateDevice(
_Inout_ D3DKMT_CREATEDEVICE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICreateOverlay(
_Inout_ D3DKMT_CREATEOVERLAY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDICreateSynchronizationObject(
_Inout_ D3DKMT_CREATESYNCHRONIZATIONOBJECT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIWaitForVerticalBlankEvent(
_In_ const D3DKMT_WAITFORVERTICALBLANKEVENT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIWaitForIdle(
_In_ const D3DKMT_WAITFORIDLE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIUpdateOverlay(
_In_ const D3DKMT_UPDATEOVERLAY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
WINAPI
NtGdiDdDDIUnlock(
_In_ const D3DKMT_UNLOCK* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyAllocation(
_In_ const D3DKMT_DESTROYALLOCATION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyContext(
_In_ const D3DKMT_DESTROYCONTEXT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyDevice(
_In_ const D3DKMT_DESTROYDEVICE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyOverlay(
_In_ const D3DKMT_DESTROYOVERLAY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIDestroySynchronizationObject(
_In_ const D3DKMT_DESTROYSYNCHRONIZATIONOBJECT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIEscape(
_In_ const D3DKMT_ESCAPE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIFlipOverlay(
_In_ const D3DKMT_FLIPOVERLAY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetContextSchedulingPriority(
_Inout_ D3DKMT_GETCONTEXTSCHEDULINGPRIORITY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetDeviceState(
_Inout_ D3DKMT_GETDEVICESTATE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetDisplayModeList(
_Inout_ D3DKMT_GETDISPLAYMODELIST* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetMultisampleMethodList(
_Inout_ D3DKMT_GETMULTISAMPLEMETHODLIST* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetPresentHistory(
_Inout_ D3DKMT_GETPRESENTHISTORY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetProcessSchedulingPriorityClass(
_In_ HANDLE unnamedParam1,
_Out_ D3DKMT_SCHEDULINGPRIORITYCLASS *unnamedParam2);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetRuntimeData(
_In_ const D3DKMT_GETRUNTIMEDATA* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetScanLine(
_In_ D3DKMT_GETSCANLINE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIGetSharedPrimaryHandle(
_Inout_ D3DKMT_GETSHAREDPRIMARYHANDLE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIInvalidateActiveVidPn(
_In_ const D3DKMT_INVALIDATEACTIVEVIDPN* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDILock(
_Inout_ D3DKMT_LOCK* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIOpenAdapterFromDeviceName(
_Inout_ D3DKMT_OPENADAPTERFROMDEVICENAME* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIOpenAdapterFromGdiDisplayName(
_Inout_ D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIOpenAdapterFromHdc(
_Inout_ D3DKMT_OPENADAPTERFROMHDC* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIOpenResource(
_Inout_ D3DKMT_OPENRESOURCE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIPollDisplayChildren(
_In_ const D3DKMT_POLLDISPLAYCHILDREN* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIPresent(
_In_ D3DKMT_PRESENT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIQueryAdapterInfo(
_Inout_ const D3DKMT_QUERYADAPTERINFO* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIQueryAllocationResidency(
_In_ const D3DKMT_QUERYALLOCATIONRESIDENCY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIQueryResourceInfo(
_Inout_ D3DKMT_QUERYRESOURCEINFO* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIQueryStatistics(
_Inout_ const D3DKMT_QUERYSTATISTICS* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIReleaseProcessVidPnSourceOwners(
_In_ HANDLE unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIRender(
_In_ D3DKMT_RENDER* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetAllocationPriority(
_In_ const D3DKMT_SETALLOCATIONPRIORITY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetContextSchedulingPriority(
_In_ const D3DKMT_SETCONTEXTSCHEDULINGPRIORITY* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetDisplayMode(
_In_ const D3DKMT_SETDISPLAYMODE* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetDisplayPrivateDriverFormat(
_In_ const D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetGammaRamp(
_In_ const D3DKMT_SETGAMMARAMP* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetProcessSchedulingPriorityClass(
_In_ HANDLE unnamedParam1,
_In_ D3DKMT_SCHEDULINGPRIORITYCLASS unnamedParam2);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetQueuedLimit(
_Inout_ const D3DKMT_SETQUEUEDLIMIT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISetVidPnSourceOwner(
_In_ const D3DKMT_SETVIDPNSOURCEOWNER* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISharedPrimaryLockNotification(
_In_ const D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISharedPrimaryUnLockNotification(
_In_ const D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDISignalSynchronizationObject(
_In_ const D3DKMT_SIGNALSYNCHRONIZATIONOBJECT* unnamedParam1);
__kernel_entry
W32KAPI
NTSTATUS
APIENTRY
NtGdiDdDDIWaitForSynchronizationObject(
_In_ const D3DKMT_WAITFORSYNCHRONIZATIONOBJECT* unnamedParam1);
#endif /* _NTGDI_ */

View file

@ -0,0 +1,410 @@
/*
* PROJECT: ReactOS Display Driver Model
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Dxgkrnl callbacks header
* COPYRIGHT: Copyright 2023 Justin Miller <justin.miller@reactos.org>
*/
#pragma once
#include <d3dkmddi.h>
/*
* Every structure in here is shared across two or more modules and doesn't currently
* match a single Windows version/update.
*
* These structures DO have variants in Windows, I just would like to track what
* we don't match 1:1 yet. Or haven't bother attempting to do so.
*/
/* REACTOS_WIN32K_DXGKRNL_INTERFACE function Pointers: */
typedef
NTSTATUS
DXGADAPTER_CREATEALLOCATION(_Inout_ D3DKMT_CREATEALLOCATION* unnamedParam1);
typedef DXGADAPTER_CREATEALLOCATION *PDXGADAPTER_CREATEALLOCATION;
typedef
NTSTATUS
DXGADAPTER_CHECKMONITORPOWERSTATE(_In_ const D3DKMT_CHECKMONITORPOWERSTATE* unnamedParam1);
typedef DXGADAPTER_CHECKMONITORPOWERSTATE *PDXGADAPTER_CHECKMONITORPOWERSTATE;
typedef
NTSTATUS
DXGADAPTER_CHECKOCCLUSION(_In_ const D3DKMT_CHECKOCCLUSION* unnamedParam1);
typedef DXGADAPTER_CHECKOCCLUSION *PDXGADAPTER_CHECKOCCLUSION;
typedef
NTSTATUS
DXGADAPTER_CLOSEADAPTER(_In_ const D3DKMT_CLOSEADAPTER* unnamedParam1);
typedef DXGADAPTER_CLOSEADAPTER *PDXGADAPTER_CLOSEADAPTER;
typedef
NTSTATUS
DXGADAPTER_CREATECONTEXT(_Inout_ const D3DKMT_CREATECONTEXT* unnamedParam1);
typedef DXGADAPTER_CREATECONTEXT *PDXGADAPTER_CREATECONTEXT;
typedef
NTSTATUS
DXGADAPTER_CREATEDEVICE(_Inout_ const D3DKMT_CREATEDEVICE* unnamedParam1);
typedef DXGADAPTER_CREATEDEVICE *PDXGADAPTER_CREATEDEVICE;
typedef
NTSTATUS
DXGADAPTER_CREATEOVERLAY(_Inout_ const D3DKMT_CREATEOVERLAY* unnamedParam1);
typedef DXGADAPTER_CREATEOVERLAY *PDXGADAPTER_CREATEOVERLAY;
typedef
NTSTATUS
DXGADAPTER_CREATESYNCHRONIZATIONOBJECT(_Inout_ const D3DKMT_CREATESYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_CREATESYNCHRONIZATIONOBJECT *PDXGADAPTER_CREATESYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_DESTROYALLOCATION(_In_ const D3DKMT_DESTROYALLOCATION* unnamedParam1);
typedef DXGADAPTER_DESTROYALLOCATION *PDXGADAPTER_DESTROYALLOCATION;
typedef
NTSTATUS
DXGADAPTER_DESTROYCONTEXT(_In_ const D3DKMT_DESTROYCONTEXT* unnamedParam1);
typedef DXGADAPTER_DESTROYCONTEXT *PDXGADAPTER_DESTROYCONTEXT;
typedef
NTSTATUS
DXGADAPTER_DESTROYDEVICE(_In_ const D3DKMT_DESTROYDEVICE* unnamedParam1);
typedef DXGADAPTER_DESTROYDEVICE *PDXGADAPTER_DESTROYDEVICE;
typedef
NTSTATUS
DXGADAPTER_DESTROYOVERLAY(_In_ const D3DKMT_DESTROYOVERLAY* unnamedParam1);
typedef DXGADAPTER_DESTROYOVERLAY *PDXGADAPTER_DESTROYOVERLAY;
typedef
NTSTATUS
DXGADAPTER_DESTROYSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_DESTROYSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_DESTROYSYNCHRONIZATIONOBJECT *PDXGADAPTER_DESTROYSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_ESCAPE(_In_ const D3DKMT_ESCAPE* unnamedParam1);
typedef DXGADAPTER_ESCAPE *PDXGADAPTER_ESCAPE;
typedef
NTSTATUS
DXGADAPTER_FLIPOVERLAY(_In_ const D3DKMT_FLIPOVERLAY* unnamedParam1);
typedef DXGADAPTER_FLIPOVERLAY *PDXGADAPTER_FLIPOVERLAY;
typedef
NTSTATUS
DXGADAPTER_GETCONTEXTSCHEDULINGPRIORITY(_Inout_ const D3DKMT_GETCONTEXTSCHEDULINGPRIORITY* unnamedParam1);
typedef DXGADAPTER_GETCONTEXTSCHEDULINGPRIORITY *PDXGADAPTER_GETCONTEXTSCHEDULINGPRIORITY;
typedef
NTSTATUS
DXGADAPTER_GETDEVICESTATE(_Inout_ D3DKMT_GETDEVICESTATE* unnamedParam1);
typedef DXGADAPTER_GETDEVICESTATE *PDXGADAPTER_GETDEVICESTATE;
typedef
NTSTATUS
DXGADAPTER_GETDISPLAYMODELIST(_Inout_ D3DKMT_GETDISPLAYMODELIST* unnamedParam1);
typedef DXGADAPTER_GETDISPLAYMODELIST *PDXGADAPTER_GETDISPLAYMODELIST;
typedef
NTSTATUS
DXGADAPTER_GETMULTISAMPLEMETHODLIST(_Inout_ D3DKMT_GETMULTISAMPLEMETHODLIST* unnamedParam1);
typedef DXGADAPTER_GETMULTISAMPLEMETHODLIST *PDXGADAPTER_GETMULTISAMPLEMETHODLIST;
typedef
NTSTATUS
DXGADAPTER_GETRUNTIMEDATA(_Inout_ const D3DKMT_GETRUNTIMEDATA* unnamedParam1);
typedef DXGADAPTER_GETRUNTIMEDATA *PDXGADAPTER_GETRUNTIMEDATA;
typedef
NTSTATUS
DXGADAPTER_GETSCANLINE(_Inout_ D3DKMT_GETSCANLINE* unnamedParam1);
typedef DXGADAPTER_GETSCANLINE *PDXGADAPTER_GETSCANLINE;
typedef
NTSTATUS
DXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_SIGNALSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT *PDXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_WAITFORVERTICALBLANKEVENT(_In_ const D3DKMT_WAITFORVERTICALBLANKEVENT* unnamedParam1);
typedef DXGADAPTER_WAITFORVERTICALBLANKEVENT *PDXGADAPTER_WAITFORVERTICALBLANKEVENT;
typedef
NTSTATUS
DXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_WAITFORSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT *PDXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_SETVIDPNSOURCEOWNER(_In_ const D3DKMT_SETVIDPNSOURCEOWNER* unnamedParam1);
typedef DXGADAPTER_SETVIDPNSOURCEOWNER *PDXGADAPTER_SETVIDPNSOURCEOWNER;
typedef
NTSTATUS
DXGADAPTER_WAITFORIDLE(_In_ const D3DKMT_WAITFORIDLE* unnamedParam1);
typedef DXGADAPTER_WAITFORIDLE *PDXGADAPTER_WAITFORIDLE;
typedef
NTSTATUS
DXGADAPTER_UPDATEOVERLAY(_In_ const D3DKMT_UPDATEOVERLAY* unnamedParam1);
typedef DXGADAPTER_UPDATEOVERLAY *PDXGADAPTER_UPDATEOVERLAY;
typedef
NTSTATUS
DXGADAPTER_SETQUEUEDLIMIT(_In_ const D3DKMT_SETQUEUEDLIMIT* unnamedParam1);
typedef DXGADAPTER_SETQUEUEDLIMIT *PDXGADAPTER_SETQUEUEDLIMIT;
typedef
NTSTATUS
DXGADAPTER_SETGAMMARAMP(_In_ const D3DKMT_SETGAMMARAMP* unnamedParam1);
typedef DXGADAPTER_SETGAMMARAMP *PDXGADAPTER_SETGAMMARAMP;
typedef
NTSTATUS
DXGADAPTER_SETDISPLAYMODE(_In_ const D3DKMT_SETDISPLAYMODE* unnamedParam1);
typedef DXGADAPTER_SETDISPLAYMODE *PDXGADAPTER_SETDISPLAYMODE;
typedef
NTSTATUS
DXGADAPTER_SETDISPLAYPRIVATEDRIVERFORMAT(_In_ const D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT* unnamedParam1);
typedef DXGADAPTER_SETDISPLAYPRIVATEDRIVERFORMAT *PDXGADAPTER_SETDISPLAYPRIVATEDRIVERFORMAT;
typedef
NTSTATUS
DXGADAPTER_SETGAMMARAMP(_In_ const D3DKMT_SETGAMMARAMP* unnamedParam1);
typedef DXGADAPTER_SETGAMMARAMP *PDXGADAPTER_SETGAMMARAMP;
typedef
NTSTATUS
DXGADAPTER_SETQUEUEDLIMIT(_In_ const D3DKMT_SETQUEUEDLIMIT* unnamedParam1);
typedef DXGADAPTER_SETQUEUEDLIMIT *PDXGADAPTER_SETQUEUEDLIMIT;
typedef
NTSTATUS
DXGADAPTER_SETVIDPNSOURCEOWNER(_In_ const D3DKMT_SETVIDPNSOURCEOWNER* unnamedParam1);
typedef DXGADAPTER_SETVIDPNSOURCEOWNER *PDXGADAPTER_SETVIDPNSOURCEOWNER;
typedef
NTSTATUS
DXGADAPTER_UNLOCK(_In_ const D3DKMT_UNLOCK* unnamedParam1);
typedef DXGADAPTER_UNLOCK *PDXGADAPTER_UNLOCK;
typedef
NTSTATUS
DXGADAPTER_UPDATEOVERLAY(_In_ const D3DKMT_UPDATEOVERLAY* unnamedParam1);
typedef DXGADAPTER_UPDATEOVERLAY *PDXGADAPTER_UPDATEOVERLAY;
typedef
NTSTATUS
DXGADAPTER_WAITFORIDLE(_In_ const D3DKMT_WAITFORIDLE* unnamedParam1);
typedef DXGADAPTER_WAITFORIDLE *PDXGADAPTER_WAITFORIDLE;
typedef
NTSTATUS
DXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_WAITFORSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT *PDXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_WAITFORVERTICALBLANKEVENT(_In_ const D3DKMT_WAITFORVERTICALBLANKEVENT* unnamedParam1);
typedef DXGADAPTER_WAITFORVERTICALBLANKEVENT *PDXGADAPTER_WAITFORVERTICALBLANKEVENT;
typedef
NTSTATUS
DXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT(_In_ const D3DKMT_SIGNALSYNCHRONIZATIONOBJECT* unnamedParam1);
typedef DXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT *PDXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT;
typedef
NTSTATUS
DXGADAPTER_QUERYRESOURCEINFO(_Inout_ D3DKMT_QUERYRESOURCEINFO* unnamedParam1);
typedef DXGADAPTER_QUERYRESOURCEINFO *PDXGADAPTER_QUERYRESOURCEINFO;
typedef
NTSTATUS
DXGADAPTER_GETPRESENTHISTORY(_Inout_ D3DKMT_GETPRESENTHISTORY* unnamedParam1);
typedef DXGADAPTER_GETPRESENTHISTORY *PDXGADAPTER_GETPRESENTHISTORY;
typedef
NTSTATUS
DXGADAPTER_SETALLOCATIONPRIORITY(_In_ const D3DKMT_SETALLOCATIONPRIORITY* unnamedParam1);
typedef DXGADAPTER_SETALLOCATIONPRIORITY *PDXGADAPTER_SETALLOCATIONPRIORITY;
typedef
NTSTATUS
DXGADAPTER_INVALIDATEACTIVEVIDPN(_In_ const D3DKMT_INVALIDATEACTIVEVIDPN* unnamedParam1);
typedef DXGADAPTER_INVALIDATEACTIVEVIDPN *PDXGADAPTER_INVALIDATEACTIVEVIDPN;
typedef
NTSTATUS
DXGADAPTER_GETSHAREDPRIMARYHANDLE(_In_ D3DKMT_GETSHAREDPRIMARYHANDLE* unnamedParam1);
typedef DXGADAPTER_GETSHAREDPRIMARYHANDLE *PDXGADAPTER_GETSHAREDPRIMARYHANDLE;
typedef
NTSTATUS
DXGADAPTER_LOCK(_In_ D3DKMT_LOCK* unnamedParam1);
typedef DXGADAPTER_LOCK *PDXGADAPTER_LOCK;
typedef
NTSTATUS
DXGADAPTER_POLLDISPLAYCHILDREN(_In_ const D3DKMT_POLLDISPLAYCHILDREN* unnamedParam1);
typedef DXGADAPTER_POLLDISPLAYCHILDREN *PDXGADAPTER_POLLDISPLAYCHILDREN;
typedef
NTSTATUS
DXGADAPTER_OPENRESOURCE(_Inout_ D3DKMT_OPENRESOURCE* unnamedParam1);
typedef DXGADAPTER_OPENRESOURCE *PDXGADAPTER_OPENRESOURCE;
typedef
NTSTATUS
DXGADAPTER_PRESENT(_In_ D3DKMT_PRESENT* unnamedParam1);
typedef DXGADAPTER_PRESENT *PDXGADAPTER_PRESENT;
typedef
NTSTATUS
DXGADAPTER_QUERYADAPTERINFO(_Inout_ const D3DKMT_QUERYADAPTERINFO* unnamedParam1);
typedef DXGADAPTER_QUERYADAPTERINFO *PDXGADAPTER_QUERYADAPTERINFO;
typedef
NTSTATUS
DXGADAPTER_QUERYALLOCATIONRESIDENCY(_In_ const D3DKMT_QUERYALLOCATIONRESIDENCY* unnamedParam1);
typedef DXGADAPTER_QUERYALLOCATIONRESIDENCY *PDXGADAPTER_QUERYALLOCATIONRESIDENCY;
typedef
NTSTATUS
DXGADAPTER_QUERYSTATISTICS(_Inout_ const D3DKMT_QUERYSTATISTICS* unnamedParam1);
typedef DXGADAPTER_QUERYSTATISTICS *PDXGADAPTER_QUERYSTATISTICS;
typedef
NTSTATUS
DXGADAPTER_RELEASEPROCESSVIDPNSOURCEOWNERS(_In_ HANDLE unnamedParam1);
typedef DXGADAPTER_RELEASEPROCESSVIDPNSOURCEOWNERS *PDXGADAPTER_RELEASEPROCESSVIDPNSOURCEOWNERS;
typedef
NTSTATUS
DXGADAPTER_RENDER(_In_ D3DKMT_RENDER* unnamedParam1);
typedef DXGADAPTER_RENDER *PDXGADAPTER_RENDER;
typedef
NTSTATUS
DXGADAPTER_SETCONTEXTSCHEDULINGPRIORITY(_In_ const D3DKMT_SETCONTEXTSCHEDULINGPRIORITY* unnamedParam1);
typedef DXGADAPTER_SETCONTEXTSCHEDULINGPRIORITY *PDXGADAPTER_SETCONTEXTSCHEDULINGPRIORITY;
/*
* This structure is the callbacks list that exist between DXGKNRL and Win32k.
* This private interface is undocumented and changes with every Windows update
* that remotely touches WDDM.
*
* Reversing this isn't possible until we can throw our DxgKrnl into vista or above at runtime.
* But this cannot happen without us first supporting watchdog.
*/
typedef struct _REACTOS_WIN32K_DXGKRNL_INTERFACE
{
PDXGADAPTER_PRESENT RxgkIntPfnPresent;
PDXGADAPTER_QUERYADAPTERINFO RxgkIntPfnQueryAdapterInfo;
PDXGADAPTER_QUERYALLOCATIONRESIDENCY RxgkIntPfnQueryAllocationResidency;
PDXGADAPTER_QUERYSTATISTICS RxgkIntPfnQueryStatistics;
PDXGADAPTER_RELEASEPROCESSVIDPNSOURCEOWNERS RxgkIntPfnReleaseProcessVidPnSourceOwners;
PDXGADAPTER_RENDER RxgkIntPfnRender;
PDXGADAPTER_SETCONTEXTSCHEDULINGPRIORITY RxgkIntPfnSetContextSchedulingPriority;
PDXGADAPTER_OPENRESOURCE RxgkIntPfnOpenResource;
PDXGADAPTER_POLLDISPLAYCHILDREN RxgkIntPfnPollDisplayChildren;
PDXGADAPTER_LOCK RxgkIntPfnLock;
PDXGADAPTER_GETSHAREDPRIMARYHANDLE RxgkIntPfnGetSharedPrimaryHandle;
PDXGADAPTER_INVALIDATEACTIVEVIDPN RxgkIntPfnInvalidateActiveVidPn;
PDXGADAPTER_SETALLOCATIONPRIORITY RxgkIntPfnSetAllocationPriority;
PDXGADAPTER_GETPRESENTHISTORY RxgkIntPfnGetPresentHistory;
PDXGADAPTER_QUERYRESOURCEINFO RxgkIntPfnQueryResourceInfo;
PDXGADAPTER_CREATEALLOCATION RxgkIntPfnCreateAllocation;
PDXGADAPTER_CHECKMONITORPOWERSTATE RxgkIntPfnCheckMonitorPowerState;
PDXGADAPTER_CHECKOCCLUSION RxgkIntPfnCheckOcclusion;
PDXGADAPTER_CLOSEADAPTER RxgkIntPfnCloseAdapter;
PDXGADAPTER_CREATECONTEXT RxgkIntPfnCreateContext;
PDXGADAPTER_CREATEDEVICE RxgkIntPfnCreateDevice;
PDXGADAPTER_CREATEOVERLAY RxgkIntPfnCreateOverlay;
PDXGADAPTER_CREATESYNCHRONIZATIONOBJECT RxgkIntPfnCreateSynchronizationObject;
PDXGADAPTER_DESTROYCONTEXT RxgkIntPfnDestroyContext;
PDXGADAPTER_DESTROYDEVICE RxgkIntPfnDestroyDevice;
PDXGADAPTER_DESTROYOVERLAY RxgkIntPfnDestroyOverlay;
PDXGADAPTER_DESTROYSYNCHRONIZATIONOBJECT RxgkIntPfnDestroySynchronizationObject;
PDXGADAPTER_ESCAPE RxgkIntPfnEscape;
PDXGADAPTER_DESTROYALLOCATION RxgkIntPfnDestroyAllocation;
PDXGADAPTER_FLIPOVERLAY RxgkIntPfnFlipOverlay;
PDXGADAPTER_GETCONTEXTSCHEDULINGPRIORITY RxgkIntPfnGetContextSchedulingPriority;
PDXGADAPTER_GETDEVICESTATE RxgkIntPfnGetDeviceState;
PDXGADAPTER_GETDISPLAYMODELIST RxgkIntPfnGetDisplayModeList;
PDXGADAPTER_GETMULTISAMPLEMETHODLIST RxgkIntPfnGetMultisampleMethodList;
PDXGADAPTER_GETRUNTIMEDATA RxgkIntPfnGetRuntimeData;
PDXGADAPTER_GETSCANLINE RxgkIntPfnGetScanLine;
PDXGADAPTER_SIGNALSYNCHRONIZATIONOBJECT RxgkIntPfnSignalSynchronizationObject;
PDXGADAPTER_WAITFORVERTICALBLANKEVENT RxgkIntPfnWaitForVerticalBlankEvent;
PDXGADAPTER_WAITFORSYNCHRONIZATIONOBJECT RxgkIntPfnWaitForSynchronizationObject;
PDXGADAPTER_SETVIDPNSOURCEOWNER RxgkIntPfnSetVidPnSourceOwner;
PDXGADAPTER_WAITFORIDLE RxgkIntPfnWaitForIdle;
PDXGADAPTER_UPDATEOVERLAY RxgkIntPfnUpdateOverlay;
PDXGADAPTER_SETQUEUEDLIMIT RxgkIntPfnSetQueuedLimit;
PDXGADAPTER_SETGAMMARAMP RxgkIntPfnSetGammaRamp;
PDXGADAPTER_SETDISPLAYMODE RxgkIntPfnSetDisplayMode;
PDXGADAPTER_SETDISPLAYPRIVATEDRIVERFORMAT RxgkIntPfnSetDisplayPrivateDriverFormat;
PDXGADAPTER_UNLOCK RxgkIntPfnUnlock;
} REACTOS_WIN32K_DXGKRNL_INTERFACE, *PREACTOS_WIN32K_DXGKRNL_INTERFACE;

View file

@ -173,6 +173,7 @@ list(APPEND SOURCE
gdi/ntgdi/bitmaps.c
gdi/ntgdi/cliprgn.c
gdi/ntgdi/coord.c
gdi/ntgdi/d3dkmt.c
gdi/ntgdi/dcattr.c
gdi/ntgdi/dclife.c
gdi/ntgdi/dcobjs.c

View file

@ -53,6 +53,7 @@ add_library(gdi32 MODULE
set_module_type(gdi32 win32dll UNICODE ENTRYPOINT DllMain 12)
target_link_libraries(gdi32
gdi32_vista_static
winegdi
wine
win32ksys

View file

@ -608,3 +608,62 @@
608 stdcall bMakePathNameW(wstr wstr wstr long)
609 stdcall cGetTTFFromFOT(long long long long long long long)
610 stdcall gdiPlaySpoolStream(long long long long long long)
; ReactOS Display Driver Model
@ stdcall -version=0x600+ D3DKMTCheckExclusiveOwnership() NtGdiDdDDICheckExclusiveOwnership
@ stdcall -version=0x600+ D3DKMTCheckMonitorPowerState(ptr) NtGdiDdDDICheckMonitorPowerState
@ stdcall -version=0x600+ D3DKMTCheckOcclusion(ptr) NtGdiDdDDICheckOcclusion
@ stdcall -version=0x600+ D3DKMTCloseAdapter(ptr) NtGdiDdDDICloseAdapter
@ stdcall -version=0x600+ D3DKMTCreateAllocation(ptr) NtGdiDdDDICreateAllocation
@ stdcall -version=0x600+ D3DKMTCreateContext(ptr) NtGdiDdDDICreateContext
@ stdcall -version=0x600+ D3DKMTCreateDCFromMemory(ptr)
@ stdcall -version=0x600+ D3DKMTCreateDevice(ptr) NtGdiDdDDICreateDevice
@ stdcall -version=0x600+ D3DKMTCreateOverlay(ptr) NtGdiDdDDICreateOverlay
@ stdcall -version=0x600+ D3DKMTCreateSynchronizationObject(ptr) NtGdiDdDDICreateSynchronizationObject
@ stdcall -version=0x600+ D3DKMTDestroyAllocation(ptr) NtGdiDdDDIDestroyAllocation
@ stdcall -version=0x600+ D3DKMTDestroyContext(ptr) NtGdiDdDDIDestroyContext
@ stdcall -version=0x600+ D3DKMTDestroyDCFromMemory(ptr)
@ stdcall -version=0x600+ D3DKMTDestroyDevice(ptr) NtGdiDdDDIDestroyDevice
@ stdcall -version=0x600+ D3DKMTDestroyOverlay(ptr) NtGdiDdDDIDestroyOverlay
@ stdcall -version=0x600+ D3DKMTDestroySynchronizationObject(ptr) NtGdiDdDDIDestroySynchronizationObject
@ stdcall -version=0x600+ D3DKMTEscape(ptr) NtGdiDdDDIEscape
@ stdcall -version=0x600+ D3DKMTFlipOverlay(ptr) NtGdiDdDDIFlipOverlay
@ stdcall -version=0x600+ D3DKMTGetContextSchedulingPriority(ptr) NtGdiDdDDIGetContextSchedulingPriority
@ stdcall -version=0x600+ D3DKMTGetDeviceState(ptr) NtGdiDdDDIGetDeviceState
@ stdcall -version=0x600+ D3DKMTGetDisplayModeList(ptr) NtGdiDdDDIGetDisplayModeList
@ stdcall -version=0x600+ D3DKMTGetMultisampleMethodList(ptr) NtGdiDdDDIGetMultisampleMethodList
@ stdcall -version=0x600+ D3DKMTGetPresentHistory(ptr) NtGdiDdDDIGetPresentHistory
@ stdcall -version=0x600+ D3DKMTGetProcessSchedulingPriorityClass(ptr ptr) NtGdiDdDDIGetProcessSchedulingPriorityClass
@ stdcall -version=0x600+ D3DKMTGetRuntimeData(ptr) NtGdiDdDDIGetRuntimeData
@ stdcall -version=0x600+ D3DKMTGetScanLine(ptr) NtGdiDdDDIGetScanLine
@ stdcall -version=0x600+ D3DKMTGetSharedPrimaryHandle(ptr) NtGdiDdDDIGetSharedPrimaryHandle
@ stdcall -version=0x600+ D3DKMTInvalidateActiveVidPn(ptr) NtGdiDdDDIInvalidateActiveVidPn
@ stdcall -version=0x600+ D3DKMTLock(ptr) NtGdiDdDDILock
@ stdcall -version=0x600+ D3DKMTOpenAdapterFromDeviceName(ptr) NtGdiDdDDIOpenAdapterFromDeviceName
@ stdcall -version=0x600+ D3DKMTOpenAdapterFromGdiDisplayName(ptr)
@ stdcall -version=0x600+ D3DKMTOpenAdapterFromHdc(ptr) NtGdiDdDDIOpenAdapterFromHdc
@ stdcall -version=0x600+ D3DKMTOpenResource(ptr) NtGdiDdDDIOpenResource
@ stdcall -version=0x600+ D3DKMTPollDisplayChildren(ptr) NtGdiDdDDIPollDisplayChildren
@ stdcall -version=0x600+ D3DKMTPresent(ptr) NtGdiDdDDIPresent
@ stdcall -version=0x600+ D3DKMTQueryAdapterInfo(ptr) NtGdiDdDDIQueryAdapterInfo
@ stdcall -version=0x600+ D3DKMTQueryAllocationResidency(ptr) NtGdiDdDDIQueryAllocationResidency
@ stdcall -version=0x600+ D3DKMTQueryResourceInfo(ptr) NtGdiDdDDIQueryResourceInfo
@ stdcall -version=0x600+ D3DKMTQueryStatistics(ptr) NtGdiDdDDIQueryStatistics
@ stdcall -version=0x600+ D3DKMTReleaseProcessVidPnSourceOwners(ptr) NtGdiDdDDIReleaseProcessVidPnSourceOwners
@ stdcall -version=0x600+ D3DKMTRender(ptr) NtGdiDdDDIRender
@ stdcall -version=0x600+ D3DKMTSetAllocationPriority(ptr) NtGdiDdDDISetAllocationPriority
@ stdcall -version=0x600+ D3DKMTSetContextSchedulingPriority(ptr) NtGdiDdDDISetContextSchedulingPriority
@ stdcall -version=0x600+ D3DKMTSetDisplayMode(ptr) NtGdiDdDDISetDisplayMode
@ stdcall -version=0x600+ D3DKMTSetDisplayPrivateDriverFormat(ptr) NtGdiDdDDISetDisplayPrivateDriverFormat
@ stdcall -version=0x600+ D3DKMTSetGammaRamp(ptr) NtGdiDdDDISetGammaRamp
@ stdcall -version=0x600+ D3DKMTSetProcessSchedulingPriorityClass(ptr ptr) NtGdiDdDDISetProcessSchedulingPriorityClass
@ stdcall -version=0x600+ D3DKMTSetQueuedLimit(ptr) NtGdiDdDDISetQueuedLimit
@ stdcall -version=0x600+ D3DKMTSetVidPnSourceOwner(ptr) NtGdiDdDDISetVidPnSourceOwner
@ stdcall -version=0x600+ D3DKMTSharedPrimaryLockNotification(ptr) NtGdiDdDDISharedPrimaryLockNotification
@ stdcall -version=0x600+ D3DKMTSharedPrimaryUnLockNotification(ptr) NtGdiDdDDISharedPrimaryUnLockNotification
@ stdcall -version=0x600+ D3DKMTSignalSynchronizationObject(ptr) NtGdiDdDDISignalSynchronizationObject
@ stdcall -version=0x600+ D3DKMTUnlock(ptr) NtGdiDdDDIUnlock
@ stdcall -version=0x600+ D3DKMTUpdateOverlay(ptr) NtGdiDdDDIUpdateOverlay
@ stdcall -version=0x600+ D3DKMTWaitForIdle(ptr) NtGdiDdDDIWaitForIdle
@ stdcall -version=0x600+ D3DKMTWaitForSynchronizationObject(ptr) NtGdiDdDDIWaitForSynchronizationObject
@ stdcall -version=0x600+ D3DKMTWaitForVerticalBlankEvent(ptr) NtGdiDdDDIWaitForVerticalBlankEvent

View file

@ -6,7 +6,8 @@ include_directories(
spec2def(gdi32_vista.dll gdi32_vista.spec ADD_IMPORTLIB)
list(APPEND SOURCE
dc.c)
dc.c
d3dkmt.c)
add_library(gdi32_vista MODULE
${SOURCE}
@ -15,6 +16,10 @@ add_library(gdi32_vista MODULE
set_module_type(gdi32_vista win32dll UNICODE ENTRYPOINT 0)
add_library(gdi32_vista_static ${SOURCE})
target_link_libraries(gdi32_vista_static win32ksys)
add_dependencies(gdi32_vista_static psdk)
target_link_libraries(gdi32_vista win32ksys)
#add_importlibs(gdi32_vista user32 advapi32 kernel32 ntdll)

View file

@ -0,0 +1,17 @@
/*
* PROJECT: ReactOS Display Driver Model
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: D3DKMT dxgkrnl syscalls
* COPYRIGHT: Copyright 2023 Justin Miller <justin.miller@reactos.org>
*/
#include <gdi32_vista.h>
#include <d3dkmddi.h>
/* Not just a syscall even in wine. */
NTSTATUS
WINAPI
D3DKMTOpenAdapterFromGdiDisplayName(_Inout_ D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME* unnamedParam1)
{
return STATUS_PROCEDURE_NOT_FOUND;
}

View file

@ -1,16 +1,4 @@
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
#define NTOS_MODE_USER
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <ndk/rtlfuncs.h>
#include <wingdi.h>
#include <winddi.h>
#include <prntfont.h>
#include <ntgdityp.h>
#include <ntgdi.h>
#include <gdi32_vista.h>
/***********************************************************************
* D3DKMTCreateDCFromMemory (GDI32.@)

View file

@ -0,0 +1,16 @@
#pragma once
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
#define NTOS_MODE_USER
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <ndk/rtlfuncs.h>
#include <wingdi.h>
#include <winddi.h>
#include <prntfont.h>
#include <ntgdityp.h>
#include <ntgdi.h>

716
win32ss/gdi/ntgdi/d3dkmt.c Normal file
View file

@ -0,0 +1,716 @@
/*
* PROJECT: ReactOS Display Driver Model
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: D3DKMT dxgkrnl callbacks
* COPYRIGHT: Copyright 2023 Justin Miller <justin.miller@reactos.org>
*/
#include <win32k.h>
#include <reactos/rddm/rxgkinterface.h>
#include <debug.h>
/*
* It looks like Windows saves all the function pointers globally inside win32k.
* Instead, we're going to keep it static to this file and keep it organized in struct
* we obtained with the IOCTL.
*/
static REACTOS_WIN32K_DXGKRNL_INTERFACE DxgAdapterCallbacks = {0};
/*
* This looks like it's done inside DxDdStartupDxGraphics, but I'd rather keep this organized.
* Dxg gets start inevitably anyway it seems at least on vista.
*/
VOID
APIENTRY
DxStartupDxgkInt(VOID)
{
DPRINT("DxStartupDxgkInt: Entry\n");
/*
* TODO: Let DxgKrnl know it's time to start all adapters, and obtain the win32k<->dxgkrnl interface via an IOCTRL.
* https://jira.reactos.org/browse/CORE-20027
*/
}
BOOLEAN
APIENTRY
NtGdiDdDDICheckExclusiveOwnership(VOID)
{
// We don't support DWM at this time, excusive ownership is always false.
return FALSE;
}
NTSTATUS
APIENTRY
NtGdiDdDDIGetProcessSchedulingPriorityClass(_In_ HANDLE unnamedParam1,
_Out_ D3DKMT_SCHEDULINGPRIORITYCLASS *unnamedParam2)
{
return 1;
}
NTSTATUS
APIENTRY
NtGdiDdDDISetProcessSchedulingPriorityClass(_In_ HANDLE unnamedParam1,
_In_ D3DKMT_SCHEDULINGPRIORITYCLASS unnamedParam2)
{
return 1;
}
NTSTATUS
APIENTRY
NtGdiDdDDISharedPrimaryLockNotification(_In_ const D3DKMT_SHAREDPRIMARYLOCKNOTIFICATION* unnamedParam1)
{
return 1;
}
NTSTATUS
APIENTRY
NtGdiDdDDISharedPrimaryUnLockNotification(_In_ const D3DKMT_SHAREDPRIMARYUNLOCKNOTIFICATION* unnamedParam1)
{
return 1;
}
NTSTATUS
APIENTRY
NtGdiDdDDIOpenAdapterFromGdiDisplayName(_Inout_ D3DKMT_OPENADAPTERFROMGDIDISPLAYNAME* unnamedParam1)
{
return 0;
}
NTSTATUS
APIENTRY
NtGdiDdDDIOpenAdapterFromHdc(_Inout_ D3DKMT_OPENADAPTERFROMHDC* unnamedParam1)
{
return 0;
}
NTSTATUS
APIENTRY
NtGdiDdDDIOpenAdapterFromDeviceName(_Inout_ D3DKMT_OPENADAPTERFROMDEVICENAME* unnamedParam1)
{
return 0;
}
/*
* The following APIs all have the same idea.
* Most of the parameters are stuffed in custom typedefs with a bunch of types inside them.
* The idea here is this:
* if we're dealing with a d3dkmt API that directly calls into a miniport if the function pointer doesn't
* exist we're returning STATUS_PROCEDURE_NOT_FOUND.
*
* This essentially means the Dxgkrnl interface was never made as Win32k doesn't do any handling for these routines.
*/
NTSTATUS
APIENTRY
NtGdiDdDDICreateAllocation(_Inout_ D3DKMT_CREATEALLOCATION* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnCreateAllocation)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnCreateAllocation(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDICheckMonitorPowerState(_In_ const D3DKMT_CHECKMONITORPOWERSTATE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnCheckMonitorPowerState)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnCheckMonitorPowerState(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDICheckOcclusion(_In_ const D3DKMT_CHECKOCCLUSION* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnCheckOcclusion)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnCheckOcclusion(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDICloseAdapter(_In_ const D3DKMT_CLOSEADAPTER* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnCloseAdapter)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnCloseAdapter(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDICreateContext(_Inout_ D3DKMT_CREATECONTEXT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnCreateContext)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnCreateContext(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDICreateDevice(_Inout_ D3DKMT_CREATEDEVICE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnCreateDevice)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnCreateDevice(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDICreateOverlay(_Inout_ D3DKMT_CREATEOVERLAY* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnCreateOverlay)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnCreateOverlay(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDICreateSynchronizationObject(_Inout_ D3DKMT_CREATESYNCHRONIZATIONOBJECT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnCreateSynchronizationObject)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnCreateSynchronizationObject(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyAllocation(_In_ const D3DKMT_DESTROYALLOCATION* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnDestroyAllocation)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnDestroyAllocation(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyContext(_In_ const D3DKMT_DESTROYCONTEXT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnDestroyContext)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnDestroyContext(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyDevice(_In_ const D3DKMT_DESTROYDEVICE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnDestroyDevice)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnDestroyDevice(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIDestroyOverlay(_In_ const D3DKMT_DESTROYOVERLAY* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnDestroyOverlay)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnDestroyOverlay(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIDestroySynchronizationObject(_In_ const D3DKMT_DESTROYSYNCHRONIZATIONOBJECT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnDestroySynchronizationObject)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnDestroySynchronizationObject(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIEscape(_In_ const D3DKMT_ESCAPE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnEscape)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnEscape(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIFlipOverlay(_In_ const D3DKMT_FLIPOVERLAY* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnFlipOverlay)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnFlipOverlay(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIGetContextSchedulingPriority(_Inout_ D3DKMT_GETCONTEXTSCHEDULINGPRIORITY* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnGetContextSchedulingPriority)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnGetContextSchedulingPriority(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIGetDeviceState(_Inout_ D3DKMT_GETDEVICESTATE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnGetDeviceState)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnGetDeviceState(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIGetDisplayModeList(_Inout_ D3DKMT_GETDISPLAYMODELIST* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnGetDisplayModeList)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnGetDisplayModeList(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIGetMultisampleMethodList(_Inout_ D3DKMT_GETMULTISAMPLEMETHODLIST* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnGetMultisampleMethodList)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnGetMultisampleMethodList(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIGetPresentHistory(_Inout_ D3DKMT_GETPRESENTHISTORY* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnGetPresentHistory)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnGetPresentHistory(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIGetRuntimeData(_In_ const D3DKMT_GETRUNTIMEDATA* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnGetRuntimeData)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnGetRuntimeData(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIGetScanLine(_In_ D3DKMT_GETSCANLINE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnGetScanLine)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnGetScanLine(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIGetSharedPrimaryHandle(_Inout_ D3DKMT_GETSHAREDPRIMARYHANDLE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnGetSharedPrimaryHandle)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnGetSharedPrimaryHandle(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIInvalidateActiveVidPn(_In_ const D3DKMT_INVALIDATEACTIVEVIDPN* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnInvalidateActiveVidPn)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnInvalidateActiveVidPn(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDILock(_Inout_ D3DKMT_LOCK* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnLock)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnLock(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIOpenResource(_Inout_ D3DKMT_OPENRESOURCE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnOpenResource)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnOpenResource(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIPollDisplayChildren(_In_ const D3DKMT_POLLDISPLAYCHILDREN* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnPollDisplayChildren)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnPollDisplayChildren(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIPresent(_In_ D3DKMT_PRESENT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnPresent)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnPresent(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIQueryAdapterInfo(_Inout_ const D3DKMT_QUERYADAPTERINFO* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnQueryAdapterInfo)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnQueryAdapterInfo(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIQueryAllocationResidency(_In_ const D3DKMT_QUERYALLOCATIONRESIDENCY* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnQueryAllocationResidency)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnQueryAllocationResidency(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIQueryResourceInfo(_Inout_ D3DKMT_QUERYRESOURCEINFO* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnQueryResourceInfo)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnQueryResourceInfo(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIQueryStatistics(_Inout_ const D3DKMT_QUERYSTATISTICS* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnQueryStatistics)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnQueryStatistics(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIReleaseProcessVidPnSourceOwners(_In_ HANDLE unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnReleaseProcessVidPnSourceOwners)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnReleaseProcessVidPnSourceOwners(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIRender(_In_ D3DKMT_RENDER* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnRender)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnRender(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDISetAllocationPriority(_In_ const D3DKMT_SETALLOCATIONPRIORITY* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnSetAllocationPriority)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnSetAllocationPriority(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDISetContextSchedulingPriority(_In_ const D3DKMT_SETCONTEXTSCHEDULINGPRIORITY* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnSetContextSchedulingPriority)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnSetContextSchedulingPriority(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDISetDisplayMode(_In_ const D3DKMT_SETDISPLAYMODE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnSetDisplayMode)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnSetDisplayMode(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDISetDisplayPrivateDriverFormat(_In_ const D3DKMT_SETDISPLAYPRIVATEDRIVERFORMAT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnSetDisplayPrivateDriverFormat)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnSetDisplayPrivateDriverFormat(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDISetGammaRamp(_In_ const D3DKMT_SETGAMMARAMP* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnSetGammaRamp)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnSetGammaRamp(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDISetQueuedLimit(_Inout_ const D3DKMT_SETQUEUEDLIMIT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnSetQueuedLimit)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnSetQueuedLimit(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDISetVidPnSourceOwner(_In_ const D3DKMT_SETVIDPNSOURCEOWNER* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnSetVidPnSourceOwner)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnSetVidPnSourceOwner(unnamedParam1);
}
NTSTATUS
WINAPI
NtGdiDdDDIUnlock(_In_ const D3DKMT_UNLOCK* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnUnlock)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnUnlock(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIUpdateOverlay(_In_ const D3DKMT_UPDATEOVERLAY* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnUpdateOverlay)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnUpdateOverlay(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIWaitForIdle(_In_ const D3DKMT_WAITFORIDLE* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnWaitForIdle)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnWaitForIdle(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIWaitForSynchronizationObject(_In_ const D3DKMT_WAITFORSYNCHRONIZATIONOBJECT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnWaitForSynchronizationObject)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnWaitForSynchronizationObject(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDIWaitForVerticalBlankEvent(_In_ const D3DKMT_WAITFORVERTICALBLANKEVENT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnWaitForVerticalBlankEvent)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnWaitForVerticalBlankEvent(unnamedParam1);
}
NTSTATUS
APIENTRY
NtGdiDdDDISignalSynchronizationObject(_In_ const D3DKMT_SIGNALSYNCHRONIZATIONOBJECT* unnamedParam1)
{
if (!unnamedParam1)
STATUS_INVALID_PARAMETER;
if (!DxgAdapterCallbacks.RxgkIntPfnSignalSynchronizationObject)
return STATUS_PROCEDURE_NOT_FOUND;
return DxgAdapterCallbacks.RxgkIntPfnSignalSynchronizationObject(unnamedParam1);
}

View file

@ -75,11 +75,14 @@ GdiThreadDestroy(PETHREAD Thread)
return STATUS_SUCCESS;
}
BOOL
APIENTRY
InitializeGreCSRSS(VOID)
{
/* Initialize DirectX graphics driver */
/* Initialize Dxgkrnl interfaces and run startup routine */
DxStartupDxgkInt(VOID);
/* Initialize Legacy DirectX graphics driver */
if (DxDdStartupDxGraphics(0, NULL, 0, NULL, NULL, gpepCSRSS) != STATUS_SUCCESS)
{
ERR("Unable to initialize DirectX graphics\n");

View file

@ -53,6 +53,7 @@ typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
#define LPPOINT PPOINTL
#define PPOINT PPOINTL
#include <d3dkmddi.h>
#include <winerror.h>
#include <wingdi.h>
#define _ENGINE_EXPORT_

View file

@ -0,0 +1,12 @@
/*
* PROJECT: ReactOS Display Driver Model
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Header file to hold win32k dxvista information
* COPYRIGHT: Copyright 2025 Justin Miller <justin.miller@reactos.org>
*/
#pragma once
VOID
APIENTRY
DxStartupDxgkInt(VOID);

View file

@ -694,3 +694,59 @@
// For Wine DX
SVC_(GdiDdDDICreateDCFromMemory, 1)
SVC_(GdiDdDDIDestroyDCFromMemory, 1)
// ReactOS Display Driver Model
SVC_(GdiDdDDICheckExclusiveOwnership, 0)
SVC_(GdiDdDDICreateAllocation, 1)
SVC_(GdiDdDDICheckMonitorPowerState, 1)
SVC_(GdiDdDDICheckOcclusion, 1)
SVC_(GdiDdDDICloseAdapter, 1)
SVC_(GdiDdDDICreateContext, 1)
SVC_(GdiDdDDICreateDevice, 1)
SVC_(GdiDdDDICreateOverlay, 1)
SVC_(GdiDdDDICreateSynchronizationObject, 1)
SVC_(GdiDdDDIWaitForVerticalBlankEvent, 1)
SVC_(GdiDdDDIWaitForIdle, 1)
SVC_(GdiDdDDIUpdateOverlay, 1)
SVC_(GdiDdDDIUnlock, 1)
SVC_(GdiDdDDIDestroyAllocation, 1)
SVC_(GdiDdDDIDestroyContext, 1)
SVC_(GdiDdDDIDestroyDevice, 1)
SVC_(GdiDdDDIDestroyOverlay, 1)
SVC_(GdiDdDDIDestroySynchronizationObject, 1)
SVC_(GdiDdDDIEscape, 1)
SVC_(GdiDdDDIFlipOverlay, 1)
SVC_(GdiDdDDIGetContextSchedulingPriority, 1)
SVC_(GdiDdDDIGetDeviceState, 1)
SVC_(GdiDdDDIGetDisplayModeList, 1)
SVC_(GdiDdDDIGetMultisampleMethodList, 1)
SVC_(GdiDdDDIGetPresentHistory, 1)
SVC_(GdiDdDDIGetProcessSchedulingPriorityClass, 2)
SVC_(GdiDdDDIGetRuntimeData, 1)
SVC_(GdiDdDDIGetScanLine, 1)
SVC_(GdiDdDDIGetSharedPrimaryHandle, 1)
SVC_(GdiDdDDIInvalidateActiveVidPn, 1)
SVC_(GdiDdDDILock, 1)
SVC_(GdiDdDDIOpenAdapterFromDeviceName, 1)
SVC_(GdiDdDDIOpenAdapterFromGdiDisplayName, 1)
SVC_(GdiDdDDIOpenAdapterFromHdc, 1)
SVC_(GdiDdDDIOpenResource, 1)
SVC_(GdiDdDDIPollDisplayChildren, 1)
SVC_(GdiDdDDIPresent, 1)
SVC_(GdiDdDDIQueryAdapterInfo, 1)
SVC_(GdiDdDDIQueryAllocationResidency, 1)
SVC_(GdiDdDDIQueryResourceInfo, 1)
SVC_(GdiDdDDIQueryStatistics, 1)
SVC_(GdiDdDDIReleaseProcessVidPnSourceOwners, 1)
SVC_(GdiDdDDIRender, 1)
SVC_(GdiDdDDISetAllocationPriority, 1)
SVC_(GdiDdDDISetContextSchedulingPriority, 1)
SVC_(GdiDdDDISetDisplayMode, 1)
SVC_(GdiDdDDISetDisplayPrivateDriverFormat, 1)
SVC_(GdiDdDDISetGammaRamp, 1)
SVC_(GdiDdDDISetProcessSchedulingPriorityClass, 2)
SVC_(GdiDdDDISetQueuedLimit, 1)
SVC_(GdiDdDDISetVidPnSourceOwner, 1)
SVC_(GdiDdDDISharedPrimaryLockNotification, 1)
SVC_(GdiDdDDISharedPrimaryUnLockNotification, 1)
SVC_(GdiDdDDISignalSynchronizationObject, 1)
SVC_(GdiDdDDIWaitForSynchronizationObject, 1)

View file

@ -688,3 +688,59 @@
SVC_(UserSetDbgTagCount, 1) //
SVC_(UserSetRipFlags, 1) //
SVC_(UserSetScrollBarInfo, 3) //
// ReactOS Display Driver Model
SVC_(GdiDdDDICheckExclusiveOwnership, 0)
SVC_(GdiDdDDICreateAllocation, 1)
SVC_(GdiDdDDICheckMonitorPowerState, 1)
SVC_(GdiDdDDICheckOcclusion, 1)
SVC_(GdiDdDDICloseAdapter, 1)
SVC_(GdiDdDDICreateContext, 1)
SVC_(GdiDdDDICreateDevice, 1)
SVC_(GdiDdDDICreateOverlay, 1)
SVC_(GdiDdDDICreateSynchronizationObject, 1)
SVC_(GdiDdDDIWaitForVerticalBlankEvent, 1)
SVC_(GdiDdDDIWaitForIdle, 1)
SVC_(GdiDdDDIUpdateOverlay, 1)
SVC_(GdiDdDDIUnlock, 1)
SVC_(GdiDdDDIDestroyAllocation, 1)
SVC_(GdiDdDDIDestroyContext, 1)
SVC_(GdiDdDDIDestroyDevice, 1)
SVC_(GdiDdDDIDestroyOverlay, 1)
SVC_(GdiDdDDIDestroySynchronizationObject, 1)
SVC_(GdiDdDDIEscape, 1)
SVC_(GdiDdDDIFlipOverlay, 1)
SVC_(GdiDdDDIGetContextSchedulingPriority, 1)
SVC_(GdiDdDDIGetDeviceState, 1)
SVC_(GdiDdDDIGetDisplayModeList, 1)
SVC_(GdiDdDDIGetMultisampleMethodList, 1)
SVC_(GdiDdDDIGetPresentHistory, 1)
SVC_(GdiDdDDIGetProcessSchedulingPriorityClass, 2)
SVC_(GdiDdDDIGetRuntimeData, 1)
SVC_(GdiDdDDIGetScanLine, 1)
SVC_(GdiDdDDIGetSharedPrimaryHandle, 1)
SVC_(GdiDdDDIInvalidateActiveVidPn, 1)
SVC_(GdiDdDDILock, 1)
SVC_(GdiDdDDIOpenAdapterFromDeviceName, 1)
SVC_(GdiDdDDIOpenAdapterFromGdiDisplayName, 1)
SVC_(GdiDdDDIOpenAdapterFromHdc, 1)
SVC_(GdiDdDDIOpenResource, 1)
SVC_(GdiDdDDIPollDisplayChildren, 1)
SVC_(GdiDdDDIPresent, 1)
SVC_(GdiDdDDIQueryAdapterInfo, 1)
SVC_(GdiDdDDIQueryAllocationResidency, 1)
SVC_(GdiDdDDIQueryResourceInfo, 1)
SVC_(GdiDdDDIQueryStatistics, 1)
SVC_(GdiDdDDIReleaseProcessVidPnSourceOwners, 1)
SVC_(GdiDdDDIRender, 1)
SVC_(GdiDdDDISetAllocationPriority, 1)
SVC_(GdiDdDDISetContextSchedulingPriority, 1)
SVC_(GdiDdDDISetDisplayMode, 1)
SVC_(GdiDdDDISetDisplayPrivateDriverFormat, 1)
SVC_(GdiDdDDISetGammaRamp, 1)
SVC_(GdiDdDDISetProcessSchedulingPriorityClass, 2)
SVC_(GdiDdDDISetQueuedLimit, 1)
SVC_(GdiDdDDISetVidPnSourceOwner, 1)
SVC_(GdiDdDDISharedPrimaryLockNotification, 1)
SVC_(GdiDdDDISharedPrimaryUnLockNotification, 1)
SVC_(GdiDdDDISignalSynchronizationObject, 1)
SVC_(GdiDdDDIWaitForSynchronizationObject, 1)

View file

@ -53,6 +53,7 @@ typedef struct _DC *PDC;
#include "gdi/ntgdi/path.h"
#include "gdi/dib/dib.h"
#include "reactx/ntddraw/intddraw.h"
#include "reactx/ntdxvista/dxprivate.h"
/* Internal NtUser Headers */
#include "user/ntuser/win32kdebug.h"