Rémi Bernon (@rbernon) commented about include/dxcore_interface.idl:
+ uuid(f0db4c7f-fe5a-42a2-bd62-f2a6cf6fc83e), +] +interface IDXCoreAdapter : IUnknown +{ + BOOL IsValid(); + BOOL IsAttributeSupported(GUID attribute); + BOOL IsPropertySupported(DXCoreAdapterProperty property); + HRESULT GetProperty(DXCoreAdapterProperty property, SIZE_T *buffer, void *data); + HRESULT GetPropertySize(DXCoreAdapterProperty property, SIZE_T *buffer); + BOOL IsQueryStateSupported(DXCoreAdapterState property); + HRESULT QueryState(DXCoreAdapterState state, SIZE_T state_size, const void *input, SIZE_T buffer_size, void *output); + BOOL IsSetStateSupported(DXCoreAdapterState property); + HRESULT SetState(DXCoreAdapterState state, SIZE_T state_size, const void *in_state, SIZE_T data_size, const void *data); + HRESULT GetFactory(REFIID riid, [out, iid_is(riid)] IUnknown **ppv); + HRESULT GetAdapterByLuid(LUID adapter, REFIID riid, [out, iid_is(riid)] IUnknown **ppv); +}; Some of these methods have C++ template wrappers, it would probably be better to have them too.
I understand that it might be difficult, because there's currently no way to include custom interface code, but maybe it's a hint that this should not be written in IDL? (or maybe we need a WIDL feature, idk). Fwiw I personally don't really mind not adding them, at least from Wine perspective the C++ interface is not very useful, but as you're apparently interested in having this for MinGW too it might be important to have it correct there. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/3607#note_42718