Don't enable extensions that are promoted to core Vulkan 1.1

Add PrintEnabledFeatures to print which features and extensions are enabled on console.
diff --git a/src/VulkanSample.cpp b/src/VulkanSample.cpp
index 819bd12..460c5c3 100644
--- a/src/VulkanSample.cpp
+++ b/src/VulkanSample.cpp
@@ -1130,6 +1130,21 @@
 #endif

 }

 

+static void PrintEnabledFeatures()

+{

+    printf("Validation layer: %d\n", g_EnableValidationLayer ? 1 : 0);

+    printf("Sparse binding: %d\n", g_SparseBindingEnabled ? 1 : 0);

+    if(GetVulkanApiVersion() == VK_API_VERSION_1_0)

+    {

+        printf("VK_KHR_get_memory_requirements2: %d\n", VK_KHR_get_memory_requirements2_enabled ? 1 : 0);

+        printf("VK_KHR_get_physical_device_properties2: %d\n", VK_KHR_get_physical_device_properties2_enabled ? 1 : 0);

+        printf("VK_KHR_dedicated_allocation: %d\n", VK_KHR_dedicated_allocation_enabled ? 1 : 0);

+        printf("VK_KHR_bind_memory2: %d\n", VK_KHR_bind_memory2_enabled ? 1 : 0);

+    }

+    printf("VK_EXT_memory_budget: %d\n", VK_EXT_memory_budget_enabled ? 1 : 0);

+    printf("VK_AMD_device_coherent_memory: %d\n", VK_AMD_device_coherent_memory_enabled ? 1 : 0);

+}

+

 void SetAllocatorCreateInfo(VmaAllocatorCreateInfo& outInfo)

 {

     outInfo = {};

@@ -1226,8 +1241,11 @@
     {

         if(strcmp(extensionProperties.extensionName, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME) == 0)

         {

-            enabledInstanceExtensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);

-            VK_KHR_get_physical_device_properties2_enabled = true;

+            if(GetVulkanApiVersion() == VK_API_VERSION_1_0)

+            {   

+                enabledInstanceExtensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME);

+                VK_KHR_get_physical_device_properties2_enabled = true;

+            }

         }

     }

 

@@ -1245,6 +1263,15 @@
     instInfo.enabledLayerCount = static_cast<uint32_t>(instanceLayers.size());

     instInfo.ppEnabledLayerNames = instanceLayers.data();

 

+    printf("Vulkan API version: ");

+    switch(appInfo.apiVersion)

+    {

+    case VK_API_VERSION_1_0: printf("1.0\n"); break;

+    case VK_API_VERSION_1_1: printf("1.1\n"); break;

+    case VK_API_VERSION_1_2: printf("1.2\n"); break;

+    default: assert(0);

+    }

+

     ERR_GUARD_VULKAN( vkCreateInstance(&instInfo, g_Allocs, &g_hVulkanInstance) );

 

     // Create VkSurfaceKHR.

@@ -1285,11 +1312,26 @@
     for(uint32_t i = 0; i < physicalDeviceExtensionPropertyCount; ++i)

     {

         if(strcmp(physicalDeviceExtensionProperties[i].extensionName, VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME) == 0)

-            VK_KHR_get_memory_requirements2_enabled = true;

+        {

+            if(GetVulkanApiVersion() == VK_API_VERSION_1_0)

+            {

+                VK_KHR_get_memory_requirements2_enabled = true;

+            }

+        }

         else if(strcmp(physicalDeviceExtensionProperties[i].extensionName, VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME) == 0)

-            VK_KHR_dedicated_allocation_enabled = true;

+        {

+            if(GetVulkanApiVersion() == VK_API_VERSION_1_0)

+            {

+                VK_KHR_dedicated_allocation_enabled = true;

+            }

+        }

         else if(strcmp(physicalDeviceExtensionProperties[i].extensionName, VK_KHR_BIND_MEMORY_2_EXTENSION_NAME) == 0)

-            VK_KHR_bind_memory2_enabled = true;

+        {

+            if(GetVulkanApiVersion() == VK_API_VERSION_1_0)

+            {

+                VK_KHR_bind_memory2_enabled = true;

+            }

+        }

         else if(strcmp(physicalDeviceExtensionProperties[i].extensionName, VK_EXT_MEMORY_BUDGET_EXTENSION_NAME) == 0)

             VK_EXT_memory_budget_enabled = true;

         else if(strcmp(physicalDeviceExtensionProperties[i].extensionName, VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME) == 0)

@@ -1432,6 +1474,8 @@
     SetAllocatorCreateInfo(allocatorInfo);

     ERR_GUARD_VULKAN( vmaCreateAllocator(&allocatorInfo, &g_hAllocator) );

 

+    PrintEnabledFeatures();

+

     // Retrieve queues (don't need to be destroyed).

 

     vkGetDeviceQueue(g_hDevice, g_GraphicsQueueFamilyIndex, 0, &g_hGraphicsQueue);