demos: Enabled the appropriate platform-specific WSI extension.
diff --git a/demos/cube.c b/demos/cube.c
index 49591ff..66e7245 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -2162,16 +2162,28 @@
     err = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, NULL);
     assert(!err);
 
-    VkBool32 swapchainExtFound = 0;
+    VkBool32 surfaceExtFound = 0;
+    VkBool32 platformSurfaceExtFound = 0;
     memset(extension_names, 0, sizeof(extension_names));
     instance_extensions = malloc(sizeof(VkExtensionProperties) * instance_extension_count);
     err = vkEnumerateInstanceExtensionProperties(NULL, &instance_extension_count, instance_extensions);
     assert(!err);
     for (uint32_t i = 0; i < instance_extension_count; i++) {
         if (!strcmp(VK_KHR_SURFACE_EXTENSION_NAME, instance_extensions[i].extensionName)) {
-            swapchainExtFound = 1;
+            surfaceExtFound = 1;
             extension_names[enabled_extension_count++] = VK_KHR_SURFACE_EXTENSION_NAME;
         }
+#ifdef _WIN32
+        if (!strcmp(VK_KHR_WIN32_SURFACE_EXTENSION_NAME, instance_extensions[i].extensionName)) {
+            platformSurfaceExtFound = 1;
+            extension_names[enabled_extension_count++] = VK_KHR_WIN32_SURFACE_EXTENSION_NAME;
+        }
+#else  // _WIN32
+        if (!strcmp(VK_KHR_XCB_SURFACE_EXTENSION_NAME, instance_extensions[i].extensionName)) {
+            platformSurfaceExtFound = 1;
+            extension_names[enabled_extension_count++] = VK_KHR_XCB_SURFACE_EXTENSION_NAME;
+        }
+#endif // _WIN32
         if (!strcmp(VK_DEBUG_REPORT_EXTENSION_NAME, instance_extensions[i].extensionName)) {
             if (demo->validate) {
                 extension_names[enabled_extension_count++] = VK_DEBUG_REPORT_EXTENSION_NAME;
@@ -2179,7 +2191,7 @@
         }
         assert(enabled_extension_count < 64);
     }
-    if (!swapchainExtFound) {
+    if (!surfaceExtFound) {
         ERR_EXIT("vkEnumerateInstanceExtensionProperties failed to find the "
                  VK_KHR_SURFACE_EXTENSION_NAME" extension.\n\nDo you have a compatible "
                  "Vulkan installable client driver (ICD) installed?\nPlease "
@@ -2187,6 +2199,18 @@
                  "information.\n",
                  "vkCreateInstance Failure");
     }
+    if (!platformSurfaceExtFound) {
+        ERR_EXIT("vkEnumerateInstanceExtensionProperties failed to find the "
+#ifdef _WIN32
+                 VK_KHR_WIN32_SURFACE_EXTENSION_NAME" extension.\n\nDo you have a compatible "
+#else  // _WIN32
+                 VK_KHR_XCB_SURFACE_EXTENSION_NAME" extension.\n\nDo you have a compatible "
+#endif // _WIN32
+                 "Vulkan installable client driver (ICD) installed?\nPlease "
+                 "look at the Getting Started guide for additional "
+                 "information.\n",
+                 "vkCreateInstance Failure");
+    }
     const VkApplicationInfo app = {
         .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO,
         .pNext = NULL,
@@ -2268,7 +2292,7 @@
               demo->gpu, NULL, &device_extension_count, NULL);
     assert(!err);
 
-    swapchainExtFound = 0;
+    VkBool32 swapchainExtFound = 0;
     enabled_extension_count = 0;
     memset(extension_names, 0, sizeof(extension_names));
     device_extensions = malloc(sizeof(VkExtensionProperties) * device_extension_count);
@@ -2465,13 +2489,13 @@
 
     // Get the list of VkFormat's that are supported:
     uint32_t formatCount;
-    err = demo->fpGetPhysicalDeviceSurfaceFormatsKHR(demo->device,
+    err = demo->fpGetPhysicalDeviceSurfaceFormatsKHR(demo->gpu,
                                     demo->surface,
                                     &formatCount, NULL);
     assert(!err);
     VkSurfaceFormatKHR *surfFormats =
         (VkSurfaceFormatKHR *)malloc(formatCount * sizeof(VkSurfaceFormatKHR));
-    err = demo->fpGetPhysicalDeviceSurfaceFormatsKHR(demo->device,
+    err = demo->fpGetPhysicalDeviceSurfaceFormatsKHR(demo->gpu,
                                     demo->surface,
                                     &formatCount, surfFormats);
     assert(!err);