summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineVulkan
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-10-05 16:12:33 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-10-05 16:12:33 +0000
commit33372bb90cd4c7d522c98fdc56fd65755373f9bb (patch)
treede271a225657f94fcb6fd275362c84ca4cbc7a22 /Graphics/GraphicsEngineVulkan
parentMerge branch 'master' (diff)
downloadDiligentCore-33372bb90cd4c7d522c98fdc56fd65755373f9bb.tar.gz
DiligentCore-33372bb90cd4c7d522c98fdc56fd65755373f9bb.zip
Fixed Mac/iOS build
Diffstat (limited to 'Graphics/GraphicsEngineVulkan')
-rw-r--r--Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp7
-rw-r--r--Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanLogicalDevice.cpp23
2 files changed, 29 insertions, 1 deletions
diff --git a/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp b/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp
index 80130696..7085765c 100644
--- a/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/BufferVkImpl.cpp
@@ -493,8 +493,9 @@ VkDeviceAddress BufferVkImpl::GetVkDeviceAddress() const
{
constexpr auto DeviceAddressFlags = BIND_RAY_TRACING;
- if (m_VulkanBuffer != VK_NULL_HANDLE && !!(m_Desc.BindFlags & DeviceAddressFlags))
+ if (m_VulkanBuffer != VK_NULL_HANDLE && (m_Desc.BindFlags & DeviceAddressFlags) != 0)
{
+#if DILIGENT_USE_VOLK
VkBufferDeviceAddressInfoKHR BufferInfo = {};
BufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR;
@@ -502,6 +503,10 @@ VkDeviceAddress BufferVkImpl::GetVkDeviceAddress() const
VkDeviceAddress Result = vkGetBufferDeviceAddressKHR(m_pDevice->GetLogicalDevice().GetVkDevice(), &BufferInfo);
VERIFY_EXPR(Result > 0);
return Result;
+#else
+ UNSUPPORTED("vkGetBufferDeviceAddressKHR is only available through Volk");
+ return VkDeviceAddress{};
+#endif
}
else
{
diff --git a/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanLogicalDevice.cpp b/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanLogicalDevice.cpp
index 87bfc450..f9e190d8 100644
--- a/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanLogicalDevice.cpp
+++ b/Graphics/GraphicsEngineVulkan/src/VulkanUtilities/VulkanLogicalDevice.cpp
@@ -269,8 +269,13 @@ QueryPoolWrapper VulkanLogicalDevice::CreateQueryPool(const VkQueryPoolCreateInf
AccelStructWrapper VulkanLogicalDevice::CreateAccelStruct(const VkAccelerationStructureCreateInfoKHR& CI, const char* DebugName) const
{
+#if DILIGENT_USE_VOLK
VERIFY_EXPR(CI.sType == VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR);
return CreateVulkanObject<VkAccelerationStructureKHR, VulkanHandleTypeId::AccelerationStructureKHR>(vkCreateAccelerationStructureKHR, CI, DebugName, "acceleration structure");
+#else
+ UNSUPPORTED("vkCreateAccelerationStructureKHR is only available through Volk");
+ return AccelStructWrapper{};
+#endif
}
VkCommandBuffer VulkanLogicalDevice::AllocateVkCommandBuffer(const VkCommandBufferAllocateInfo& AllocInfo, const char* DebugName) const
@@ -416,8 +421,12 @@ void VulkanLogicalDevice::ReleaseVulkanObject(QueryPoolWrapper&& QueryPool) cons
void VulkanLogicalDevice::ReleaseVulkanObject(AccelStructWrapper&& AccelStruct) const
{
+#if DILIGENT_USE_VOLK
vkDestroyAccelerationStructureKHR(m_VkDevice, AccelStruct.m_VkObject, m_VkAllocator);
AccelStruct.m_VkObject = VK_NULL_HANDLE;
+#else
+ UNSUPPORTED("vkDestroyAccelerationStructureKHR is only available through Volk");
+#endif
}
void VulkanLogicalDevice::FreeDescriptorSet(VkDescriptorPool Pool, VkDescriptorSet Set) const
@@ -446,7 +455,11 @@ VkMemoryRequirements VulkanLogicalDevice::GetImageMemoryRequirements(VkImage vkI
VkMemoryRequirements VulkanLogicalDevice::GetASMemoryRequirements(const VkAccelerationStructureMemoryRequirementsInfoKHR& Info) const
{
VkMemoryRequirements2 MemReqs = {};
+#if DILIGENT_USE_VOLK
vkGetAccelerationStructureMemoryRequirementsKHR(m_VkDevice, &Info, &MemReqs);
+#else
+ UNSUPPORTED("vkGetAccelerationStructureMemoryRequirementsKHR is only available through Volk");
+#endif
return MemReqs.memoryRequirements;
}
@@ -462,6 +475,7 @@ VkResult VulkanLogicalDevice::BindImageMemory(VkImage image, VkDeviceMemory memo
VkResult VulkanLogicalDevice::BindASMemory(VkAccelerationStructureKHR AS, VkDeviceMemory memory, VkDeviceSize memoryOffset) const
{
+#if DILIGENT_USE_VOLK
VkBindAccelerationStructureMemoryInfoKHR Info = {};
Info.sType = VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR;
@@ -472,16 +486,25 @@ VkResult VulkanLogicalDevice::BindASMemory(VkAccelerationStructureKHR AS, VkDevi
Info.accelerationStructure = AS;
return vkBindAccelerationStructureMemoryKHR(m_VkDevice, 1, &Info);
+#else
+ UNSUPPORTED("vkBindAccelerationStructureMemoryKHR is only available through Volk");
+ return VK_ERROR_FEATURE_NOT_PRESENT;
+#endif
}
VkDeviceAddress VulkanLogicalDevice::GetAccelerationStructureDeviceAddress(VkAccelerationStructureKHR AS) const
{
+#if DILIGENT_USE_VOLK
VkAccelerationStructureDeviceAddressInfoKHR Info = {};
Info.sType = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR;
Info.accelerationStructure = AS;
return vkGetAccelerationStructureDeviceAddressKHR(m_VkDevice, &Info);
+#else
+ UNSUPPORTED("vkGetAccelerationStructureDeviceAddressKHR is only available through Volk");
+ return VK_ERROR_FEATURE_NOT_PRESENT;
+#endif
}
VkResult VulkanLogicalDevice::MapMemory(VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const