ReactOS 0.4.17-dev-934-g091855f
d3d12_main.c File Reference
#include "windef.h"
#include "dxgi1_6.h"
#include "d3d12.h"
#include "wine/vulkan.h"
#include <vkd3d.h>
#include "initguid.h"
#include "wine/wined3d.h"
#include "wine/winedxgi.h"
#include "wine/debug.h"
Include dependency graph for d3d12_main.c:

Go to the source code of this file.

Macros

#define COBJMACROS
 
#define VKD3D_NO_VULKAN_H
 
#define VKD3D_NO_WIN32_TYPES
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d3d12)
 
 WINE_DECLARE_DEBUG_CHANNEL (winediag)
 
static BOOL WINAPI load_vulkan_dll_once (INIT_ONCE *once, void *param, void **context)
 
static PFN_vkGetInstanceProcAddr load_vulkan (void)
 
HRESULT WINAPI D3D12GetDebugInterface (REFIID iid, void **debug)
 
HRESULT WINAPI D3D12EnableExperimentalFeatures (UINT feature_count, const IID *iids, void *configurations, UINT *configurations_sizes)
 
static HRESULT d3d12_signal_event (HANDLE event)
 
static HRESULT d3d12_get_adapter (IWineDXGIAdapter **wine_adapter, IUnknown *adapter)
 
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 D3D12CreateDevice (IUnknown *adapter, D3D_FEATURE_LEVEL minimum_feature_level, REFIID iid, void **device)
 
HRESULT WINAPI D3D12CreateRootSignatureDeserializer (const void *data, SIZE_T data_size, REFIID iid, void **deserializer)
 
HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer (const void *data, SIZE_T data_size, REFIID iid, void **deserializer)
 
HRESULT WINAPI D3D12SerializeRootSignature (const D3D12_ROOT_SIGNATURE_DESC *root_signature_desc, D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob)
 
HRESULT WINAPI D3D12SerializeVersionedRootSignature (const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc, ID3DBlob **blob, ID3DBlob **error_blob)
 

Variables

static HMODULE vulkan_module
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 20 of file d3d12_main.c.

◆ VKD3D_NO_VULKAN_H

#define VKD3D_NO_VULKAN_H

Definition at line 21 of file d3d12_main.c.

◆ VKD3D_NO_WIN32_TYPES

#define VKD3D_NO_WIN32_TYPES

Definition at line 22 of file d3d12_main.c.

Function Documentation

◆ check_vk_instance_extension()

static BOOL check_vk_instance_extension ( VkInstance  vk_instance,
PFN_vkGetInstanceProcAddr  pfn_vkGetInstanceProcAddr,
const char *  name 
)
static

Definition at line 117 of file d3d12_main.c.

119{
120 PFN_vkEnumerateInstanceExtensionProperties pfn_vkEnumerateInstanceExtensionProperties;
121 VkExtensionProperties *properties;
122 BOOL ret = FALSE;
123 unsigned int i;
125
126 pfn_vkEnumerateInstanceExtensionProperties
127 = (void *)pfn_vkGetInstanceProcAddr(vk_instance, "vkEnumerateInstanceExtensionProperties");
128
129 if (pfn_vkEnumerateInstanceExtensionProperties(NULL, &count, NULL) < 0)
130 return FALSE;
131
132 if (!(properties = calloc(count, sizeof(*properties))))
133 return FALSE;
134
135 if (pfn_vkEnumerateInstanceExtensionProperties(NULL, &count, properties) >= 0)
136 {
137 for (i = 0; i < count; ++i)
138 {
139 if (!strcmp(properties[i].extensionName, name))
140 {
141 ret = TRUE;
142 break;
143 }
144 }
145 }
146
147 free(properties);
148 return ret;
149}
#define free
Definition: debug_ros.c:5
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
UINT32 uint32_t
Definition: types.h:75
_ACRTIMP int __cdecl strcmp(const char *, const char *)
Definition: string.c:3324
return ret
Definition: mutex.c:147
unsigned int BOOL
Definition: ntddk_ex.h:94
GLuint GLuint GLsizei count
Definition: gl.h:1545
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
Definition: glfuncs.h:248
#define calloc
Definition: rosglue.h:14
Definition: name.c:39
VkResult(VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties)(const char *, uint32_t *, VkExtensionProperties *)
Definition: vulkan.h:18061

Referenced by d3d12_get_vk_physical_device().

◆ d3d12_get_adapter()

static HRESULT d3d12_get_adapter ( IWineDXGIAdapter **  wine_adapter,
IUnknown *  adapter 
)
static

Definition at line 82 of file d3d12_main.c.

83{
86 HRESULT hr;
87
88 if (!adapter)
89 {
90 if (FAILED(hr = CreateDXGIFactory2(0, &IID_IDXGIFactory4, (void **)&factory)))
91 {
92 WARN("Failed to create DXGI factory, hr %#lx.\n", hr);
93 goto done;
94 }
95
96 if (FAILED(hr = IDXGIFactory4_EnumAdapters(factory, 0, &dxgi_adapter)))
97 {
98 WARN("Failed to enumerate primary adapter, hr %#lx.\n", hr);
99 goto done;
100 }
101
103 }
104
105 if (FAILED(hr = IUnknown_QueryInterface(adapter, &IID_IWineDXGIAdapter, (void **)wine_adapter)))
106 WARN("Invalid adapter %p, hr %#lx.\n", adapter, hr);
107
108done:
109 if (dxgi_adapter)
110 IDXGIAdapter_Release(dxgi_adapter);
111 if (factory)
112 IDXGIFactory4_Release(factory);
113
114 return hr;
115}
#define WARN(fmt,...)
Definition: precomp.h:61
HRESULT hr
Definition: delayimp.cpp:582
HRESULT WINAPI CreateDXGIFactory2(UINT flags, REFIID iid, void **factory)
Definition: dxgi_main.c:56
return adapter
#define FAILED(hr)
Definition: intsafe.h:51
Definition: main.c:439

Referenced by D3D12CreateDevice().

◆ d3d12_get_vk_physical_device()

static VkPhysicalDevice d3d12_get_vk_physical_device ( struct vkd3d_instance *  instance,
PFN_vkGetInstanceProcAddr  pfn_vkGetInstanceProcAddr,
const struct wine_dxgi_adapter_info *  adapter_info 
)
static

Definition at line 151 of file d3d12_main.c.

153{
154 PFN_vkGetPhysicalDeviceProperties2 pfn_vkGetPhysicalDeviceProperties2 = NULL;
155 PFN_vkGetPhysicalDeviceProperties pfn_vkGetPhysicalDeviceProperties;
156 PFN_vkEnumeratePhysicalDevices pfn_vkEnumeratePhysicalDevices;
157 VkPhysicalDevice vk_physical_device = VK_NULL_HANDLE;
158 VkPhysicalDeviceIDProperties id_properties;
159 VkPhysicalDeviceProperties2 properties2;
161 VkPhysicalDevice *vk_physical_devices;
162 VkInstance vk_instance;
163 unsigned int i;
165 VkResult vr;
166
168
169 pfn_vkEnumeratePhysicalDevices = (void *)pfn_vkGetInstanceProcAddr(vk_instance, "vkEnumeratePhysicalDevices");
170
171 pfn_vkGetPhysicalDeviceProperties = (void *)pfn_vkGetInstanceProcAddr(vk_instance, "vkGetPhysicalDeviceProperties");
173 pfn_vkGetPhysicalDeviceProperties2 = (void *)pfn_vkGetInstanceProcAddr(vk_instance, "vkGetPhysicalDeviceProperties2KHR");
174
175 if ((vr = pfn_vkEnumeratePhysicalDevices(vk_instance, &count, NULL)) < 0)
176 {
177 WARN("Failed to get device count, vr %d.\n", vr);
178 return VK_NULL_HANDLE;
179 }
180 if (!count)
181 {
182 WARN("No physical device available.\n");
183 return VK_NULL_HANDLE;
184 }
185
186 if (!(vk_physical_devices = calloc(count, sizeof(*vk_physical_devices))))
187 return VK_NULL_HANDLE;
188
189 if ((vr = pfn_vkEnumeratePhysicalDevices(vk_instance, &count, vk_physical_devices)) < 0)
190 goto done;
191
192 if (!IsEqualGUID(&adapter_info->driver_uuid, &GUID_NULL) && pfn_vkGetPhysicalDeviceProperties2
193 && check_vk_instance_extension(vk_instance, pfn_vkGetInstanceProcAddr,
195 {
196 TRACE("Matching adapters by UUIDs.\n");
197
198 for (i = 0; i < count; ++i)
199 {
200 memset(&id_properties, 0, sizeof(id_properties));
202
204 properties2.pNext = &id_properties;
205
206 pfn_vkGetPhysicalDeviceProperties2(vk_physical_devices[i], &properties2);
207
208 if (!memcmp(id_properties.driverUUID, &adapter_info->driver_uuid, VK_UUID_SIZE)
209 && !memcmp(id_properties.deviceUUID, &adapter_info->device_uuid, VK_UUID_SIZE))
210 {
211 vk_physical_device = vk_physical_devices[i];
212 break;
213 }
214 }
215 }
216
217 if (!vk_physical_device)
218 {
219 WARN("Matching adapters by PCI IDs.\n");
220
221 for (i = 0; i < count; ++i)
222 {
223 pfn_vkGetPhysicalDeviceProperties(vk_physical_devices[i], &properties);
224
225 if (properties.vendorID == adapter_info->vendor_id && properties.deviceID == adapter_info->device_id)
226 {
227 vk_physical_device = vk_physical_devices[i];
228 break;
229 }
230 }
231 }
232
233 if (!vk_physical_device)
234 FIXME("Could not find Vulkan physical device for DXGI adapter.\n");
235
236done:
237 free(vk_physical_devices);
238 return vk_physical_device;
239}
#define FIXME(fmt,...)
Definition: precomp.h:53
static BOOL check_vk_instance_extension(VkInstance vk_instance, PFN_vkGetInstanceProcAddr pfn_vkGetInstanceProcAddr, const char *name)
Definition: d3d12_main.c:117
static HINSTANCE instance
Definition: main.c:35
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
Definition: string.c:2807
#define GUID_NULL
Definition: ks.h:106
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4
uint8_t driverUUID[VK_UUID_SIZE]
Definition: vulkan.h:10863
VkStructureType sType
Definition: vulkan.h:10860
uint8_t deviceUUID[VK_UUID_SIZE]
Definition: vulkan.h:10862
VkStructureType sType
Definition: vulkan.h:16583
VKD3D_API VkInstance vkd3d_instance_get_vk_instance(struct vkd3d_instance *instance)
Definition: device.c:803
#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
Definition: vulkan.h:164
void(VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice, VkPhysicalDeviceProperties2 *)
Definition: vulkan.h:18180
#define VK_UUID_SIZE
Definition: vulkan.h:43
VkResult(VKAPI_PTR * PFN_vkEnumeratePhysicalDevices)(VkInstance, uint32_t *, VkPhysicalDevice *)
Definition: vulkan.h:18067
#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
Definition: vulkan.h:138
VkResult
Definition: vulkan.h:4639
#define VK_NULL_HANDLE
Definition: vulkan.h:861
void(VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice, VkPhysicalDeviceProperties *)
Definition: vulkan.h:18179
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
Definition: vulkan.h:5109
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
Definition: vulkan.h:5144

Referenced by D3D12CreateDevice().

◆ d3d12_signal_event()

static HRESULT d3d12_signal_event ( HANDLE  event)
static

Definition at line 77 of file d3d12_main.c.

78{
79 return SetEvent(event) ? S_OK : E_FAIL;
80}
#define E_FAIL
Definition: ddrawi.h:102
#define S_OK
Definition: intsafe.h:52
Definition: filter.c:185
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:669

Referenced by D3D12CreateDevice().

◆ D3D12CreateDevice()

HRESULT WINAPI D3D12CreateDevice ( IUnknown *  adapter,
D3D_FEATURE_LEVEL  minimum_feature_level,
REFIID  iid,
void **  device 
)

Definition at line 241 of file d3d12_main.c.

243{
244 struct vkd3d_optional_instance_extensions_info optional_extensions_info;
245 struct vkd3d_instance_create_info instance_create_info;
247 struct vkd3d_device_create_info device_create_info;
248 struct wine_dxgi_adapter_info adapter_info;
249 struct vkd3d_instance *instance;
250 IWineDXGIAdapter *wine_adapter;
251 HRESULT hr;
252
253 static const char * const instance_extensions[] =
254 {
257 };
258 static const char * const optional_instance_extensions[] =
259 {
262 };
263 static const char * const device_extensions[] =
264 {
266 };
267 static const struct vkd3d_application_info application_info =
268 {
270 .api_version = VKD3D_API_VERSION_1_2,
271 };
272
273 TRACE("adapter %p, minimum_feature_level %#x, iid %s, device %p.\n",
274 adapter, minimum_feature_level, debugstr_guid(iid), device);
275
276 if (!(pfn_vkGetInstanceProcAddr = load_vulkan()))
277 {
278 ERR_(winediag)("Failed to load Vulkan library.\n");
279 return E_FAIL;
280 }
281
282 if (FAILED(hr = d3d12_get_adapter(&wine_adapter, adapter)))
283 return hr;
284
285 if (FAILED(hr = IWineDXGIAdapter_get_adapter_info(wine_adapter, &adapter_info)))
286 {
287 WARN("Failed to get adapter info, hr %#lx.\n", hr);
288 goto done;
289 }
290
291 optional_extensions_info.type = VKD3D_STRUCTURE_TYPE_OPTIONAL_INSTANCE_EXTENSIONS_INFO;
292 optional_extensions_info.next = &application_info;
293 optional_extensions_info.extensions = optional_instance_extensions;
294 optional_extensions_info.extension_count = ARRAY_SIZE(optional_instance_extensions);
295
296 instance_create_info.type = VKD3D_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
297 instance_create_info.next = &optional_extensions_info;
298 instance_create_info.pfn_signal_event = d3d12_signal_event;
299 instance_create_info.pfn_create_thread = NULL;
300 instance_create_info.pfn_join_thread = NULL;
301 instance_create_info.wchar_size = sizeof(WCHAR);
302 instance_create_info.pfn_vkGetInstanceProcAddr = pfn_vkGetInstanceProcAddr;
303 instance_create_info.instance_extensions = instance_extensions;
304 instance_create_info.instance_extension_count = ARRAY_SIZE(instance_extensions);
305
306 if (FAILED(hr = vkd3d_create_instance(&instance_create_info, &instance)))
307 {
308 WARN("Failed to create vkd3d instance, hr %#lx.\n", hr);
309 goto done;
310 }
311
312 device_create_info.type = VKD3D_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
313 device_create_info.next = NULL;
314 device_create_info.minimum_feature_level = minimum_feature_level;
315 device_create_info.instance = instance;
316 device_create_info.instance_create_info = NULL;
317 device_create_info.vk_physical_device = d3d12_get_vk_physical_device(instance, pfn_vkGetInstanceProcAddr, &adapter_info);
318 device_create_info.device_extensions = device_extensions;
319 device_create_info.device_extension_count = ARRAY_SIZE(device_extensions);
320 device_create_info.parent = (IUnknown *)wine_adapter;
321 device_create_info.adapter_luid = adapter_info.luid;
322
323 hr = vkd3d_create_device(&device_create_info, iid, device);
324
326
327done:
328 IWineDXGIAdapter_Release(wine_adapter);
329 return hr;
330}
#define ARRAY_SIZE(A)
Definition: main.h:20
static PFN_vkGetInstanceProcAddr load_vulkan(void)
Definition: d3d12_main.c:48
static HRESULT d3d12_signal_event(HANDLE event)
Definition: d3d12_main.c:77
static VkPhysicalDevice d3d12_get_vk_physical_device(struct vkd3d_instance *instance, PFN_vkGetInstanceProcAddr pfn_vkGetInstanceProcAddr, const struct wine_dxgi_adapter_info *adapter_info)
Definition: d3d12_main.c:151
static HRESULT d3d12_get_adapter(IWineDXGIAdapter **wine_adapter, IUnknown *adapter)
Definition: d3d12_main.c:82
#define debugstr_guid
Definition: kernel32.h:35
short WCHAR
Definition: pedump.c:58
#define ERR_(ch,...)
Definition: debug.h:156
static const struct vkd3d_optional_extension_info optional_instance_extensions[]
Definition: device.c:65
Definition: devices.h:37
enum vkd3d_structure_type type
Definition: vkd3d.h:190
PFN_vkGetInstanceProcAddr pfn_vkGetInstanceProcAddr
Definition: vkd3d.h:146
VKD3D_API HRESULT vkd3d_create_instance(const struct vkd3d_instance_create_info *create_info, struct vkd3d_instance **instance)
Definition: device.c:734
VKD3D_API ULONG vkd3d_instance_decref(struct vkd3d_instance *instance)
Definition: device.c:791
@ VKD3D_STRUCTURE_TYPE_OPTIONAL_INSTANCE_EXTENSIONS_INFO
Definition: vkd3d.h:63
@ VKD3D_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
Definition: vkd3d.h:53
@ VKD3D_STRUCTURE_TYPE_DEVICE_CREATE_INFO
Definition: vkd3d.h:55
@ VKD3D_STRUCTURE_TYPE_APPLICATION_INFO
Definition: vkd3d.h:74
VKD3D_API HRESULT vkd3d_create_device(const struct vkd3d_device_create_info *create_info, REFIID iid, void **device)
Definition: vkd3d_main.c:23
@ VKD3D_API_VERSION_1_2
Definition: vkd3d.h:89
PFN_vkVoidFunction(VKAPI_PTR * PFN_vkGetInstanceProcAddr)(VkInstance, const char *)
Definition: vulkan.h:18143
#define VK_KHR_SURFACE_EXTENSION_NAME
Definition: vulkan.h:72
#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME
Definition: vulkan.h:76
#define VK_KHR_SWAPCHAIN_EXTENSION_NAME
Definition: vulkan.h:74

◆ D3D12CreateRootSignatureDeserializer()

HRESULT WINAPI D3D12CreateRootSignatureDeserializer ( const void *  data,
SIZE_T  data_size,
REFIID  iid,
void **  deserializer 
)

Definition at line 332 of file d3d12_main.c.

334{
335 TRACE("data %p, data_size %Iu, iid %s, deserializer %p.\n",
336 data, data_size, debugstr_guid(iid), deserializer);
337
338 return vkd3d_create_root_signature_deserializer(data, data_size, iid, deserializer);
339}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
VKD3D_API HRESULT vkd3d_create_root_signature_deserializer(const void *data, SIZE_T data_size, REFIID iid, void **deserializer)
Definition: vkd3d_main.c:218

◆ D3D12CreateVersionedRootSignatureDeserializer()

HRESULT WINAPI D3D12CreateVersionedRootSignatureDeserializer ( const void *  data,
SIZE_T  data_size,
REFIID  iid,
void **  deserializer 
)

Definition at line 341 of file d3d12_main.c.

343{
344 TRACE("data %p, data_size %Iu, iid %s, deserializer %p.\n",
345 data, data_size, debugstr_guid(iid), deserializer);
346
347 return vkd3d_create_versioned_root_signature_deserializer(data, data_size, iid, deserializer);
348}
VKD3D_API HRESULT vkd3d_create_versioned_root_signature_deserializer(const void *data, SIZE_T data_size, REFIID iid, void **deserializer)
Definition: vkd3d_main.c:402

◆ D3D12EnableExperimentalFeatures()

HRESULT WINAPI D3D12EnableExperimentalFeatures ( UINT  feature_count,
const IID *  iids,
void *  configurations,
UINT *  configurations_sizes 
)

Definition at line 68 of file d3d12_main.c.

70{
71 FIXME("feature_count %u, iids %p, configurations %p, configurations_sizes %p stub!\n",
72 feature_count, iids, configurations, configurations_sizes);
73
74 return E_NOINTERFACE;
75}
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ D3D12GetDebugInterface()

HRESULT WINAPI D3D12GetDebugInterface ( REFIID  iid,
void **  debug 
)

Definition at line 60 of file d3d12_main.c.

61{
62 TRACE("iid %s, debug %p.\n", debugstr_guid(iid), debug);
63
64 WARN("Returning DXGI_ERROR_SDK_COMPONENT_MISSING.\n");
66}
#define debug(msg)
Definition: key_call.c:71
#define DXGI_ERROR_SDK_COMPONENT_MISSING
Definition: winerror.h:7151

◆ D3D12SerializeRootSignature()

HRESULT WINAPI D3D12SerializeRootSignature ( const D3D12_ROOT_SIGNATURE_DESC *  root_signature_desc,
D3D_ROOT_SIGNATURE_VERSION  version,
ID3DBlob **  blob,
ID3DBlob **  error_blob 
)

Definition at line 350 of file d3d12_main.c.

352{
353 TRACE("root_signature_desc %p, version %#x, blob %p, error_blob %p.\n",
354 root_signature_desc, version, blob, error_blob);
355
356 return vkd3d_serialize_root_signature(root_signature_desc, version, blob, error_blob);
357}
static const WCHAR version[]
Definition: asmname.c:66
Definition: image.c:229
VKD3D_API HRESULT vkd3d_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *desc, D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob)
Definition: vkd3d_main.c:426

◆ D3D12SerializeVersionedRootSignature()

HRESULT WINAPI D3D12SerializeVersionedRootSignature ( const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *  desc,
ID3DBlob **  blob,
ID3DBlob **  error_blob 
)

Definition at line 359 of file d3d12_main.c.

361{
362 TRACE("desc %p, blob %p, error_blob %p.\n", desc, blob, error_blob);
363
365}
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
VKD3D_API HRESULT vkd3d_serialize_versioned_root_signature(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc, ID3DBlob **blob, ID3DBlob **error_blob)
Definition: vkd3d_main.c:473

◆ load_vulkan()

static PFN_vkGetInstanceProcAddr load_vulkan ( void  )
static

Definition at line 48 of file d3d12_main.c.

49{
51
53
54 if (vulkan_module)
55 return (void *)GetProcAddress(vulkan_module, "vkGetInstanceProcAddr");
56
57 return NULL;
58}
static BOOL WINAPI load_vulkan_dll_once(INIT_ONCE *once, void *param, void **context)
Definition: d3d12_main.c:42
static HMODULE vulkan_module
Definition: d3d12_main.c:39
#define GetProcAddress(x, y)
Definition: compat.h:753
BOOL WINAPI InitOnceExecuteOnce(_Inout_ PINIT_ONCE InitOnce, _In_ __callback PINIT_ONCE_FN InitFn, _Inout_opt_ PVOID Parameter, _Outptr_opt_result_maybenull_ LPVOID *Context)
Definition: InitOnce.c:12
static INIT_ONCE init_once
Definition: vfwcapture.c:981
RTL_RUN_ONCE INIT_ONCE
Definition: winbase.h:3654
#define INIT_ONCE_STATIC_INIT
Definition: winbase.h:591

Referenced by D3D12CreateDevice().

◆ load_vulkan_dll_once()

static BOOL WINAPI load_vulkan_dll_once ( INIT_ONCE *  once,
void *  param,
void **  context 
)
static

Definition at line 42 of file d3d12_main.c.

43{
44 vulkan_module = LoadLibraryA("vulkan-1.dll");
45 return TRUE;
46}
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111

Referenced by load_vulkan().

◆ WINE_DECLARE_DEBUG_CHANNEL()

WINE_DECLARE_DEBUG_CHANNEL ( winediag  )

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d3d12  )

Variable Documentation

◆ vulkan_module

HMODULE vulkan_module
static

Definition at line 39 of file d3d12_main.c.

Referenced by d3d12_swapchain_destroy(), load_vulkan(), and load_vulkan_dll_once().