From c79584ed92c3c19d3a9e0c7b7a4b814c7d83ff77 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Sat, 22 Oct 2016 20:42:46 +0200 Subject: [PATCH] libs/vkd3d: Export a function to get the Vulkan queue family index from a d3d12 command queue. --- include/vkd3d.h | 1 + libs/vkd3d/command.c | 8 ++++++++ libs/vkd3d/vkd3d_private.h | 1 + 3 files changed, 10 insertions(+) diff --git a/include/vkd3d.h b/include/vkd3d.h index 0a4ce2c9..f91ace46 100644 --- a/include/vkd3d.h +++ b/include/vkd3d.h @@ -47,6 +47,7 @@ HRESULT vkd3d_create_image_resource(ID3D12Device *device, const D3D12_RESOURCE_D VkDevice vkd3d_get_vk_device(ID3D12Device *device); VkInstance vkd3d_get_vk_instance(ID3D12Device *device); VkQueue vkd3d_get_vk_queue(ID3D12CommandQueue *queue); +uint32_t vkd3d_get_vk_queue_family_index(ID3D12CommandQueue *queue); #ifdef __cplusplus } diff --git a/libs/vkd3d/command.c b/libs/vkd3d/command.c index ffa15a10..a244c6ae 100644 --- a/libs/vkd3d/command.c +++ b/libs/vkd3d/command.c @@ -2783,6 +2783,7 @@ static HRESULT d3d12_command_queue_init(struct d3d12_command_queue *queue, /* FIXME: Access to VkQueue must be externally synchronized. */ VK_CALL(vkGetDeviceQueue(device->vk_device, queue_family_index, 0, &queue->vk_queue)); + queue->vk_queue_family_index = queue_family_index; queue->device = device; ID3D12Device_AddRef(&device->ID3D12Device_iface); @@ -2818,3 +2819,10 @@ VkQueue vkd3d_get_vk_queue(ID3D12CommandQueue *queue) return d3d12_queue->vk_queue; } + +uint32_t vkd3d_get_vk_queue_family_index(ID3D12CommandQueue *queue) +{ + struct d3d12_command_queue *d3d12_queue = impl_from_ID3D12CommandQueue(queue); + + return d3d12_queue->vk_queue_family_index; +} diff --git a/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/vkd3d_private.h index 9cbf4b08..235c74d3 100644 --- a/libs/vkd3d/vkd3d_private.h +++ b/libs/vkd3d/vkd3d_private.h @@ -328,6 +328,7 @@ struct d3d12_command_queue D3D12_COMMAND_QUEUE_DESC desc; VkQueue vk_queue; + uint32_t vk_queue_family_index; struct d3d12_device *device; };