=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: vkd3d: Move resource memory allocation functions.

Alexandre Julliard julliard at winehq.org
Mon Jun 24 16:05:58 CDT 2019


Module: vkd3d
Branch: master
Commit: 8d242b32ac6a731a7737a151c435a470c97cf15d
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=8d242b32ac6a731a7737a151c435a470c97cf15d

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Thu Jun 20 21:08:05 2019 +0200

vkd3d: Move resource memory allocation functions.

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 libs/vkd3d/resource.c | 238 +++++++++++++++++++++++++-------------------------
 1 file changed, 119 insertions(+), 119 deletions(-)

diff --git a/libs/vkd3d/resource.c b/libs/vkd3d/resource.c
index bcf523e..824698a 100644
--- a/libs/vkd3d/resource.c
+++ b/libs/vkd3d/resource.c
@@ -116,6 +116,125 @@ static HRESULT vkd3d_allocate_device_memory(struct d3d12_device *device,
     return S_OK;
 }
 
+HRESULT vkd3d_allocate_buffer_memory(struct d3d12_device *device, VkBuffer vk_buffer,
+        const D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS heap_flags,
+        VkDeviceMemory *vk_memory)
+{
+    const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
+    VkMemoryDedicatedAllocateInfo *dedicated_allocation = NULL;
+    VkMemoryDedicatedRequirements dedicated_requirements;
+    VkMemoryDedicatedAllocateInfo dedicated_info;
+    VkMemoryRequirements2 memory_requirements2;
+    VkMemoryRequirements *memory_requirements;
+    VkBufferMemoryRequirementsInfo2 info;
+    VkResult vr;
+    HRESULT hr;
+
+    memory_requirements = &memory_requirements2.memoryRequirements;
+
+    if (device->vk_info.KHR_dedicated_allocation)
+    {
+        info.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2;
+        info.pNext = NULL;
+        info.buffer = vk_buffer;
+
+        dedicated_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
+        dedicated_requirements.pNext = NULL;
+
+        memory_requirements2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
+        memory_requirements2.pNext = &dedicated_requirements;
+
+        VK_CALL(vkGetBufferMemoryRequirements2KHR(device->vk_device, &info, &memory_requirements2));
+
+        if (dedicated_requirements.prefersDedicatedAllocation)
+        {
+            dedicated_allocation = &dedicated_info;
+
+            dedicated_info.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
+            dedicated_info.pNext = NULL;
+            dedicated_info.image = VK_NULL_HANDLE;
+            dedicated_info.buffer = vk_buffer;
+        }
+    }
+    else
+    {
+        VK_CALL(vkGetBufferMemoryRequirements(device->vk_device, vk_buffer, memory_requirements));
+    }
+
+    if (FAILED(hr = vkd3d_allocate_device_memory(device, heap_properties, heap_flags,
+            memory_requirements, dedicated_allocation, vk_memory, NULL)))
+        return hr;
+
+    if ((vr = VK_CALL(vkBindBufferMemory(device->vk_device, vk_buffer, *vk_memory, 0))) < 0)
+    {
+        WARN("Failed to bind memory, vr %d.\n", vr);
+        VK_CALL(vkFreeMemory(device->vk_device, *vk_memory, NULL));
+        *vk_memory = VK_NULL_HANDLE;
+    }
+
+    return hresult_from_vk_result(vr);
+}
+
+static HRESULT vkd3d_allocate_image_memory(struct d3d12_device *device, VkImage vk_image,
+        const D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS heap_flags,
+        VkDeviceMemory *vk_memory)
+{
+    const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
+    VkMemoryDedicatedAllocateInfo *dedicated_allocation = NULL;
+    VkMemoryDedicatedRequirements dedicated_requirements;
+    VkMemoryDedicatedAllocateInfo dedicated_info;
+    VkMemoryRequirements2 memory_requirements2;
+    VkMemoryRequirements *memory_requirements;
+    VkImageMemoryRequirementsInfo2 info;
+    VkResult vr;
+    HRESULT hr;
+
+    memory_requirements = &memory_requirements2.memoryRequirements;
+
+    if (device->vk_info.KHR_dedicated_allocation)
+    {
+        info.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2;
+        info.pNext = NULL;
+        info.image = vk_image;
+
+        dedicated_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
+        dedicated_requirements.pNext = NULL;
+
+        memory_requirements2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
+        memory_requirements2.pNext = &dedicated_requirements;
+
+        VK_CALL(vkGetImageMemoryRequirements2KHR(device->vk_device, &info, &memory_requirements2));
+
+        if (dedicated_requirements.prefersDedicatedAllocation)
+        {
+            dedicated_allocation = &dedicated_info;
+
+            dedicated_info.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
+            dedicated_info.pNext = NULL;
+            dedicated_info.image = vk_image;
+            dedicated_info.buffer = VK_NULL_HANDLE;
+        }
+    }
+    else
+    {
+        VK_CALL(vkGetImageMemoryRequirements(device->vk_device, vk_image, memory_requirements));
+    }
+
+    if (FAILED(hr = vkd3d_allocate_device_memory(device, heap_properties, heap_flags,
+            memory_requirements, dedicated_allocation, vk_memory, NULL)))
+        return hr;
+
+    if ((vr = VK_CALL(vkBindImageMemory(device->vk_device, vk_image, *vk_memory, 0))) < 0)
+    {
+        WARN("Failed to bind memory, vr %d.\n", vr);
+        VK_CALL(vkFreeMemory(device->vk_device, *vk_memory, NULL));
+        *vk_memory = VK_NULL_HANDLE;
+        return hresult_from_vk_result(vr);
+    }
+
+    return S_OK;
+}
+
 /* ID3D12Heap */
 static inline struct d3d12_heap *impl_from_ID3D12Heap(ID3D12Heap *iface)
 {
@@ -731,125 +850,6 @@ HRESULT vkd3d_get_image_allocation_info(struct d3d12_device *device,
     return hr;
 }
 
-HRESULT vkd3d_allocate_buffer_memory(struct d3d12_device *device, VkBuffer vk_buffer,
-        const D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS heap_flags,
-        VkDeviceMemory *vk_memory)
-{
-    const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
-    VkMemoryDedicatedAllocateInfo *dedicated_allocation = NULL;
-    VkMemoryDedicatedRequirements dedicated_requirements;
-    VkMemoryDedicatedAllocateInfo dedicated_info;
-    VkMemoryRequirements2 memory_requirements2;
-    VkMemoryRequirements *memory_requirements;
-    VkBufferMemoryRequirementsInfo2 info;
-    VkResult vr;
-    HRESULT hr;
-
-    memory_requirements = &memory_requirements2.memoryRequirements;
-
-    if (device->vk_info.KHR_dedicated_allocation)
-    {
-        info.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2;
-        info.pNext = NULL;
-        info.buffer = vk_buffer;
-
-        dedicated_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
-        dedicated_requirements.pNext = NULL;
-
-        memory_requirements2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
-        memory_requirements2.pNext = &dedicated_requirements;
-
-        VK_CALL(vkGetBufferMemoryRequirements2KHR(device->vk_device, &info, &memory_requirements2));
-
-        if (dedicated_requirements.prefersDedicatedAllocation)
-        {
-            dedicated_allocation = &dedicated_info;
-
-            dedicated_info.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
-            dedicated_info.pNext = NULL;
-            dedicated_info.image = VK_NULL_HANDLE;
-            dedicated_info.buffer = vk_buffer;
-        }
-    }
-    else
-    {
-        VK_CALL(vkGetBufferMemoryRequirements(device->vk_device, vk_buffer, memory_requirements));
-    }
-
-    if (FAILED(hr = vkd3d_allocate_device_memory(device, heap_properties, heap_flags,
-            memory_requirements, dedicated_allocation, vk_memory, NULL)))
-        return hr;
-
-    if ((vr = VK_CALL(vkBindBufferMemory(device->vk_device, vk_buffer, *vk_memory, 0))) < 0)
-    {
-        WARN("Failed to bind memory, vr %d.\n", vr);
-        VK_CALL(vkFreeMemory(device->vk_device, *vk_memory, NULL));
-        *vk_memory = VK_NULL_HANDLE;
-    }
-
-    return hresult_from_vk_result(vr);
-}
-
-static HRESULT vkd3d_allocate_image_memory(struct d3d12_device *device, VkImage vk_image,
-        const D3D12_HEAP_PROPERTIES *heap_properties, D3D12_HEAP_FLAGS heap_flags,
-        VkDeviceMemory *vk_memory)
-{
-    const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
-    VkMemoryDedicatedAllocateInfo *dedicated_allocation = NULL;
-    VkMemoryDedicatedRequirements dedicated_requirements;
-    VkMemoryDedicatedAllocateInfo dedicated_info;
-    VkMemoryRequirements2 memory_requirements2;
-    VkMemoryRequirements *memory_requirements;
-    VkImageMemoryRequirementsInfo2 info;
-    VkResult vr;
-    HRESULT hr;
-
-    memory_requirements = &memory_requirements2.memoryRequirements;
-
-    if (device->vk_info.KHR_dedicated_allocation)
-    {
-        info.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2;
-        info.pNext = NULL;
-        info.image = vk_image;
-
-        dedicated_requirements.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS;
-        dedicated_requirements.pNext = NULL;
-
-        memory_requirements2.sType = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2;
-        memory_requirements2.pNext = &dedicated_requirements;
-
-        VK_CALL(vkGetImageMemoryRequirements2KHR(device->vk_device, &info, &memory_requirements2));
-
-        if (dedicated_requirements.prefersDedicatedAllocation)
-        {
-            dedicated_allocation = &dedicated_info;
-
-            dedicated_info.sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO;
-            dedicated_info.pNext = NULL;
-            dedicated_info.image = vk_image;
-            dedicated_info.buffer = VK_NULL_HANDLE;
-        }
-    }
-    else
-    {
-        VK_CALL(vkGetImageMemoryRequirements(device->vk_device, vk_image, memory_requirements));
-    }
-
-    if (FAILED(hr = vkd3d_allocate_device_memory(device, heap_properties, heap_flags,
-            memory_requirements, dedicated_allocation, vk_memory, NULL)))
-        return hr;
-
-    if ((vr = VK_CALL(vkBindImageMemory(device->vk_device, vk_image, *vk_memory, 0))) < 0)
-    {
-        WARN("Failed to bind memory, vr %d.\n", vr);
-        VK_CALL(vkFreeMemory(device->vk_device, *vk_memory, NULL));
-        *vk_memory = VK_NULL_HANDLE;
-        return hresult_from_vk_result(vr);
-    }
-
-    return S_OK;
-}
-
 static void d3d12_resource_destroy(struct d3d12_resource *resource, struct d3d12_device *device)
 {
     const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;




More information about the wine-cvs mailing list