21#define VKD3D_NO_VULKAN_H
22#define VKD3D_NO_WIN32_TYPES
33#include "wine/winedxgi.h"
64 WARN(
"Returning DXGI_ERROR_SDK_COMPONENT_MISSING.\n");
69 const IID *iids,
void *configurations,
UINT *configurations_sizes)
71 FIXME(
"feature_count %u, iids %p, configurations %p, configurations_sizes %p stub!\n",
72 feature_count, iids, configurations, configurations_sizes);
92 WARN(
"Failed to create DXGI factory, hr %#lx.\n",
hr);
98 WARN(
"Failed to enumerate primary adapter, hr %#lx.\n",
hr);
105 if (
FAILED(
hr = IUnknown_QueryInterface(
adapter, &IID_IWineDXGIAdapter, (
void **)wine_adapter)))
112 IDXGIFactory4_Release(
factory);
126 pfn_vkEnumerateInstanceExtensionProperties
127 = (
void *)pfn_vkGetInstanceProcAddr(vk_instance,
"vkEnumerateInstanceExtensionProperties");
129 if (pfn_vkEnumerateInstanceExtensionProperties(
NULL, &
count,
NULL) < 0)
132 if (!(properties =
calloc(
count,
sizeof(*properties))))
135 if (pfn_vkEnumerateInstanceExtensionProperties(
NULL, &
count, properties) >= 0)
161 VkPhysicalDevice *vk_physical_devices;
162 VkInstance vk_instance;
169 pfn_vkEnumeratePhysicalDevices = (
void *)pfn_vkGetInstanceProcAddr(vk_instance,
"vkEnumeratePhysicalDevices");
171 pfn_vkGetPhysicalDeviceProperties = (
void *)pfn_vkGetInstanceProcAddr(vk_instance,
"vkGetPhysicalDeviceProperties");
173 pfn_vkGetPhysicalDeviceProperties2 = (
void *)pfn_vkGetInstanceProcAddr(vk_instance,
"vkGetPhysicalDeviceProperties2KHR");
175 if ((vr = pfn_vkEnumeratePhysicalDevices(vk_instance, &
count,
NULL)) < 0)
177 WARN(
"Failed to get device count, vr %d.\n", vr);
182 WARN(
"No physical device available.\n");
186 if (!(vk_physical_devices =
calloc(
count,
sizeof(*vk_physical_devices))))
189 if ((vr = pfn_vkEnumeratePhysicalDevices(vk_instance, &
count, vk_physical_devices)) < 0)
196 TRACE(
"Matching adapters by UUIDs.\n");
200 memset(&id_properties, 0,
sizeof(id_properties));
204 properties2.
pNext = &id_properties;
206 pfn_vkGetPhysicalDeviceProperties2(vk_physical_devices[
i], &properties2);
211 vk_physical_device = vk_physical_devices[
i];
217 if (!vk_physical_device)
219 WARN(
"Matching adapters by PCI IDs.\n");
223 pfn_vkGetPhysicalDeviceProperties(vk_physical_devices[
i], &properties);
227 vk_physical_device = vk_physical_devices[
i];
233 if (!vk_physical_device)
234 FIXME(
"Could not find Vulkan physical device for DXGI adapter.\n");
237 free(vk_physical_devices);
238 return vk_physical_device;
253 static const char *
const instance_extensions[] =
263 static const char *
const device_extensions[] =
273 TRACE(
"adapter %p, minimum_feature_level %#x, iid %s, device %p.\n",
278 ERR_(winediag)(
"Failed to load Vulkan library.\n");
285 if (
FAILED(
hr = IWineDXGIAdapter_get_adapter_info(wine_adapter, &adapter_info)))
287 WARN(
"Failed to get adapter info, hr %#lx.\n",
hr);
292 optional_extensions_info.
next = &application_info;
297 instance_create_info.
next = &optional_extensions_info;
308 WARN(
"Failed to create vkd3d instance, hr %#lx.\n",
hr);
328 IWineDXGIAdapter_Release(wine_adapter);
333 REFIID iid,
void **deserializer)
335 TRACE(
"data %p, data_size %Iu, iid %s, deserializer %p.\n",
342 REFIID iid,
void **deserializer)
344 TRACE(
"data %p, data_size %Iu, iid %s, deserializer %p.\n",
353 TRACE(
"root_signature_desc %p, version %#x, blob %p, error_blob %p.\n",
362 TRACE(
"desc %p, blob %p, error_blob %p.\n",
desc,
blob, error_blob);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
D3D_ROOT_SIGNATURE_VERSION
static PFN_vkGetInstanceProcAddr load_vulkan(void)
HRESULT WINAPI D3D12SerializeRootSignature(const D3D12_ROOT_SIGNATURE_DESC *root_signature_desc, D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob)
static BOOL WINAPI load_vulkan_dll_once(INIT_ONCE *once, void *param, void **context)
static HMODULE vulkan_module
static HRESULT d3d12_signal_event(HANDLE event)
HRESULT WINAPI D3D12CreateRootSignatureDeserializer(const void *data, SIZE_T data_size, REFIID iid, void **deserializer)
static BOOL check_vk_instance_extension(VkInstance vk_instance, PFN_vkGetInstanceProcAddr pfn_vkGetInstanceProcAddr, const char *name)
static VkPhysicalDevice d3d12_get_vk_physical_device(struct vkd3d_instance *instance, PFN_vkGetInstanceProcAddr pfn_vkGetInstanceProcAddr, const struct wine_dxgi_adapter_info *adapter_info)
HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer(const void *data, SIZE_T data_size, REFIID iid, void **deserializer)
HRESULT WINAPI D3D12EnableExperimentalFeatures(UINT feature_count, const IID *iids, void *configurations, UINT *configurations_sizes)
HRESULT WINAPI D3D12GetDebugInterface(REFIID iid, void **debug)
static HRESULT d3d12_get_adapter(IWineDXGIAdapter **wine_adapter, IUnknown *adapter)
HRESULT WINAPI D3D12CreateDevice(IUnknown *adapter, D3D_FEATURE_LEVEL minimum_feature_level, REFIID iid, void **device)
HRESULT WINAPI D3D12SerializeVersionedRootSignature(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc, ID3DBlob **blob, ID3DBlob **error_blob)
static HINSTANCE instance
#define GetProcAddress(x, y)
#define WINE_DECLARE_DEBUG_CHANNEL(x)
static const WCHAR version[]
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
HRESULT WINAPI CreateDXGIFactory2(UINT flags, REFIID iid, void **factory)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
D3D11_SHADER_VARIABLE_DESC desc
#define IsEqualGUID(rguid1, rguid2)
static const struct vkd3d_optional_extension_info optional_instance_extensions[]
uint8_t driverUUID[VK_UUID_SIZE]
uint8_t deviceUUID[VK_UUID_SIZE]
enum vkd3d_structure_type type
struct vkd3d_instance * instance
const struct vkd3d_instance_create_info * instance_create_info
uint32_t device_extension_count
D3D_FEATURE_LEVEL minimum_feature_level
const char *const * device_extensions
enum vkd3d_structure_type type
VkPhysicalDevice vk_physical_device
const char *const * instance_extensions
uint32_t instance_extension_count
PFN_vkd3d_signal_event pfn_signal_event
PFN_vkGetInstanceProcAddr pfn_vkGetInstanceProcAddr
enum vkd3d_structure_type type
PFN_vkd3d_join_thread pfn_join_thread
PFN_vkd3d_create_thread pfn_create_thread
enum vkd3d_structure_type type
const char *const * extensions
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
static INIT_ONCE init_once
VKD3D_API VkInstance vkd3d_instance_get_vk_instance(struct vkd3d_instance *instance)
VKD3D_API HRESULT vkd3d_create_versioned_root_signature_deserializer(const void *data, SIZE_T data_size, REFIID iid, void **deserializer)
VKD3D_API HRESULT vkd3d_create_instance(const struct vkd3d_instance_create_info *create_info, struct vkd3d_instance **instance)
VKD3D_API HRESULT vkd3d_serialize_versioned_root_signature(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc, ID3DBlob **blob, ID3DBlob **error_blob)
VKD3D_API ULONG vkd3d_instance_decref(struct vkd3d_instance *instance)
@ VKD3D_STRUCTURE_TYPE_OPTIONAL_INSTANCE_EXTENSIONS_INFO
@ VKD3D_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
@ VKD3D_STRUCTURE_TYPE_DEVICE_CREATE_INFO
@ VKD3D_STRUCTURE_TYPE_APPLICATION_INFO
VKD3D_API HRESULT vkd3d_create_device(const struct vkd3d_device_create_info *create_info, REFIID iid, void **device)
VKD3D_API HRESULT vkd3d_create_root_signature_deserializer(const void *data, SIZE_T data_size, REFIID iid, void **deserializer)
VKD3D_API HRESULT vkd3d_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *desc, D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob)
#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
PFN_vkVoidFunction(VKAPI_PTR * PFN_vkGetInstanceProcAddr)(VkInstance, const char *)
#define VK_KHR_SURFACE_EXTENSION_NAME
void(VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice, VkPhysicalDeviceProperties2 *)
VkResult(VKAPI_PTR * PFN_vkEnumeratePhysicalDevices)(VkInstance, uint32_t *, VkPhysicalDevice *)
#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME
VkResult(VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties)(const char *, uint32_t *, VkExtensionProperties *)
#define VK_KHR_SWAPCHAIN_EXTENSION_NAME
void(VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice, VkPhysicalDeviceProperties *)
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
#define INIT_ONCE_STATIC_INIT
#define DXGI_ERROR_SDK_COMPONENT_MISSING