From 1b967c4240675c4a3aa6e630c1204d0d34294887 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Sun, 27 Nov 2022 00:50:20 +0100
Subject: [PATCH] Cleanup required features and adjusted context allocator
 create flags

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 projects/rtx_ambient_occlusion/src/main.cpp | 11 +----------
 src/vkcv/Context.cpp                        | 12 +++++++++++-
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/projects/rtx_ambient_occlusion/src/main.cpp b/projects/rtx_ambient_occlusion/src/main.cpp
index 3136e92c..0992d457 100644
--- a/projects/rtx_ambient_occlusion/src/main.cpp
+++ b/projects/rtx_ambient_occlusion/src/main.cpp
@@ -12,17 +12,9 @@ int main(int argc, const char** argv) {
 	const std::string applicationName = "RTX Ambient Occlusion";
 	
 	vkcv::Features features;
-	features.requireExtension(VK_KHR_MAINTENANCE3_EXTENSION_NAME);
 	features.requireExtension(VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME);
-	features.requireExtension(VK_KHR_SPIRV_1_4_EXTENSION_NAME);
-	features.requireExtension(VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME);
 	features.requireExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
 	
-	features.requireExtensionFeature<vk::PhysicalDeviceDescriptorIndexingFeatures>(
-			VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME,
-			[](vk::PhysicalDeviceDescriptorIndexingFeatures& features) {}
-	);
-	
 	features.requireExtensionFeature<vk::PhysicalDeviceBufferDeviceAddressFeatures>(
 			VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME,
 			[](vk::PhysicalDeviceBufferDeviceAddressFeatures& features) {
@@ -54,8 +46,7 @@ int main(int argc, const char** argv) {
 			applicationName,
 			VK_MAKE_VERSION(0, 0, 1),
 			{ vk::QueueFlagBits::eGraphics ,vk::QueueFlagBits::eCompute , vk::QueueFlagBits::eTransfer },
-			features,
-			{ VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME }
+			features
 	);
 
 	vkcv::rtx::ASManager asManager(&core);
diff --git a/src/vkcv/Context.cpp b/src/vkcv/Context.cpp
index 43bf5de2..9a3ef1ff 100644
--- a/src/vkcv/Context.cpp
+++ b/src/vkcv/Context.cpp
@@ -465,13 +465,23 @@ namespace vkcv {
 					return features.deviceCoherentMemory;
 				}
 		);
+		
+		const bool bufferDeviceAddress = featureManager.checkFeatures<vk::PhysicalDeviceBufferDeviceAddressFeatures>(
+				vk::StructureType::ePhysicalDeviceBufferDeviceAddressFeatures,
+				[](const vk::PhysicalDeviceBufferDeviceAddressFeatures &features) {
+					return features.bufferDeviceAddress;
+				}
+		);
 
 		vma::AllocatorCreateFlags vmaFlags;
+		
 		if (coherentDeviceMemory) {
 			vmaFlags |= vma::AllocatorCreateFlagBits::eAmdDeviceCoherentMemory;
 		}
 		
-		vmaFlags |= vma::AllocatorCreateFlagBits::eBufferDeviceAddress;
+		if (bufferDeviceAddress) {
+			vmaFlags |= vma::AllocatorCreateFlagBits::eBufferDeviceAddress;
+		}
 		
 		const vma::AllocatorCreateInfo allocatorCreateInfo(
 				vmaFlags,
-- 
GitLab