From 16818fa7a3c949ec0a6c34dc4a3a27b762836dd6 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 9 Aug 2016 13:51:56 +0200 Subject: [PATCH] Vulkan: Simplify GetPhysicalDevice* functions if possible Former-commit-id: b988fa0aa44cd6a4901f2c3a186be36f7af4fa5b [formerly 078ffb29db688a5be9073a878c9097c1dd8d5b90] [formerly 4ec47c87662b2a5e9ce6552a136028fd38926137 [formerly 608a8dfadf1d4a28c83eaf7e8c7f1d68367ed311]] Former-commit-id: a648892c9de765f4ad831502650389ab134e932c [formerly 40666003fc56c12591937aae0de884904fe0a6cb] Former-commit-id: 6517c78c107dcded7b5a3dbcec860f1a3d74936d --- include/Nazara/Vulkan/VkInstance.hpp | 8 ++++---- include/Nazara/Vulkan/VkInstance.inl | 28 ++++++++++++++++++++-------- src/Nazara/Vulkan/Vulkan.cpp | 6 +++--- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/include/Nazara/Vulkan/VkInstance.hpp b/include/Nazara/Vulkan/VkInstance.hpp index ded2b0ef7..7b36ff14a 100644 --- a/include/Nazara/Vulkan/VkInstance.hpp +++ b/include/Nazara/Vulkan/VkInstance.hpp @@ -34,11 +34,11 @@ namespace Nz inline PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* name); - inline void GetPhysicalDeviceFeatures(VkPhysicalDevice device, VkPhysicalDeviceFeatures* features); - inline void GetPhysicalDeviceFormatProperties(VkPhysicalDevice device, VkFormat format, VkFormatProperties* formatProperties); + inline VkPhysicalDeviceFeatures GetPhysicalDeviceFeatures(VkPhysicalDevice device); + inline VkFormatProperties GetPhysicalDeviceFormatProperties(VkPhysicalDevice device, VkFormat format); inline bool GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* imageFormatProperties); - inline void GetPhysicalDeviceMemoryProperties(VkPhysicalDevice device, VkPhysicalDeviceMemoryProperties* properties); - inline void GetPhysicalDeviceProperties(VkPhysicalDevice device, VkPhysicalDeviceProperties* properties); + inline VkPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties(VkPhysicalDevice device); + inline VkPhysicalDeviceProperties GetPhysicalDeviceProperties(VkPhysicalDevice device); bool GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice device, std::vector* queueFamilyProperties); inline VkResult GetLastErrorCode() const; diff --git a/include/Nazara/Vulkan/VkInstance.inl b/include/Nazara/Vulkan/VkInstance.inl index bea7164fb..a8793ece7 100644 --- a/include/Nazara/Vulkan/VkInstance.inl +++ b/include/Nazara/Vulkan/VkInstance.inl @@ -85,14 +85,20 @@ namespace Nz return m_instance; } - inline void Instance::GetPhysicalDeviceFeatures(VkPhysicalDevice device, VkPhysicalDeviceFeatures* features) + inline VkPhysicalDeviceFeatures Instance::GetPhysicalDeviceFeatures(VkPhysicalDevice device) { - return vkGetPhysicalDeviceFeatures(device, features); + VkPhysicalDeviceFeatures features; + vkGetPhysicalDeviceFeatures(device, &features); + + return features; } - inline void Instance::GetPhysicalDeviceFormatProperties(VkPhysicalDevice device, VkFormat format, VkFormatProperties* formatProperties) + inline VkFormatProperties Instance::GetPhysicalDeviceFormatProperties(VkPhysicalDevice device, VkFormat format) { - return vkGetPhysicalDeviceFormatProperties(device, format, formatProperties); + VkFormatProperties formatProperties; + vkGetPhysicalDeviceFormatProperties(device, format, &formatProperties); + + return formatProperties; } inline bool Instance::GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* imageFormatProperties) @@ -107,14 +113,20 @@ namespace Nz return true; } - inline void Instance::GetPhysicalDeviceMemoryProperties(VkPhysicalDevice device, VkPhysicalDeviceMemoryProperties* memoryProperties) + inline VkPhysicalDeviceMemoryProperties Instance::GetPhysicalDeviceMemoryProperties(VkPhysicalDevice device) { - return vkGetPhysicalDeviceMemoryProperties(device, memoryProperties); + VkPhysicalDeviceMemoryProperties memoryProperties; + vkGetPhysicalDeviceMemoryProperties(device, &memoryProperties); + + return memoryProperties; } - inline void Instance::GetPhysicalDeviceProperties(VkPhysicalDevice device, VkPhysicalDeviceProperties* properties) + inline VkPhysicalDeviceProperties Instance::GetPhysicalDeviceProperties(VkPhysicalDevice device) { - return vkGetPhysicalDeviceProperties(device, properties); + VkPhysicalDeviceProperties properties; + vkGetPhysicalDeviceProperties(device, &properties); + + return properties; } inline PFN_vkVoidFunction Instance::GetProcAddr(const char* name) diff --git a/src/Nazara/Vulkan/Vulkan.cpp b/src/Nazara/Vulkan/Vulkan.cpp index 6af41d9b2..599728b35 100644 --- a/src/Nazara/Vulkan/Vulkan.cpp +++ b/src/Nazara/Vulkan/Vulkan.cpp @@ -213,9 +213,9 @@ namespace Nz deviceInfo.device = physDevice; - s_instance.GetPhysicalDeviceFeatures(physDevice, &deviceInfo.features); - s_instance.GetPhysicalDeviceMemoryProperties(physDevice, &deviceInfo.memoryProperties); - s_instance.GetPhysicalDeviceProperties(physDevice, &deviceInfo.properties); + deviceInfo.features = s_instance.GetPhysicalDeviceFeatures(physDevice); + deviceInfo.memoryProperties = s_instance.GetPhysicalDeviceMemoryProperties(physDevice); + deviceInfo.properties = s_instance.GetPhysicalDeviceProperties(physDevice); s_physDevices.emplace_back(std::move(deviceInfo)); }