From 936f32af9dbfb4dc459fc943c66f205377bd3367 Mon Sep 17 00:00:00 2001 From: Squareys Date: Mon, 11 Jul 2016 11:28:23 +0200 Subject: [PATCH] Vk: Lazily initialize physical device memory properties Signed-off-by: Squareys --- src/Magnum/Vk/PhysicalDevice.cpp | 4 ++++ src/Magnum/Vk/PhysicalDevice.h | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Magnum/Vk/PhysicalDevice.cpp b/src/Magnum/Vk/PhysicalDevice.cpp index 451a19351..8fce6acfd 100644 --- a/src/Magnum/Vk/PhysicalDevice.cpp +++ b/src/Magnum/Vk/PhysicalDevice.cpp @@ -83,6 +83,10 @@ UnsignedInt PhysicalDevice::getQueueFamilyIndex(QueueFamily family) { } UnsignedInt PhysicalDevice::getMemoryType(UnsignedInt typeBits, VkFlags properties) { + if(_deviceMemoryProperties.memoryHeapCount == 0 && _deviceMemoryProperties.memoryTypeCount == 0) { + vkGetPhysicalDeviceMemoryProperties(_physicalDevice, &_deviceMemoryProperties); + } + for (uint32_t i = 0; i < 32; i++) { if((typeBits & 1) != 0) { if((_deviceMemoryProperties.memoryTypes[i].propertyFlags & properties) == properties) { diff --git a/src/Magnum/Vk/PhysicalDevice.h b/src/Magnum/Vk/PhysicalDevice.h index fcc283f82..0898aef73 100644 --- a/src/Magnum/Vk/PhysicalDevice.h +++ b/src/Magnum/Vk/PhysicalDevice.h @@ -64,8 +64,8 @@ class MAGNUM_VK_EXPORT PhysicalDevice { PhysicalDevice(const VkPhysicalDevice& device): _physicalDevice(device) { - // Gather physical device memory properties - vkGetPhysicalDeviceMemoryProperties(_physicalDevice, &_deviceMemoryProperties); + _deviceMemoryProperties.memoryHeapCount = 0; + _deviceMemoryProperties.memoryTypeCount = 0; } /** @brief Destructor */