vulkan.h: V115 -- Reintroduce memory heaps & types.  Bug #14082.

Reworked memory properties and types and added support for multiple
heaps.
diff --git a/tests/layer_validation_tests.cpp b/tests/layer_validation_tests.cpp
index 16b0fa9..59acc4f 100644
--- a/tests/layer_validation_tests.cpp
+++ b/tests/layer_validation_tests.cpp
@@ -452,7 +452,7 @@
         .pNext          = NULL,
         .allocationSize = 0,
         // Introduce failure, do NOT set memProps to VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
-        .memProps       = 0,
+        .memoryTypeIndex = 1,
     };
 
     err = vkCreateImage(m_device->device(), &image_create_info, &image);
@@ -504,23 +504,23 @@
     const int32_t  tex_height      = 32;
 
     const VkImageCreateInfo image_create_info = {
-        .sType          = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
-        .pNext          = NULL,
-        .imageType      = VK_IMAGE_TYPE_2D,
-        .format         = tex_format,
-        .extent         = { tex_width, tex_height, 1 },
-        .mipLevels      = 1,
-        .arraySize      = 1,
-        .samples        = 1,
-        .tiling         = VK_IMAGE_TILING_LINEAR,
-        .usage          = VK_IMAGE_USAGE_SAMPLED_BIT,
-        .flags          = 0,
+        .sType           = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
+        .pNext           = NULL,
+        .imageType       = VK_IMAGE_TYPE_2D,
+        .format          = tex_format,
+        .extent          = { tex_width, tex_height, 1 },
+        .mipLevels       = 1,
+        .arraySize       = 1,
+        .samples         = 1,
+        .tiling          = VK_IMAGE_TILING_LINEAR,
+        .usage           = VK_IMAGE_USAGE_SAMPLED_BIT,
+        .flags           = 0,
     };
     VkMemoryAllocInfo mem_alloc = {
-        .sType          = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
-        .pNext          = NULL,
-        .allocationSize = 0,
-        .memProps       = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
+        .sType           = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
+        .pNext           = NULL,
+        .allocationSize  = 0,
+        .memoryTypeIndex = 0,
     };
 
     err = vkCreateImage(m_device->device(), &image_create_info, &image);
@@ -534,6 +534,9 @@
 
     mem_alloc.allocationSize = mem_reqs.size;
 
+    err = m_device->gpu().set_memory_type(mem_reqs.memoryTypeBits, &mem_alloc, 0);
+    ASSERT_VK_SUCCESS(err);
+
     // allocate memory
     err = vkAllocMemory(m_device->device(), &mem_alloc, &mem);
     ASSERT_VK_SUCCESS(err);
@@ -572,23 +575,23 @@
     const int32_t  tex_height      = 32;
 
     const VkImageCreateInfo image_create_info = {
-        .sType          = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
-        .pNext          = NULL,
-        .imageType      = VK_IMAGE_TYPE_2D,
-        .format         = tex_format,
-        .extent         = { tex_width, tex_height, 1 },
-        .mipLevels      = 1,
-        .arraySize      = 1,
-        .samples        = 1,
-        .tiling         = VK_IMAGE_TILING_LINEAR,
-        .usage          = VK_IMAGE_USAGE_SAMPLED_BIT,
-        .flags          = 0,
+        .sType           = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
+        .pNext           = NULL,
+        .imageType       = VK_IMAGE_TYPE_2D,
+        .format          = tex_format,
+        .extent          = { tex_width, tex_height, 1 },
+        .mipLevels       = 1,
+        .arraySize       = 1,
+        .samples         = 1,
+        .tiling          = VK_IMAGE_TILING_LINEAR,
+        .usage           = VK_IMAGE_USAGE_SAMPLED_BIT,
+        .flags           = 0,
     };
     VkMemoryAllocInfo mem_alloc = {
-        .sType          = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
-        .pNext          = NULL,
-        .allocationSize = 0,
-        .memProps       = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
+        .sType           = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
+        .pNext           = NULL,
+        .allocationSize  = 0,
+        .memoryTypeIndex = 0,
     };
 
     err = vkCreateImage(m_device->device(), &image_create_info, &image);
@@ -602,6 +605,9 @@
 
     mem_alloc.allocationSize = mem_reqs.size;
 
+    err = m_device->gpu().set_memory_type(mem_reqs.memoryTypeBits, &mem_alloc, 0);
+    ASSERT_VK_SUCCESS(err);
+
     // allocate memory
     err = vkAllocMemory(m_device->device(), &mem_alloc, &mem);
     ASSERT_VK_SUCCESS(err);
@@ -641,23 +647,23 @@
     const int32_t  tex_height      = 32;
 
     const VkImageCreateInfo image_create_info = {
-        .sType          = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
-        .pNext          = NULL,
-        .imageType      = VK_IMAGE_TYPE_2D,
-        .format         = tex_format,
-        .extent         = { tex_width, tex_height, 1 },
-        .mipLevels      = 1,
-        .arraySize      = 1,
-        .samples        = 1,
-        .tiling         = VK_IMAGE_TILING_LINEAR,
-        .usage          = VK_IMAGE_USAGE_SAMPLED_BIT,
-        .flags          = 0,
+        .sType           = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
+        .pNext           = NULL,
+        .imageType       = VK_IMAGE_TYPE_2D,
+        .format          = tex_format,
+        .extent          = { tex_width, tex_height, 1 },
+        .mipLevels       = 1,
+        .arraySize       = 1,
+        .samples         = 1,
+        .tiling          = VK_IMAGE_TILING_LINEAR,
+        .usage           = VK_IMAGE_USAGE_SAMPLED_BIT,
+        .flags           = 0,
     };
     VkMemoryAllocInfo mem_alloc = {
-        .sType          = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
-        .pNext          = NULL,
-        .allocationSize = 0,
-        .memProps       = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
+        .sType           = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
+        .pNext           = NULL,
+        .allocationSize  = 0,
+        .memoryTypeIndex = 0,
     };
 
     err = vkCreateImage(m_device->device(), &image_create_info, &image);
@@ -670,6 +676,8 @@
     ASSERT_VK_SUCCESS(err);
 
     mem_alloc.allocationSize = mem_reqs.size;
+    err = m_device->gpu().set_memory_type(mem_reqs.memoryTypeBits, &mem_alloc, 0);
+    ASSERT_VK_SUCCESS(err);
 
     // allocate 2 memory objects
     err = vkAllocMemory(m_device->device(), &mem_alloc, &mem1);
@@ -711,23 +719,23 @@
     const int32_t  tex_height      = 32;
 
     const VkImageCreateInfo image_create_info = {
-        .sType          = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
-        .pNext          = NULL,
-        .imageType      = VK_IMAGE_TYPE_2D,
-        .format         = tex_format,
-        .extent         = { tex_width, tex_height, 1 },
-        .mipLevels      = 1,
-        .arraySize      = 1,
-        .samples        = 1,
-        .tiling         = VK_IMAGE_TILING_LINEAR,
-        .usage          = VK_IMAGE_USAGE_SAMPLED_BIT,
-        .flags          = 0,
+        .sType           = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
+        .pNext           = NULL,
+        .imageType       = VK_IMAGE_TYPE_2D,
+        .format          = tex_format,
+        .extent          = { tex_width, tex_height, 1 },
+        .mipLevels       = 1,
+        .arraySize       = 1,
+        .samples         = 1,
+        .tiling          = VK_IMAGE_TILING_LINEAR,
+        .usage           = VK_IMAGE_USAGE_SAMPLED_BIT,
+        .flags           = 0,
     };
     VkMemoryAllocInfo mem_alloc = {
-        .sType          = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
-        .pNext          = NULL,
-        .allocationSize = 0,
-        .memProps       = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
+        .sType           = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,
+        .pNext           = NULL,
+        .allocationSize  = 0,
+        .memoryTypeIndex = 0,
     };
 
     err = vkCreateImage(m_device->device(), &image_create_info, &image);
@@ -740,6 +748,8 @@
     ASSERT_VK_SUCCESS(err);
 
     mem_alloc.allocationSize = mem_reqs.size;
+    err = m_device->gpu().set_memory_type(mem_reqs.memoryTypeBits, &mem_alloc, 0);
+    ASSERT_VK_SUCCESS(err);
 
     // Allocate memory
     err = vkAllocMemory(m_device->device(), &mem_alloc, &mem);
@@ -2026,7 +2036,11 @@
     memset(&mem_info, 0, sizeof(mem_info));
     mem_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
     mem_info.allocationSize = mem_req.size;
-    mem_info.memProps = 0;
+    mem_info.memoryTypeIndex = 0;
+
+    err = m_device->gpu().set_memory_type(mem_req.memoryTypeBits, &mem_info, 0);
+    ASSERT_VK_SUCCESS(err);
+
     err = vkAllocMemory(device(), &mem_info, &event_mem);
     ASSERT_VK_SUCCESS(err);