diff --git a/include/vkd3d.h b/include/vkd3d.h new file mode 100644 index 00000000..dbcf4fa1 --- /dev/null +++ b/include/vkd3d.h @@ -0,0 +1,45 @@ +/* + * Copyright 2016 Józef Kucia for CodeWeavers + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef __VKD3D_H +#define __VKD3D_H + +#include "vkd3d_windows.h" +#include "d3d12.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +struct vkd3d_device_create_info +{ + D3D_FEATURE_LEVEL minimum_feature_level; +}; + +HRESULT WINAPI vkd3d_create_device(const struct vkd3d_device_create_info *create_info, + REFIID riid, void **device); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __VKD3D_H */ diff --git a/libs/vkd3d/vkd3d_main.c b/libs/vkd3d/vkd3d_main.c index dc15ad3d..8acab96e 100644 --- a/libs/vkd3d/vkd3d_main.c +++ b/libs/vkd3d/vkd3d_main.c @@ -23,31 +23,27 @@ #define INITGUID #include "vkd3d_private.h" -HRESULT WINAPI D3D12CreateDevice(IUnknown *adapter, D3D_FEATURE_LEVEL minimum_feature_level, +HRESULT WINAPI vkd3d_create_device(const struct vkd3d_device_create_info *create_info, REFIID riid, void **device) { struct d3d12_device *object; HRESULT hr; - TRACE("adapter %p, minimum_feature_level %#x, riid %s, device %p.\n", - adapter, minimum_feature_level, debugstr_guid(riid), device); + TRACE("create_info %p, riid %s, device %p.\n", create_info, debugstr_guid(riid), device); - if (minimum_feature_level < D3D_FEATURE_LEVEL_11_0 - || !is_valid_feature_level(minimum_feature_level)) + if (create_info->minimum_feature_level < D3D_FEATURE_LEVEL_11_0 + || !is_valid_feature_level(create_info->minimum_feature_level)) { - WARN("Invalid feature level %#x.\n", minimum_feature_level); + WARN("Invalid feature level %#x.\n", create_info->minimum_feature_level); return E_INVALIDARG; } - if (!check_feature_level_support(minimum_feature_level)) + if (!check_feature_level_support(create_info->minimum_feature_level)) { - FIXME("Unsupported feature level %#x.\n", minimum_feature_level); + FIXME("Unsupported feature level %#x.\n", create_info->minimum_feature_level); return E_INVALIDARG; } - if (adapter) - FIXME("Ignoring adapter %p.\n", adapter); - if (FAILED(hr = d3d12_device_create(&object))) return hr; @@ -55,6 +51,22 @@ HRESULT WINAPI D3D12CreateDevice(IUnknown *adapter, D3D_FEATURE_LEVEL minimum_fe riid, device); } +HRESULT WINAPI D3D12CreateDevice(IUnknown *adapter, D3D_FEATURE_LEVEL minimum_feature_level, + REFIID riid, void **device) +{ + struct vkd3d_device_create_info create_info; + + TRACE("adapter %p, minimum_feature_level %#x, riid %s, device %p.\n", + adapter, minimum_feature_level, debugstr_guid(riid), device); + + if (adapter) + FIXME("Ignoring adapter %p.\n", adapter); + + create_info.minimum_feature_level = minimum_feature_level; + + return vkd3d_create_device(&create_info, riid, device); +} + /* Events */ HANDLE WINAPI VKD3DCreateEvent(void) { diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h index d461a0f3..11c36975 100644 --- a/libs/vkd3d/vkd3d_private.h +++ b/libs/vkd3d/vkd3d_private.h @@ -25,12 +25,11 @@ #define COBJMACROS #define NONAMELESSUNION +#include "vkd3d.h" #include "vkd3d_common.h" #include "vkd3d_debug.h" #include "vkd3d_vulkan.h" -#include "d3d12.h" - #include #include #include