[PATCH 7/7] winevulkan: Convert VkPhysicalDeviceFeatures2 in VkDeviceCreateInfo chain.
Józef Kucia
jkucia at codeweavers.com
Wed Mar 20 07:11:39 CDT 2019
We should teach make_vulkan to handle pNext chains...
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
dlls/winevulkan/vulkan.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c
index 635c6a967b19..f86064c4b661 100644
--- a/dlls/winevulkan/vulkan.c
+++ b/dlls/winevulkan/vulkan.c
@@ -207,6 +207,20 @@ static struct VkQueue_T *wine_vk_device_alloc_queues(struct VkDevice_T *device,
return queues;
}
+static void *convert_VkPhysicalDeviceFeatures2(const void *src)
+{
+ const VkPhysicalDeviceFeatures2 *in = src;
+ VkPhysicalDeviceFeatures2 *out;
+
+ if (!(out = heap_alloc(sizeof(*out))))
+ return NULL;
+
+ *out = *in;
+ out->pNext = NULL;
+
+ return out;
+}
+
static void *convert_VkDeviceGroupDeviceCreateInfo(const void *src)
{
const VkDeviceGroupDeviceCreateInfo *in = src;
@@ -248,12 +262,15 @@ static void *convert_VkPhysicalDeviceHostQueryResetFeaturesEXT(const void *src)
static void wine_vk_device_free_create_info(VkDeviceCreateInfo *create_info)
{
VkPhysicalDeviceHostQueryResetFeaturesEXT *host_query_reset_features;
+ VkPhysicalDeviceFeatures2 *device_features;
VkDeviceGroupDeviceCreateInfo *group_info;
+ device_features = wine_vk_find_struct(create_info, PHYSICAL_DEVICE_FEATURES_2);
group_info = wine_vk_find_struct(create_info, DEVICE_GROUP_DEVICE_CREATE_INFO);
host_query_reset_features = wine_vk_find_struct(create_info, PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT);
create_info->pNext = NULL;
+ heap_free(device_features);
if (group_info)
{
heap_free((void *)group_info->pPhysicalDevices);
@@ -296,6 +313,12 @@ static VkResult wine_vk_device_convert_create_info(const VkDeviceCreateInfo *src
dst_header = dst_header->pNext;
break;
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:
+ if (!(dst_header->pNext = convert_VkPhysicalDeviceFeatures2(header)))
+ goto err;
+ dst_header = dst_header->pNext;
+ break;
+
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT:
if (!(dst_header->pNext = convert_VkPhysicalDeviceHostQueryResetFeaturesEXT(header)))
goto err;
--
2.19.2
More information about the wine-devel
mailing list