From: Biswapriyo Nath Subject: [PATCH] include: Add dxcore.idl. Message-Id: Date: Sat, 25 Jun 2022 09:30:39 +0530 From 1407a68dc45c3882ed8b80869ba7113386dfc032 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Sat, 25 Jun 2022 09:26:41 +0530 Subject: [PATCH] include: Add dxcore.idl. Signed-off-by: Biswapriyo Nath --- include/Makefile.in | 1 + include/dxcore.idl | 202 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 include/dxcore.idl diff --git a/include/Makefile.in b/include/Makefile.in index d03c6d94..5ca89eab 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -276,6 +276,7 @@ SOURCES = \ dwrite_1.idl \ dwrite_2.idl \ dwrite_3.idl \ + dxcore.idl \ dxdiag.h \ dxerr8.h \ dxerr9.h \ diff --git a/include/dxcore.idl b/include/dxcore.idl new file mode 100644 index 00000000..ee98c7fd --- /dev/null +++ b/include/dxcore.idl @@ -0,0 +1,202 @@ +/* + * Copyright (C) the Wine project + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "oaidl.idl"; +import "ocidl.idl"; + +cpp_quote("#define _FACDXCORE 0x880") +cpp_quote("#define MAKE_DXCORE_HRESULT(code) MAKE_HRESULT(1, _FACDXCORE, code)") + +cpp_quote("#if 0") +typedef struct _LUID { + DWORD LowPart; + LONG HighPart; +} LUID, *PLUID; +cpp_quote("#endif") + +typedef enum DXCoreAdapterProperty { + InstanceLuid = 0, + DriverVersion = 1, + DriverDescription = 2, + HardwareID = 3, + KmdModelVersion = 4, + ComputePreemptionGranularity = 5, + GraphicsPreemptionGranularity = 6, + DedicatedAdapterMemory = 7, + DedicatedSystemMemory = 8, + SharedSystemMemory = 9, + AcgCompatible = 10, + IsHardware = 11, + IsIntegrated = 12, + IsDetachable = 13, + HardwareIDParts = 14 +} DXCoreAdapterProperty; + +typedef enum DXCoreAdapterState { + IsDriverUpdateInProgress = 0, + AdapterMemoryBudget = 1 +} DXCoreAdapterState; + +typedef enum DXCoreSegmentGroup { + Local = 0, + NonLocal = 1 +} DXCoreSegmentGroup; + +typedef enum DXCoreNotificationType { + AdapterListStale = 0, + AdapterNoLongerValid = 1, + AdapterBudgetChange = 2, + AdapterHardwareContentProtectionTeardown = 3 +} DXCoreNotificationType; + +typedef enum DXCoreAdapterPreference { + Hardware = 0, + MinimumPower = 1, + HighPerformance = 2 +} DXCoreAdapterPreference; + +typedef struct DXCoreHardwareID { + UINT32 vendorID; + UINT32 deviceID; + UINT32 subSysID; + UINT32 revision; +} DXCoreHardwareID; + +typedef struct DXCoreHardwareIDParts { + UINT32 vendorID; + UINT32 deviceID; + UINT32 subSystemID; + UINT32 subVendorID; + UINT32 revisionID; +} DXCoreHardwareIDParts; + +typedef struct DXCoreAdapterMemoryBudgetNodeSegmentGroup { + UINT32 nodeIndex; + DXCoreSegmentGroup segmentGroup; +} DXCoreAdapterMemoryBudgetNodeSegmentGroup; + +typedef struct DXCoreAdapterMemoryBudget { + UINT64 budget; + UINT64 currentUsage; + UINT64 availableForReservation; + UINT64 currentReservation; +} DXCoreAdapterMemoryBudget; + +cpp_quote("typedef void (WINAPI *PFN_DXCORE_NOTIFICATION_CALLBACK)(DXCoreNotificationType notificationType, IUnknown *object, void *context);") + +cpp_quote("DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D11_GRAPHICS, 0x8c47866b, 0x7583, 0x450d, 0xf0, 0xf0, 0x6b, 0xad, 0xa8, 0x95, 0xaf, 0x4b);") +cpp_quote("DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_GRAPHICS, 0x0c9ece4d, 0x2f6e, 0x4f01, 0x8c, 0x96, 0xe8, 0x9e, 0x33, 0x1b, 0x47, 0xb1);") +cpp_quote("DEFINE_GUID(DXCORE_ADAPTER_ATTRIBUTE_D3D12_CORE_COMPUTE, 0x248e2800, 0xa793, 0x4724, 0xab, 0xaa, 0x23, 0xa6, 0xde, 0x1b, 0xe0, 0x90);") + +[uuid(f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e), object, local, pointer_default(unique)] +interface IDXCoreAdapter : IUnknown +{ + boolean IsValid(); + + boolean IsAttributeSupported( + REFGUID attributeGUID); + + boolean IsPropertySupported( + DXCoreAdapterProperty property); + + HRESULT GetProperty( + DXCoreAdapterProperty property, + SIZE_T bufferSize, + void *propertyData); + + HRESULT GetPropertySize( + DXCoreAdapterProperty property, + SIZE_T *bufferSize); + + boolean IsQueryStateSupported( + DXCoreAdapterState property); + + HRESULT QueryState( + DXCoreAdapterState state, + SIZE_T inputStateDetailsSize, + const void *inputStateDetails, + SIZE_T outputBufferSize, + void *outputBuffer); + + boolean IsSetStateSupported( + DXCoreAdapterState property); + + HRESULT SetState( + DXCoreAdapterState state, + SIZE_T inputStateDetailsSize, + const void *inputStateDetails, + SIZE_T inputDataSize, + const void *inputData); + + HRESULT GetFactory( + REFIID riid, + void **ppvFactory); +} + +[uuid(526c7776-40e9-459b-b711-f32ad76dfc28), object, local, pointer_default(unique)] +interface IDXCoreAdapterList : IUnknown +{ + HRESULT GetAdapter( + UINT32 index, + REFIID riid, + void **ppvAdapter); + + UINT32 GetAdapterCount(); + boolean IsStale(); + + HRESULT GetFactory( + REFIID riid, + void **ppvFactory); + + HRESULT Sort( + UINT32 numPreferences, + const DXCoreAdapterPreference *preferences); + + boolean IsAdapterPreferenceSupported( + DXCoreAdapterPreference preference); +} + +[uuid(78ee5945-c36e-4b13-a669-005dd11c0f06), object, local, pointer_default(unique)] +interface IDXCoreAdapterFactory : IUnknown +{ + HRESULT CreateAdapterList( + UINT32 numAttributes, + const GUID *filterAttributes, + REFIID riid, + void **ppvAdapterList); + + HRESULT GetAdapterByLuid( + const LUID adapterLUID, + REFIID riid, + void **ppvAdapter); + + boolean IsNotificationTypeSupported( + DXCoreNotificationType notificationType); + + HRESULT RegisterEventNotification( + IUnknown *dxCoreObject, + DXCoreNotificationType notificationType, + void *callbackFunction, + void *callbackContext, + UINT32 *eventCookie); + + HRESULT UnregisterEventNotification( + UINT32 eventCookie); +} + +cpp_quote("STDAPI DXCoreCreateAdapterFactory(REFIID riid, void **ppvFactory);") -- 2.36.1