24 #ifndef VKD3D_NO_WIN32_TYPES
25 # include <vkd3d_windows.h>
26 # include <vkd3d_d3d12.h>
29 #ifndef VKD3D_NO_VULKAN_H
30 # include <vulkan/vulkan.h>
37 enum vkd3d_structure_type
40 VKD3D_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
41 VKD3D_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
42 VKD3D_STRUCTURE_TYPE_IMAGE_RESOURCE_CREATE_INFO,
45 VKD3D_STRUCTURE_TYPE_OPTIONAL_INSTANCE_EXTENSIONS_INFO,
48 VKD3D_STRUCTURE_TYPE_OPTIONAL_DEVICE_EXTENSIONS_INFO,
49 VKD3D_STRUCTURE_TYPE_APPLICATION_INFO,
52 VKD3D_STRUCTURE_TYPE_HOST_TIME_DOMAIN_INFO,
54 VKD3D_FORCE_32_BIT_ENUM(VKD3D_STRUCTURE_TYPE),
57 enum vkd3d_api_version
59 VKD3D_API_VERSION_1_0,
60 VKD3D_API_VERSION_1_1,
61 VKD3D_API_VERSION_1_2,
62 VKD3D_API_VERSION_1_3,
63 VKD3D_API_VERSION_1_4,
66 typedef HRESULT (*PFN_vkd3d_signal_event)(HANDLE event);
68 typedef void * (*PFN_vkd3d_thread)(
void *data);
70 typedef void * (*PFN_vkd3d_create_thread)(PFN_vkd3d_thread thread_main,
void *data);
71 typedef HRESULT (*PFN_vkd3d_join_thread)(
void *thread);
73 struct vkd3d_instance;
77 enum vkd3d_structure_type type;
80 PFN_vkd3d_signal_event pfn_signal_event;
81 PFN_vkd3d_create_thread pfn_create_thread;
82 PFN_vkd3d_join_thread pfn_join_thread;
86 PFN_vkGetInstanceProcAddr pfn_vkGetInstanceProcAddr;
88 const char *
const *instance_extensions;
89 uint32_t instance_extension_count;
95 enum vkd3d_structure_type type;
98 const char *
const *extensions;
99 uint32_t extension_count;
105 enum vkd3d_structure_type type;
108 const char *application_name;
109 uint32_t application_version;
111 const char *engine_name;
112 uint32_t engine_version;
114 enum vkd3d_api_version api_version;
120 enum vkd3d_structure_type type;
123 uint64_t ticks_per_second;
128 enum vkd3d_structure_type type;
131 D3D_FEATURE_LEVEL minimum_feature_level;
133 struct vkd3d_instance *instance;
136 VkPhysicalDevice vk_physical_device;
138 const char *
const *device_extensions;
139 uint32_t device_extension_count;
148 enum vkd3d_structure_type type;
151 const char *
const *extensions;
152 uint32_t extension_count;
156 #define VKD3D_RESOURCE_INITIAL_STATE_TRANSITION 0x00000001
157 #define VKD3D_RESOURCE_PRESENT_STATE_TRANSITION 0x00000002
161 enum vkd3d_structure_type type;
165 D3D12_RESOURCE_DESC desc;
167 D3D12_RESOURCE_STATES present_state;
170 #ifdef LIBVKD3D_SOURCE
171 # define VKD3D_API VKD3D_EXPORT
173 # define VKD3D_API VKD3D_IMPORT
176 #ifndef VKD3D_NO_PROTOTYPES
179 struct vkd3d_instance **instance);
180 VKD3D_API ULONG vkd3d_instance_decref(
struct vkd3d_instance *instance);
181 VKD3D_API VkInstance vkd3d_instance_get_vk_instance(
struct vkd3d_instance *instance);
182 VKD3D_API ULONG vkd3d_instance_incref(
struct vkd3d_instance *instance);
185 REFIID iid,
void **device);
186 VKD3D_API IUnknown *vkd3d_get_device_parent(ID3D12Device *device);
187 VKD3D_API VkDevice vkd3d_get_vk_device(ID3D12Device *device);
188 VKD3D_API VkPhysicalDevice vkd3d_get_vk_physical_device(ID3D12Device *device);
189 VKD3D_API
struct vkd3d_instance *vkd3d_instance_from_device(ID3D12Device *device);
191 VKD3D_API uint32_t vkd3d_get_vk_queue_family_index(ID3D12CommandQueue *queue);
192 VKD3D_API VkQueue vkd3d_acquire_vk_queue(ID3D12CommandQueue *queue);
193 VKD3D_API
void vkd3d_release_vk_queue(ID3D12CommandQueue *queue);
195 VKD3D_API HRESULT vkd3d_create_image_resource(ID3D12Device *device,
197 VKD3D_API ULONG vkd3d_resource_decref(ID3D12Resource *resource);
198 VKD3D_API ULONG vkd3d_resource_incref(ID3D12Resource *resource);
200 VKD3D_API HRESULT vkd3d_serialize_root_signature(
const D3D12_ROOT_SIGNATURE_DESC *desc,
201 D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob);
202 VKD3D_API HRESULT vkd3d_create_root_signature_deserializer(
const void *data, SIZE_T data_size,
203 REFIID iid,
void **deserializer);
205 VKD3D_API VkFormat vkd3d_get_vk_format(DXGI_FORMAT format);
208 VKD3D_API DXGI_FORMAT vkd3d_get_dxgi_format(VkFormat format);
211 VKD3D_API HRESULT vkd3d_serialize_versioned_root_signature(
const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc,
212 ID3DBlob **blob, ID3DBlob **error_blob);
213 VKD3D_API HRESULT vkd3d_create_versioned_root_signature_deserializer(
const void *data, SIZE_T data_size,
214 REFIID iid,
void **deserializer);
228 VKD3D_API
void vkd3d_set_log_callback(PFN_vkd3d_log callback);
236 struct vkd3d_instance **instance);
237 typedef ULONG (*PFN_vkd3d_instance_decref)(
struct vkd3d_instance *instance);
238 typedef VkInstance (*PFN_vkd3d_instance_get_vk_instance)(
struct vkd3d_instance *instance);
239 typedef ULONG (*PFN_vkd3d_instance_incref)(
struct vkd3d_instance *instance);
242 REFIID iid,
void **device);
243 typedef IUnknown * (*PFN_vkd3d_get_device_parent)(ID3D12Device *device);
244 typedef VkDevice (*PFN_vkd3d_get_vk_device)(ID3D12Device *device);
245 typedef VkPhysicalDevice (*PFN_vkd3d_get_vk_physical_device)(ID3D12Device *device);
246 typedef struct vkd3d_instance * (*PFN_vkd3d_instance_from_device)(ID3D12Device *device);
248 typedef uint32_t (*PFN_vkd3d_get_vk_queue_family_index)(ID3D12CommandQueue *queue);
249 typedef VkQueue (*PFN_vkd3d_acquire_vk_queue)(ID3D12CommandQueue *queue);
250 typedef void (*PFN_vkd3d_release_vk_queue)(ID3D12CommandQueue *queue);
252 typedef HRESULT (*PFN_vkd3d_create_image_resource)(ID3D12Device *device,
254 typedef ULONG (*PFN_vkd3d_resource_decref)(ID3D12Resource *resource);
255 typedef ULONG (*PFN_vkd3d_resource_incref)(ID3D12Resource *resource);
257 typedef HRESULT (*PFN_vkd3d_serialize_root_signature)(
const D3D12_ROOT_SIGNATURE_DESC *desc,
258 D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob);
259 typedef HRESULT (*PFN_vkd3d_create_root_signature_deserializer)(
const void *data, SIZE_T data_size,
260 REFIID iid,
void **deserializer);
262 typedef VkFormat (*PFN_vkd3d_get_vk_format)(DXGI_FORMAT format);
265 typedef DXGI_FORMAT (*PFN_vkd3d_get_dxgi_format)(VkFormat format);
268 typedef HRESULT (*PFN_vkd3d_serialize_versioned_root_signature)(
const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc,
269 ID3DBlob **blob, ID3DBlob **error_blob);
270 typedef HRESULT (*PFN_vkd3d_create_versioned_root_signature_deserializer)(
const void *data, SIZE_T data_size,
271 REFIID iid,
void **deserializer);
274 typedef void (*PFN_vkd3d_set_log_callback)(PFN_vkd3d_log callback);
This file contains definitions for basic types used by vkd3d libraries.