186 lines
5.7 KiB
C
186 lines
5.7 KiB
C
/*** Partially copied from autogenerated header by WIDL 6.4 from ../src-vkd3d-proton/include/vkd3d_device_vkd3d_ext.idl ***/
|
|
|
|
#pragma once
|
|
|
|
#include <d3d12.h>
|
|
#include <vulkan/vulkan.h>
|
|
|
|
#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
|