diff --git a/demos/cube.c b/demos/cube.c
index 70aeb5b..272b3e5 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -1905,11 +1905,11 @@
  * Return 1 (true) if all layer names specified in check_names
  * can be found in given layer properties.
  */
-static bool32_t demo_check_layers(uint32_t check_count, char **check_names,
+static VkBool32 demo_check_layers(uint32_t check_count, char **check_names,
                               uint32_t layer_count, VkLayerProperties *layers)
 {
     for (uint32_t i = 0; i < check_count; i++) {
-        bool32_t found = 0;
+        VkBool32 found = 0;
         for (uint32_t j = 0; j < layer_count; j++) {
             if (!strcmp(check_names[i], layers[j].layerName)) {
                 found = 1;
@@ -1944,7 +1944,7 @@
     };
 
     /* Look for validation layers */
-    bool32_t validation_found = 0;
+    VkBool32 validation_found = 0;
     err = vkGetGlobalLayerProperties(&instance_layer_count, NULL);
     assert(!err);
 
@@ -1968,7 +1968,7 @@
     err = vkGetGlobalExtensionProperties(NULL, &instance_extension_count, NULL);
     assert(!err);
 
-    bool32_t WSIextFound = 0;
+    VkBool32 WSIextFound = 0;
     memset(extension_names, 0, sizeof(extension_names));
     instance_extensions = malloc(sizeof(VkExtensionProperties) * instance_extension_count);
     err = vkGetGlobalExtensionProperties(NULL, &instance_extension_count, instance_extensions);
diff --git a/demos/tri.c b/demos/tri.c
index 3a5378a..8297135 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -1437,7 +1437,7 @@
     uint32_t enabled_layer_count = 0;
 
     /* Look for validation layers */
-    bool32_t validation_found = 0;
+    VkBool32 validation_found = 0;
     err = vkGetGlobalLayerProperties(&instance_layer_count, NULL);
     assert(!err);
 
@@ -1463,7 +1463,7 @@
     err = vkGetGlobalExtensionProperties(NULL, &instance_extension_count, NULL);
     assert(!err);
 
-    bool32_t WSIextFound = 0;
+    VkBool32 WSIextFound = 0;
     memset(extension_names, 0, sizeof(extension_names));
     instance_extensions = malloc(sizeof(VkExtensionProperties) * instance_extension_count);
     err = vkGetGlobalExtensionProperties(NULL, &instance_extension_count, instance_extensions);
diff --git a/demos/vulkaninfo.c b/demos/vulkaninfo.c
index 9637ddb..15e9c8f 100644
--- a/demos/vulkaninfo.c
+++ b/demos/vulkaninfo.c
@@ -483,7 +483,7 @@
     uint32_t enabled_extension_count = 0;
 
     for (uint32_t i = 0; i < ARRAY_SIZE(known_extensions); i++) {
-        bool32_t extension_found = 0;
+        VkBool32 extension_found = 0;
         for (uint32_t j = 0; j < gpu->device_extension_count; j++) {
             VkExtensionProperties *ext_prop = &gpu->device_extensions[j];
             if (!strcmp(known_extensions[i], ext_prop->extName)) {
@@ -622,7 +622,7 @@
                 &inst->global_extensions);
 
     for (uint32_t i = 0; i < ARRAY_SIZE(known_extensions); i++) {
-        bool32_t extension_found = 0;
+        VkBool32 extension_found = 0;
         for (uint32_t j = 0; j < inst->global_extension_count; j++) {
             VkExtensionProperties *extension_prop = &inst->global_extensions[j];
             if (!strcmp(known_extensions[i], extension_prop->extName)) {
