demos: Update demos and tests to use vkGetGlobalExtensionInfo to check extensions
diff --git a/demos/cube.c b/demos/cube.c
index 8927a0a..3516e00 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -1651,7 +1651,25 @@
 
 static void demo_init_vk(struct demo *demo)
 {
-    // TODO : Should query count w/ GetGlobalExtensionInfo, then enable via CreateInstance
+    VkResult err;
+    // Extensions to enable
+    const char *ext_names[] = {
+        "VK_WSI_X11",
+    };
+    size_t extSize = sizeof(uint32_t);
+    uint32_t extCount = 0;
+    err = vkGetGlobalExtensionInfo(VK_EXTENSION_INFO_TYPE_COUNT, 0, &extSize, &extCount);
+    assert(!err);
+
+    VkExtensionProperties extProp;
+    extSize = sizeof(VkExtensionProperties);
+    bool32_t extFound = 0;
+    for (uint32_t i = 0; i < extCount; i++) {
+        err = vkGetGlobalExtensionInfo(VK_EXTENSION_INFO_TYPE_PROPERTIES, i, &extSize, &extProp);
+        if (!strcmp(ext_names[0], extProp.extName))
+            extFound = 1;
+    }
+    assert(extFound);
     const VkApplicationInfo app = {
         .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
         .pNext = NULL,
@@ -1666,8 +1684,8 @@
         .pNext = NULL,
         .pAppInfo = &app,
         .pAllocCb = NULL,
-        .extensionCount = 0,
-        .ppEnabledExtensionNames = NULL,
+        .extensionCount = 1,
+        .ppEnabledExtensionNames = ext_names,
     };
     const VK_WSI_X11_CONNECTION_INFO connection = {
         .pConnection = demo->connection,
@@ -1679,20 +1697,15 @@
         .queueCount = 1,
     };
     
-    const char *ext_names[] = {
-        "VK_WSI_X11",
-    };
-
     const VkDeviceCreateInfo device = {
         .sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
         .pNext = NULL,
         .queueRecordCount = 1,
         .pRequestedQueues = &queue,
-        .extensionCount = 1, // TODO : Should query count w/ GetGlobalExtensionInfo
+        .extensionCount = 1,
         .ppEnabledExtensionNames = ext_names,
         .flags = VK_DEVICE_CREATE_VALIDATION_BIT,
     };
-    VkResult err;
     uint32_t gpu_count;
     uint32_t i;
     size_t data_size;
diff --git a/demos/tri.c b/demos/tri.c
index 847e273..f8f3edd 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -1192,7 +1192,25 @@
 
 static void demo_init_vk(struct demo *demo)
 {
-    // TODO : Should query count w/ GetGlobalExtensionInfo, then enable via CreateInstance
+    VkResult err;
+    // Extensions to enable
+    const char *ext_names[] = {
+        "VK_WSI_X11",
+    };
+    size_t extSize = sizeof(uint32_t);
+    uint32_t extCount = 0;
+    err = vkGetGlobalExtensionInfo(VK_EXTENSION_INFO_TYPE_COUNT, 0, &extSize, &extCount);
+    assert(!err);
+
+    VkExtensionProperties extProp;
+    extSize = sizeof(VkExtensionProperties);
+    bool32_t extFound = 0;
+    for (uint32_t i = 0; i < extCount; i++) {
+        err = vkGetGlobalExtensionInfo(VK_EXTENSION_INFO_TYPE_PROPERTIES, i, &extSize, &extProp);
+        if (!strcmp(ext_names[0], extProp.extName))
+            extFound = 1;
+    }
+    assert(extFound);
     const VkApplicationInfo app = {
         .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
         .pNext = NULL,
@@ -1207,8 +1225,8 @@
         .pNext = NULL,
         .pAppInfo = &app,
         .pAllocCb = NULL,
-        .extensionCount = 0,
-        .ppEnabledExtensionNames = NULL,
+        .extensionCount = 1,
+        .ppEnabledExtensionNames = ext_names,
     };
     const VK_WSI_X11_CONNECTION_INFO connection = {
         .pConnection = demo->connection,
@@ -1219,19 +1237,15 @@
         .queueNodeIndex = 0,
         .queueCount = 1,
     };
-    const char *ext_names[] = {
-        "VK_WSI_X11",
-    };
     const VkDeviceCreateInfo device = {
         .sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
         .pNext = NULL,
         .queueRecordCount = 1,
         .pRequestedQueues = &queue,
-        .extensionCount = 1, // TODO : Should query count w/ GetGlobalExtensionInfo
+        .extensionCount = 1,
         .ppEnabledExtensionNames = ext_names,
         .flags = VK_DEVICE_CREATE_VALIDATION_BIT,
     };
-    VkResult err;
     uint32_t gpu_count;
     uint32_t i;
     size_t data_size;
diff --git a/demos/vulkaninfo.c b/demos/vulkaninfo.c
index 2fc76eb..2353ff2 100644
--- a/demos/vulkaninfo.c
+++ b/demos/vulkaninfo.c
@@ -364,22 +364,27 @@
 
 static void app_gpu_init_extensions(struct app_gpu *gpu)
 {
-    //VkResult err;
-    uint32_t i;
-    // TODO : Should query count w/ GetGlobalExtensionInfo,
-    //  Then dynamically set extensions based on returned count
-
+    VkResult err;
+    // Extensions to enable
     static char *known_extensions[] = {
         "VK_WSI_X11",
     };
+    size_t extSize = sizeof(uint32_t);
+    uint32_t extCount = 0;
+    err = vkGetGlobalExtensionInfo(VK_EXTENSION_INFO_TYPE_COUNT, 0, &extSize, &extCount);
+    assert(!err);
 
-    for (i = 0; i < ARRAY_SIZE(known_extensions); i++) {
-/*
-        err = vkGetExtensionSupport(gpu->obj, known_extensions[i]);
-        if (!err)
-*/
-        gpu->extension_count++;
+    VkExtensionProperties extProp;
+    extSize = sizeof(VkExtensionProperties);
+    bool32_t extFound = 0; // TODO : Need to enhance this if/when we enable multiple extensions
+    for (uint32_t i = 0; i < extCount; i++) {
+        err = vkGetGlobalExtensionInfo(VK_EXTENSION_INFO_TYPE_PROPERTIES, i, &extSize, &extProp);
+        if (!strcmp(known_extensions[0], extProp.extName)) {
+            extFound = 1;
+            gpu->extension_count++;
+        }
     }
+    assert(extFound);
 
     gpu->extensions =
             malloc(sizeof(gpu->extensions[0]) * gpu->extension_count);
@@ -387,11 +392,9 @@
         ERR_EXIT(VK_ERROR_OUT_OF_HOST_MEMORY);
 
     gpu->extension_count = 0;
+    uint32_t i;
     for (i = 0; i < ARRAY_SIZE(known_extensions); i++) {
-/*
-        err = vkGetExtensionSupport(gpu->obj, known_extensions[i]);
-        if (!err)
-*/
+        // known_extensions were validated above so copy them over here
         gpu->extensions[gpu->extension_count++] = known_extensions[i];
     }
 }
diff --git a/tests/vktestbinding.cpp b/tests/vktestbinding.cpp
index cce7fbb..c41761b 100644
--- a/tests/vktestbinding.cpp
+++ b/tests/vktestbinding.cpp
@@ -148,17 +148,25 @@
 
 std::vector<const char *> PhysicalGpu::extensions() const
 {
-    // TODO : Should fill this out using GetGlobalExtensionInfo to query count
-    //   Then fill in extensions based on that count
+    // Extensions to enable
     static const char *known_exts[] = {
         "VK_WSI_X11",
     };
-
     std::vector<const char *> exts;
-    for (int i = 0; i < sizeof(known_exts) / sizeof(known_exts[0]); i++) {
-//        VkResult err = vkGetExtensionSupport(gpu_, known_exts[i]);
-//        if (err == VK_SUCCESS)
-        exts.push_back(known_exts[i]);
+    size_t extSize = sizeof(uint32_t);
+    uint32_t extCount = 0;
+    if (!EXPECT(vkGetGlobalExtensionInfo(VK_EXTENSION_INFO_TYPE_COUNT, 0, &extSize, &extCount) == VK_SUCCESS))
+        return exts;
+
+    VkExtensionProperties extProp;
+    extSize = sizeof(VkExtensionProperties);
+    // TODO : Need to update this if/when we have more than 1 extension to enable
+    for (uint32_t i = 0; i < extCount; i++) {
+        if (!EXPECT(vkGetGlobalExtensionInfo(VK_EXTENSION_INFO_TYPE_PROPERTIES, i, &extSize, &extProp) == VK_SUCCESS))
+            return exts;
+
+        if (!strcmp(known_exts[0], extProp.extName))
+            exts.push_back(known_exts[i]);
     }
 
     return exts;