From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- libs/vkd3d-shader/vkd3d_shader_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c index 6522dd69258d..bf1a3916888d 100644 --- a/libs/vkd3d-shader/vkd3d_shader_main.c +++ b/libs/vkd3d-shader/vkd3d_shader_main.c @@ -41,9 +41,9 @@ static HRESULT vkd3d_shader_parser_init(struct vkd3d_shader_parser *parser, if (!(parser->data = shader_sm4_init(shader_desc->byte_code, shader_desc->byte_code_size, &shader_desc->output_signature))) { - WARN("Failed to initialize shader parser, hr %#x.\n", hr); + WARN("Failed to initialize shader parser.\n"); free_shader_desc(shader_desc); - return hr; + return E_INVALIDARG; }
shader_sm4_read_header(parser->data, &parser->ptr, &parser->shader_version);
From: Józef Kucia jkucia@codeweavers.com
Replaced by vkd3d_acquire_vk_queue().
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- include/vkd3d.h | 1 - libs/vkd3d/command.c | 7 ------- libs/vkd3d/vkd3d.map | 1 - 3 files changed, 9 deletions(-)
diff --git a/include/vkd3d.h b/include/vkd3d.h index 322675b9e992..320282b04f41 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -75,7 +75,6 @@ VkPhysicalDevice vkd3d_get_vk_physical_device(ID3D12Device *device);
uint32_t vkd3d_get_vk_queue_family_index(ID3D12CommandQueue *queue); VkQueue vkd3d_acquire_vk_queue(ID3D12CommandQueue *queue); -VkQueue vkd3d_get_vk_queue(ID3D12CommandQueue *queue); void vkd3d_release_vk_queue(ID3D12CommandQueue *queue);
HRESULT vkd3d_serialize_root_signature(const D3D12_ROOT_SIGNATURE_DESC *root_signature_desc, diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c index 7aa138672315..3b7d2ee4f086 100644 --- a/libs/vkd3d/command.c +++ b/libs/vkd3d/command.c @@ -4380,13 +4380,6 @@ HRESULT d3d12_command_queue_create(struct d3d12_device *device, return S_OK; }
-VkQueue vkd3d_get_vk_queue(ID3D12CommandQueue *queue) -{ - struct d3d12_command_queue *d3d12_queue = impl_from_ID3D12CommandQueue(queue); - - return d3d12_queue->vkd3d_queue->vk_queue; -} - uint32_t vkd3d_get_vk_queue_family_index(ID3D12CommandQueue *queue) { struct d3d12_command_queue *d3d12_queue = impl_from_ID3D12CommandQueue(queue); diff --git a/libs/vkd3d/vkd3d.map b/libs/vkd3d/vkd3d.map index 57b8606e3f6f..0c0d768c5544 100644 --- a/libs/vkd3d/vkd3d.map +++ b/libs/vkd3d/vkd3d.map @@ -9,7 +9,6 @@ global: vkd3d_get_vk_format; vkd3d_get_vk_instance; vkd3d_get_vk_physical_device; - vkd3d_get_vk_queue; vkd3d_get_vk_queue_family_index; vkd3d_instance_decref; vkd3d_instance_incref;
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- include/vkd3d.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/include/vkd3d.h b/include/vkd3d.h index 320282b04f41..a70bd2da65b1 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -24,7 +24,10 @@ # include "vkd3d_d3d12.h" #endif /* VKD3D_NO_WIN32_TYPES */
-#include <vulkan/vulkan.h> +#ifndef VKD3D_NO_VULKAN_H +# include <vulkan/vulkan.h> +#endif /* VKD3D_NO_VULKAN_H */ + #include <stdbool.h>
#ifdef __cplusplus
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- tests/vkd3d_api.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/vkd3d_api.c b/tests/vkd3d_api.c index 146467a4f8f6..7ca5d264781f 100644 --- a/tests/vkd3d_api.c +++ b/tests/vkd3d_api.c @@ -151,9 +151,9 @@ static void test_vkd3d_queue(void) direct_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_DIRECT); ok(direct_queue, "Failed to create direct command queue.\n"); compute_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_COMPUTE); - ok(compute_queue, "Failed to create direct command queue.\n"); + ok(compute_queue, "Failed to create compute command queue.\n"); copy_queue = create_command_queue(device, D3D12_COMMAND_LIST_TYPE_COPY); - ok(copy_queue, "Failed to create direct command queue.\n"); + ok(copy_queue, "Failed to create copy command queue.\n");
vk_queue_family = vkd3d_get_vk_queue_family_index(direct_queue); trace("Direct queue family index %u.\n", vk_queue_family);
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- libs/vkd3d-shader/vkd3d_shader.map | 1 + libs/vkd3d-utils/vkd3d_utils.map | 1 + libs/vkd3d/vkd3d.map | 1 + 3 files changed, 3 insertions(+)
diff --git a/libs/vkd3d-shader/vkd3d_shader.map b/libs/vkd3d-shader/vkd3d_shader.map index 31ee4a90c970..92e4d06b0095 100644 --- a/libs/vkd3d-shader/vkd3d_shader.map +++ b/libs/vkd3d-shader/vkd3d_shader.map @@ -1,3 +1,4 @@ +VKD3D_1_0 { global: vkd3d_shader_compile_dxbc; diff --git a/libs/vkd3d-utils/vkd3d_utils.map b/libs/vkd3d-utils/vkd3d_utils.map index 42df666bd6a7..79858e502eec 100644 --- a/libs/vkd3d-utils/vkd3d_utils.map +++ b/libs/vkd3d-utils/vkd3d_utils.map @@ -1,3 +1,4 @@ +VKD3D_1_0 { global: D3D12CreateDevice; diff --git a/libs/vkd3d/vkd3d.map b/libs/vkd3d/vkd3d.map index 0c0d768c5544..6f408410d763 100644 --- a/libs/vkd3d/vkd3d.map +++ b/libs/vkd3d/vkd3d.map @@ -1,3 +1,4 @@ +VKD3D_1_0 { global: vkd3d_acquire_vk_queue;
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- Makefile.am | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/Makefile.am b/Makefile.am index 3ad9c2e78588..a99fa56163f3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -62,8 +62,10 @@ libvkd3d_shader_la_SOURCES = \ include/private/vkd3d_common.h \ include/private/vkd3d_debug.h \ include/private/vkd3d_memory.h \ + include/vkd3d_shader.h \ libs/vkd3d-shader/dxbc.c \ libs/vkd3d-shader/spirv.c \ + libs/vkd3d-shader/vkd3d_shader.map \ libs/vkd3d-shader/vkd3d_shader_main.c \ libs/vkd3d-shader/vkd3d_shader_private.h libvkd3d_shader_la_LIBADD = @SPIRV_TOOLS_LIBS@ @@ -72,17 +74,18 @@ libvkd3d_shader_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libs/vkd3d-shader/vk endif
libvkd3d_la_SOURCES = \ - include/d3d12.idl \ include/private/vkd3d_common.h \ include/private/vkd3d_debug.h \ include/private/vkd3d_memory.h \ include/private/vkd3d_test.h \ - include/unknown.idl \ + include/vkd3d_d3d12.idl \ + include/vkd3d_unknown.idl \ libs/vkd3d/command.c \ libs/vkd3d/device.c \ libs/vkd3d/resource.c \ libs/vkd3d/state.c \ libs/vkd3d/utils.c \ + libs/vkd3d/vkd3d.map \ libs/vkd3d/vkd3d_main.c \ libs/vkd3d/vkd3d_private.h \ libs/vkd3d/vulkan_procs.h @@ -92,6 +95,7 @@ libvkd3d_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libs/vkd3d/vkd3d.map endif
libvkd3d_utils_la_SOURCES = \ + libs/vkd3d-utils/vkd3d_utils.map \ libs/vkd3d-utils/vkd3d_utils_main.c \ libs/vkd3d-utils/vkd3d_utils_private.h libvkd3d_utils_la_LIBADD = libvkd3d-common.la libvkd3d.la
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com ---
For DXGI adapters support in Wine.
--- include/vkd3d.h | 2 ++ libs/vkd3d-utils/vkd3d_utils_main.c | 1 + libs/vkd3d/device.c | 21 +++++++++++---------- libs/vkd3d/vkd3d_main.c | 2 +- libs/vkd3d/vkd3d_private.h | 3 ++- 5 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/include/vkd3d.h b/include/vkd3d.h index a70bd2da65b1..78d5e2e460f5 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -57,6 +57,8 @@ struct vkd3d_device_create_info
struct vkd3d_instance *instance; const struct vkd3d_instance_create_info *instance_create_info; + + VkPhysicalDevice vk_physical_device; };
/* resource flags */ diff --git a/libs/vkd3d-utils/vkd3d_utils_main.c b/libs/vkd3d-utils/vkd3d_utils_main.c index 38283bf23585..9fe61a1bb4da 100644 --- a/libs/vkd3d-utils/vkd3d_utils_main.c +++ b/libs/vkd3d-utils/vkd3d_utils_main.c @@ -45,6 +45,7 @@ HRESULT WINAPI D3D12CreateDevice(IUnknown *adapter, device_create_info.minimum_feature_level = minimum_feature_level; device_create_info.instance = NULL; device_create_info.instance_create_info = &instance_create_info; + device_create_info.vk_physical_device = VK_NULL_HANDLE;
return vkd3d_create_device(&device_create_info, riid, device); } diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c index 1e40e5df10dd..5cf2ecfe8bdc 100644 --- a/libs/vkd3d/device.c +++ b/libs/vkd3d/device.c @@ -740,16 +740,15 @@ static HRESULT d3d12_device_create_vkd3d_queues(struct d3d12_device *device, return S_OK; }
-static HRESULT vkd3d_create_vk_device(struct d3d12_device *device) +static HRESULT vkd3d_create_vk_device(struct d3d12_device *device, VkPhysicalDevice physical_device) { - unsigned int direct_queue_family_index, copy_queue_family_index, compute_queue_family_index; uint32_t direct_queue_timestamp_bits, copy_queue_timestamp_bits, compute_queue_timestamp_bits; + unsigned int direct_queue_family_index, copy_queue_family_index, compute_queue_family_index; const struct vkd3d_vk_instance_procs *vk_procs = &device->vkd3d_instance->vk_procs; const char *extensions[MAX_DEVICE_EXTENSION_COUNT]; VkQueueFamilyProperties *queue_properties; VkPhysicalDeviceFeatures device_features; VkDeviceQueueCreateInfo *queue_info; - VkPhysicalDevice physical_device; VkDeviceCreateInfo device_info; uint32_t queue_family_count; VkDevice vk_device; @@ -757,10 +756,10 @@ static HRESULT vkd3d_create_vk_device(struct d3d12_device *device) VkResult vr; HRESULT hr;
- TRACE("device %p.\n", device); + TRACE("device %p, physical_device %p.\n", device, physical_device);
- physical_device = VK_NULL_HANDLE; - if (FAILED(hr = vkd3d_select_physical_device(device->vkd3d_instance, &physical_device))) + if (!physical_device + && FAILED(hr = vkd3d_select_physical_device(device->vkd3d_instance, &physical_device))) return hr;
/* Create command queues */ @@ -1976,7 +1975,8 @@ struct d3d12_device *unsafe_impl_from_ID3D12Device(ID3D12Device *iface) return impl_from_ID3D12Device(iface); }
-static HRESULT d3d12_device_init(struct d3d12_device *device, struct vkd3d_instance *instance) +static HRESULT d3d12_device_init(struct d3d12_device *device, + struct vkd3d_instance *instance, VkPhysicalDevice vk_physical_device) { HRESULT hr;
@@ -1990,7 +1990,7 @@ static HRESULT d3d12_device_init(struct d3d12_device *device, struct vkd3d_insta device->join_thread = instance->join_thread; device->wchar_size = instance->wchar_size;
- if (FAILED(hr = vkd3d_create_vk_device(device))) + if (FAILED(hr = vkd3d_create_vk_device(device, vk_physical_device))) { vkd3d_instance_decref(device->vkd3d_instance); return hr; @@ -2021,7 +2021,8 @@ static HRESULT d3d12_device_init(struct d3d12_device *device, struct vkd3d_insta return S_OK; }
-HRESULT d3d12_device_create(struct vkd3d_instance *instance, struct d3d12_device **device) +HRESULT d3d12_device_create(struct vkd3d_instance *instance, + VkPhysicalDevice vk_physical_device, struct d3d12_device **device) { struct d3d12_device *object; HRESULT hr; @@ -2029,7 +2030,7 @@ HRESULT d3d12_device_create(struct vkd3d_instance *instance, struct d3d12_device if (!(object = vkd3d_malloc(sizeof(*object)))) return E_OUTOFMEMORY;
- if (FAILED(hr = d3d12_device_init(object, instance))) + if (FAILED(hr = d3d12_device_init(object, instance, vk_physical_device))) { vkd3d_free(object); return hr; diff --git a/libs/vkd3d/vkd3d_main.c b/libs/vkd3d/vkd3d_main.c index 005e6bf240cc..d3b0bf4f6b9d 100644 --- a/libs/vkd3d/vkd3d_main.c +++ b/libs/vkd3d/vkd3d_main.c @@ -64,7 +64,7 @@ HRESULT vkd3d_create_device(const struct vkd3d_device_create_info *create_info, return E_FAIL; }
- hr = d3d12_device_create(instance, &object); + hr = d3d12_device_create(instance, create_info->vk_physical_device, &object); vkd3d_instance_decref(instance); if (FAILED(hr)) return hr; diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h index de5ed8e8576a..eca6895784b8 100644 --- a/libs/vkd3d/vkd3d_private.h +++ b/libs/vkd3d/vkd3d_private.h @@ -658,7 +658,8 @@ struct d3d12_device vkd3d_join_thread_pfn join_thread; };
-HRESULT d3d12_device_create(struct vkd3d_instance *instance, struct d3d12_device **device) DECLSPEC_HIDDEN; +HRESULT d3d12_device_create(struct vkd3d_instance *instance, + VkPhysicalDevice vk_physical_device, struct d3d12_device **device) DECLSPEC_HIDDEN; struct d3d12_device *unsafe_impl_from_ID3D12Device(ID3D12Device *iface) DECLSPEC_HIDDEN;
HRESULT vkd3d_create_buffer(struct d3d12_device *device,
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com