/*** Partially copied from autogenerated header by WIDL 6.4 from ../src-vkd3d-proton/include/vkd3d_device_vkd3d_ext.idl ***/ #pragma once #include #include #ifndef __ID3D12DeviceExt1_FWD_DEFINED__ #define __ID3D12DeviceExt1_FWD_DEFINED__ typedef interface ID3D12DeviceExt1 ID3D12DeviceExt1; #endif #ifndef __ID3D12DXVKInteropDevice_FWD_DEFINED__ #define __ID3D12DXVKInteropDevice_FWD_DEFINED__ typedef interface ID3D12DXVKInteropDevice ID3D12DXVKInteropDevice; #endif /***************************************************************************** * ID3D12DeviceExt1 interface */ #ifndef __ID3D12DeviceExt1_INTERFACE_DEFINED__ #define __ID3D12DeviceExt1_INTERFACE_DEFINED__ typedef struct D3D12_UAV_INFO D3D12_UAV_INFO; typedef struct D3D12_VK_EXTENSION D3D12_VK_EXTENSION; typedef struct D3D12_CUBIN_DATA_HANDLE D3D12_CUBIN_DATA_HANDLE; DEFINE_GUID(IID_ID3D12DeviceExt1, 0x099a73fd, 0x2199, 0x4f45, 0xbf,0x48, 0x0e,0xb8,0x6f,0x6f,0xdb,0x65); typedef struct ID3D12DeviceExt1Vtbl { BEGIN_INTERFACE /*** IUnknown methods ***/ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ID3D12DeviceExt1 *This, REFIID riid, void **object); ULONG (STDMETHODCALLTYPE *AddRef)( ID3D12DeviceExt1 *This); ULONG (STDMETHODCALLTYPE *Release)( ID3D12DeviceExt1 *This); /*** ID3D12DeviceExt methods ***/ HRESULT (STDMETHODCALLTYPE *GetVulkanHandles)( ID3D12DeviceExt1 *This, VkInstance *vk_instance, VkPhysicalDevice *vk_physical_device, VkDevice *vk_device); BOOL (STDMETHODCALLTYPE *GetExtensionSupport)( ID3D12DeviceExt1 *This, D3D12_VK_EXTENSION extension); HRESULT (STDMETHODCALLTYPE *CreateCubinComputeShaderWithName)( ID3D12DeviceExt1 *This, const void *cubin_data, UINT32 cubin_size, UINT32 block_x, UINT32 block_y, UINT32 block_z, const char *shader_name, D3D12_CUBIN_DATA_HANDLE **handle); HRESULT (STDMETHODCALLTYPE *DestroyCubinComputeShader)( ID3D12DeviceExt1 *This, D3D12_CUBIN_DATA_HANDLE *handle); HRESULT (STDMETHODCALLTYPE *GetCudaTextureObject)( ID3D12DeviceExt1 *This, D3D12_CPU_DESCRIPTOR_HANDLE srv_handle, D3D12_CPU_DESCRIPTOR_HANDLE sampler_handle, UINT32 *cuda_texture_handle); HRESULT (STDMETHODCALLTYPE *GetCudaSurfaceObject)( ID3D12DeviceExt1 *This, D3D12_CPU_DESCRIPTOR_HANDLE uav_handle, UINT32 *cuda_surface_handle); HRESULT (STDMETHODCALLTYPE *CaptureUAVInfo)( ID3D12DeviceExt1 *This, D3D12_UAV_INFO *uav_info); /*** ID3D12DeviceExt1 methods ***/ HRESULT (STDMETHODCALLTYPE *CreateResourceFromBorrowedHandle)( ID3D12DeviceExt1 *This, const D3D12_RESOURCE_DESC1 *desc, UINT64 vk_handle, ID3D12Resource **resource); HRESULT (STDMETHODCALLTYPE *GetVulkanQueueInfoEx)( ID3D12DeviceExt1 *This, ID3D12CommandQueue *queue, VkQueue *vk_queue, UINT32 *vk_queue_index, UINT32 *vk_queue_flags, UINT32 *vk_queue_family); END_INTERFACE } ID3D12DeviceExt1Vtbl; interface ID3D12DeviceExt1 { CONST_VTBL ID3D12DeviceExt1Vtbl* lpVtbl; }; #endif /***************************************************************************** * ID3D12DXVKInteropDevice interface */ #ifndef __ID3D12DXVKInteropDevice_INTERFACE_DEFINED__ #define __ID3D12DXVKInteropDevice_INTERFACE_DEFINED__ DEFINE_GUID(IID_ID3D12DXVKInteropDevice, 0x39da4e09, 0xbd1c, 0x4198, 0x9f,0xae, 0x86,0xbb,0xe3,0xbe,0x41,0xfd); typedef struct ID3D12DXVKInteropDeviceVtbl { BEGIN_INTERFACE /*** IUnknown methods ***/ HRESULT (STDMETHODCALLTYPE *QueryInterface)( ID3D12DXVKInteropDevice *This, REFIID riid, void **object); ULONG (STDMETHODCALLTYPE *AddRef)( ID3D12DXVKInteropDevice *This); ULONG (STDMETHODCALLTYPE *Release)( ID3D12DXVKInteropDevice *This); /*** ID3D12DXVKInteropDevice methods ***/ HRESULT (STDMETHODCALLTYPE *GetDXGIAdapter)( ID3D12DXVKInteropDevice *This, REFIID iid, void **object); HRESULT (STDMETHODCALLTYPE *GetInstanceExtensions)( ID3D12DXVKInteropDevice *This, UINT *extension_count, const char **extensions); HRESULT (STDMETHODCALLTYPE *GetDeviceExtensions)( ID3D12DXVKInteropDevice *This, UINT *extension_count, const char **extensions); HRESULT (STDMETHODCALLTYPE *GetDeviceFeatures)( ID3D12DXVKInteropDevice *This, const VkPhysicalDeviceFeatures2 **features); HRESULT (STDMETHODCALLTYPE *GetVulkanHandles)( ID3D12DXVKInteropDevice *This, VkInstance *vk_instance, VkPhysicalDevice *vk_physical_device, VkDevice *vk_device); HRESULT (STDMETHODCALLTYPE *GetVulkanQueueInfo)( ID3D12DXVKInteropDevice *This, ID3D12CommandQueue *queue, VkQueue *vk_queue, UINT32 *vk_queue_family); void (STDMETHODCALLTYPE *GetVulkanImageLayout)( ID3D12DXVKInteropDevice *This, ID3D12Resource *resource, D3D12_RESOURCE_STATES state, VkImageLayout *vk_layout); HRESULT (STDMETHODCALLTYPE *GetVulkanResourceInfo)( ID3D12DXVKInteropDevice *This, ID3D12Resource *resource, UINT64 *vk_handle, UINT64 *buffer_offset); HRESULT (STDMETHODCALLTYPE *LockCommandQueue)( ID3D12DXVKInteropDevice *This, ID3D12CommandQueue *queue); HRESULT (STDMETHODCALLTYPE *UnlockCommandQueue)( ID3D12DXVKInteropDevice *This, ID3D12CommandQueue *queue); END_INTERFACE } ID3D12DXVKInteropDeviceVtbl; interface ID3D12DXVKInteropDevice { CONST_VTBL ID3D12DXVKInteropDeviceVtbl* lpVtbl; }; #endif