summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-09-10 22:38:48 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-09-10 22:38:48 +0000
commit35aacd4de5326dac3d954ce3338281e5838fb0a0 (patch)
tree877b1ad33245fcd294a5f4f23b8c70e65bae970b /Graphics/GraphicsEngineVulkan
parentFixed linux build error (diff)
downloadDiligentCore-35aacd4de5326dac3d954ce3338281e5838fb0a0.tar.gz
DiligentCore-35aacd4de5326dac3d954ce3338281e5838fb0a0.zip
Few final updates to mesh shader implementation
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/CMakeLists.txt24
-rw-r--r--Graphics/GraphicsEngineVulkan/include/VulkanUtilities/VulkanPhysicalDevice.hpp14
-rw-r--r--Graphics/GraphicsEngineVulkan/src/EngineFactoryVk.cpp2
-rw-r--r--Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanPhysicalDevice.cpp10
4 files changed, 21 insertions, 29 deletions
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<VulkanPhysicalDevice> Create(VkPhysicalDevice vkDevice,
- std::shared_ptr<VulkanInstance> Instance);
+ static std::unique_ptr<VulkanPhysicalDevice> 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<VulkanInstance> 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<VkQueueFamilyProperties> m_QueueFamilyProperties;
std::vector<VkExtensionProperties> 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<VkAllocationCallbacks*>(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> VulkanPhysicalDevice::Create(VkPhysicalDevice vkDevice,
- std::shared_ptr<VulkanInstance> Instance)
+std::unique_ptr<VulkanPhysicalDevice> VulkanPhysicalDevice::Create(VkPhysicalDevice vkDevice,
+ const VulkanInstance& Instance)
{
auto* PhysicalDevice = new VulkanPhysicalDevice{vkDevice, Instance};
return std::unique_ptr<VulkanPhysicalDevice>{PhysicalDevice};
}
-VulkanPhysicalDevice::VulkanPhysicalDevice(VkPhysicalDevice vkDevice,
- std::shared_ptr<VulkanInstance> 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};