diff --git a/include/vkd3d.h b/include/vkd3d.h index 32e81234..99a62220 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -77,6 +77,8 @@ struct vkd3d_device_create_info #define VKD3D_RESOURCE_INITIAL_STATE_TRANSITION 0x00000001 #define VKD3D_RESOURCE_SWAPCHAIN_IMAGE 0x00000002 +#ifndef VKD3D_NO_PROTOTYPES + HRESULT vkd3d_create_instance(const struct vkd3d_instance_create_info *create_info, struct vkd3d_instance **instance); ULONG vkd3d_instance_decref(struct vkd3d_instance *instance); @@ -99,7 +101,7 @@ HRESULT vkd3d_create_image_resource(ID3D12Device *device, const D3D12_RESOURCE_D ULONG vkd3d_resource_decref(ID3D12Resource *resource); ULONG vkd3d_resource_incref(ID3D12Resource *resource); -HRESULT vkd3d_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *root_signature_desc, +HRESULT vkd3d_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *desc, D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob); HRESULT vkd3d_create_root_signature_deserializer(const void *data, SIZE_T data_size, @@ -107,6 +109,41 @@ HRESULT vkd3d_create_root_signature_deserializer(const void *data, SIZE_T data_s VkFormat vkd3d_get_vk_format(DXGI_FORMAT format); +#endif /* VKD3D_NO_PROTOTYPES */ + +/* + * Function pointer typedefs for vkd3d functions. + */ +typedef HRESULT (*vkd3d_create_instance_pfn)(const struct vkd3d_instance_create_info *create_info, + struct vkd3d_instance **instance); +typedef ULONG (*vkd3d_instance_decref_pfn)(struct vkd3d_instance *instance); +typedef VkInstance (*vkd3d_instance_get_vk_instance_pfn)(struct vkd3d_instance *instance); +typedef ULONG (*vkd3d_instance_incref_pfn)(struct vkd3d_instance *instance); + +typedef HRESULT (*vkd3d_create_device_pfn)(const struct vkd3d_device_create_info *create_info, + REFIID iid, void **device); +typedef IUnknown * (*vkd3d_get_device_parent_pfn)(ID3D12Device *device); +typedef VkDevice (*vkd3d_get_vk_device_pfn)(ID3D12Device *device); +typedef VkPhysicalDevice (*vkd3d_get_vk_physical_device_pfn)(ID3D12Device *device); +typedef struct vkd3d_instance * (*vkd3d_instance_from_device_pfn)(ID3D12Device *device); + +typedef uint32_t (*vkd3d_get_vk_queue_family_index_pfn)(ID3D12CommandQueue *queue); +typedef VkQueue (*vkd3d_acquire_vk_queue_pfn)(ID3D12CommandQueue *queue); +typedef void (*vkd3d_release_vk_queue_pfn)(ID3D12CommandQueue *queue); + +typedef HRESULT (*vkd3d_create_image_resource_pfn)(ID3D12Device *device, const D3D12_RESOURCE_DESC *desc, + VkImage vk_image, unsigned int resource_flags, ID3D12Resource **resource); +typedef ULONG (*vkd3d_resource_decref_pfn)(ID3D12Resource *resource); +typedef ULONG (*vkd3d_resource_incref_pfn)(ID3D12Resource *resource); + +typedef HRESULT (*vkd3d_serialize_root_signature_pfn)(const D3D12_ROOT_SIGNATURE_DESC *desc, + D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob); + +typedef HRESULT (*vkd3d_create_root_signature_deserializer_pfn)(const void *data, SIZE_T data_size, + REFIID iid, void **deserializer); + +typedef VkFormat (*vkd3d_get_vk_format_pfn)(DXGI_FORMAT format); + #ifdef __cplusplus } #endif /* __cplusplus */