From afb8fe78746df002b3c424aed4bca3e8d2c4ab2d Mon Sep 17 00:00:00 2001 From: mklefrancois Date: Wed, 16 Jun 2021 11:47:31 +0200 Subject: [PATCH] Remove unnecessary extensions --- ray_tracing_gltf/main.cpp | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/ray_tracing_gltf/main.cpp b/ray_tracing_gltf/main.cpp index 3abd531..cbe81db 100644 --- a/ray_tracing_gltf/main.cpp +++ b/ray_tracing_gltf/main.cpp @@ -109,34 +109,27 @@ int main(int argc, char** argv) std::string(PROJECT_NAME), }; + // Vulkan required extensions + assert(glfwVulkanSupported() == 1); + uint32_t count{0}; + auto reqExtensions = glfwGetRequiredInstanceExtensions(&count); + // Requesting Vulkan extensions and layers - nvvk::ContextCreateInfo contextInfo(true); - contextInfo.setVersion(1, 2); - contextInfo.addInstanceLayer("VK_LAYER_LUNARG_monitor", true); - contextInfo.addInstanceExtension(VK_EXT_DEBUG_UTILS_EXTENSION_NAME, true); - contextInfo.addInstanceExtension(VK_KHR_SURFACE_EXTENSION_NAME); -#ifdef _WIN32 - contextInfo.addInstanceExtension(VK_KHR_WIN32_SURFACE_EXTENSION_NAME); -#else - contextInfo.addInstanceExtension(VK_KHR_XLIB_SURFACE_EXTENSION_NAME); - contextInfo.addInstanceExtension(VK_KHR_XCB_SURFACE_EXTENSION_NAME); -#endif - contextInfo.addInstanceExtension(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME); - contextInfo.addDeviceExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME); - contextInfo.addDeviceExtension(VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME); - contextInfo.addDeviceExtension(VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME); - contextInfo.addDeviceExtension(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME); - contextInfo.addDeviceExtension(VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME); + nvvk::ContextCreateInfo contextInfo; + contextInfo.setVersion(1, 2); // Using Vulkan 1.2 + for(uint32_t ext_id = 0; ext_id < count; ext_id++) // Adding required extensions (surface, win32, linux, ..) + contextInfo.addInstanceExtension(reqExtensions[ext_id]); + contextInfo.addInstanceExtension(VK_EXT_DEBUG_UTILS_EXTENSION_NAME, true); // Allow debug names + contextInfo.addDeviceExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME); // Enabling ability to present rendering // #VKRay: Activate the ray tracing extension VkPhysicalDeviceAccelerationStructureFeaturesKHR accelFeature{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR}; - contextInfo.addDeviceExtension(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME, false, &accelFeature); + contextInfo.addDeviceExtension(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME, false, &accelFeature); // To build acceleration structures VkPhysicalDeviceRayTracingPipelineFeaturesKHR rtPipelineFeature{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR}; - contextInfo.addDeviceExtension(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, false, &rtPipelineFeature); - contextInfo.addDeviceExtension(VK_KHR_MAINTENANCE3_EXTENSION_NAME); - contextInfo.addDeviceExtension(VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME); - contextInfo.addDeviceExtension(VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME); + contextInfo.addDeviceExtension(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, false, &rtPipelineFeature); // To use vkCmdTraceRaysKHR + contextInfo.addDeviceExtension(VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME); // Required by ray tracing pipeline contextInfo.addDeviceExtension(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME); + VkPhysicalDeviceShaderClockFeaturesKHR clockFeature{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR}; contextInfo.addDeviceExtension(VK_KHR_SHADER_CLOCK_EXTENSION_NAME, false, &clockFeature);