From 35aacd4de5326dac3d954ce3338281e5838fb0a0 Mon Sep 17 00:00:00 2001 From: assiduous Date: Thu, 10 Sep 2020 15:38:48 -0700 Subject: Few final updates to mesh shader implementation --- Graphics/GraphicsEngineVulkan/CMakeLists.txt | 24 ++++++++++------------ .../VulkanUtilities/VulkanPhysicalDevice.hpp | 14 ++++--------- .../GraphicsEngineVulkan/src/EngineFactoryVk.cpp | 2 +- .../src/VulkanUtilities/VulkanPhysicalDevice.cpp | 10 ++++----- 4 files changed, 21 insertions(+), 29 deletions(-) (limited to 'Graphics/GraphicsEngineVulkan') diff --git a/Graphics/GraphicsEngineVulkan/CMakeLists.txt b/Graphics/GraphicsEngineVulkan/CMakeLists.txt index 497a4e0b..2e9458f7 100644 --- a/Graphics/GraphicsEngineVulkan/CMakeLists.txt +++ b/Graphics/GraphicsEngineVulkan/CMakeLists.txt @@ -193,19 +193,17 @@ endif() # DXC for D3D12 can compile only to DXIL. if(PLATFORM_WIN32) # find Vulkan SDK - if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.7") - find_package(Vulkan) - if(Vulkan_FOUND) - get_filename_component(VulkanSDKPath ${Vulkan_LIBRARY} DIRECTORY) - set(VulkanSDKPath "${VulkanSDKPath}/..") - if(NOT EXISTS "${VulkanSDKPath}") - message(STATUS "can't get Vulkan SDK path") - endif() - if (${CMAKE_SIZEOF_VOID_P} EQUAL 8) - set(DXC_SPIRV_PATH "${VulkanSDKPath}/Bin/dxcompiler.dll") - else() - set(DXC_SPIRV_PATH "${VulkanSDKPath}/Bin32/dxcompiler.dll") - endif() + find_package(Vulkan) + if(Vulkan_FOUND) + get_filename_component(VulkanSDKPath ${Vulkan_LIBRARY} DIRECTORY) + set(VulkanSDKPath "${VulkanSDKPath}/..") + if(NOT EXISTS "${VulkanSDKPath}") + message(STATUS "can't get Vulkan SDK path") + endif() + if (${CMAKE_SIZEOF_VOID_P} EQUAL 8) + set(DXC_SPIRV_PATH "${VulkanSDKPath}/Bin/dxcompiler.dll") + else() + set(DXC_SPIRV_PATH "${VulkanSDKPath}/Bin32/dxcompiler.dll") endif() endif() # Try to find Vulkan SDK from environment variable diff --git a/Graphics/GraphicsEngineVulkan/include/VulkanUtilities/VulkanPhysicalDevice.hpp b/Graphics/GraphicsEngineVulkan/include/VulkanUtilities/VulkanPhysicalDevice.hpp index 57631b91..215feb1a 100644 --- a/Graphics/GraphicsEngineVulkan/include/VulkanUtilities/VulkanPhysicalDevice.hpp +++ b/Graphics/GraphicsEngineVulkan/include/VulkanUtilities/VulkanPhysicalDevice.hpp @@ -42,10 +42,6 @@ public: VkPhysicalDeviceMeshShaderFeaturesNV MeshShader = {}; }; - struct ExtensionProperties - { - }; - public: // clang-format off VulkanPhysicalDevice (const VulkanPhysicalDevice&) = delete; @@ -54,8 +50,8 @@ public: VulkanPhysicalDevice& operator = (VulkanPhysicalDevice&&) = delete; // clang-format on - static std::unique_ptr Create(VkPhysicalDevice vkDevice, - std::shared_ptr Instance); + static std::unique_ptr Create(VkPhysicalDevice vkDevice, + const VulkanInstance& Instance); // clang-format off uint32_t FindQueueFamily (VkQueueFlags QueueFlags) const; @@ -70,20 +66,18 @@ public: const VkPhysicalDeviceProperties& GetProperties() const { return m_Properties; } const VkPhysicalDeviceFeatures& GetFeatures() const { return m_Features; } - const ExtensionProperties& GetExtProperties() const { return m_ExtProperties; } const ExtensionFeatures& GetExtFeatures() const { return m_ExtFeatures; } const VkPhysicalDeviceMemoryProperties& GetMemoryProperties() const { return m_MemoryProperties; } VkFormatProperties GetPhysicalDeviceFormatProperties(VkFormat imageFormat) const; private: - VulkanPhysicalDevice(VkPhysicalDevice vkDevice, - std::shared_ptr Instance); + VulkanPhysicalDevice(VkPhysicalDevice vkDevice, + const VulkanInstance& Instance); const VkPhysicalDevice m_VkDevice; VkPhysicalDeviceProperties m_Properties = {}; VkPhysicalDeviceFeatures m_Features = {}; VkPhysicalDeviceMemoryProperties m_MemoryProperties = {}; - ExtensionProperties m_ExtProperties = {}; ExtensionFeatures m_ExtFeatures = {}; std::vector m_QueueFamilyProperties; std::vector m_SupportedExtensions; diff --git a/Graphics/GraphicsEngineVulkan/src/EngineFactoryVk.cpp b/Graphics/GraphicsEngineVulkan/src/EngineFactoryVk.cpp index f0dafcff..da0d512c 100644 --- a/Graphics/GraphicsEngineVulkan/src/EngineFactoryVk.cpp +++ b/Graphics/GraphicsEngineVulkan/src/EngineFactoryVk.cpp @@ -144,7 +144,7 @@ void EngineFactoryVkImpl::CreateDeviceAndContextsVk(const EngineVkCreateInfo& _E reinterpret_cast(EngineCI.pVkAllocator)); auto vkDevice = Instance->SelectPhysicalDevice(EngineCI.AdapterId); - auto PhysicalDevice = VulkanUtilities::VulkanPhysicalDevice::Create(vkDevice, Instance); + auto PhysicalDevice = VulkanUtilities::VulkanPhysicalDevice::Create(vkDevice, *Instance); const auto& PhysicalDeviceFeatures = PhysicalDevice->GetFeatures(); // If an implementation exposes any queue family that supports graphics operations, diff --git a/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanPhysicalDevice.cpp b/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanPhysicalDevice.cpp index 366b539d..a33e99e7 100644 --- a/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanPhysicalDevice.cpp +++ b/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanPhysicalDevice.cpp @@ -33,15 +33,15 @@ namespace VulkanUtilities { -std::unique_ptr VulkanPhysicalDevice::Create(VkPhysicalDevice vkDevice, - std::shared_ptr Instance) +std::unique_ptr VulkanPhysicalDevice::Create(VkPhysicalDevice vkDevice, + const VulkanInstance& Instance) { auto* PhysicalDevice = new VulkanPhysicalDevice{vkDevice, Instance}; return std::unique_ptr{PhysicalDevice}; } -VulkanPhysicalDevice::VulkanPhysicalDevice(VkPhysicalDevice vkDevice, - std::shared_ptr Instance) : +VulkanPhysicalDevice::VulkanPhysicalDevice(VkPhysicalDevice vkDevice, + const VulkanInstance& Instance) : m_VkDevice{vkDevice} { VERIFY_EXPR(m_VkDevice != VK_NULL_HANDLE); @@ -69,7 +69,7 @@ VulkanPhysicalDevice::VulkanPhysicalDevice(VkPhysicalDevice vkDev } #ifdef VK_KHR_get_physical_device_properties2 - if (Instance->IsExtensionEnabled(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) + if (Instance.IsExtensionEnabled(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) { VkPhysicalDeviceFeatures2 Feats2 = {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2}; VkPhysicalDeviceProperties2 Props2 = {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2}; -- cgit v1.2.3