update to vulkan.h header version 90, bug 13529
diff --git a/loader/loader.c b/loader/loader.c
index 84a4e75..a2d7cf7 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -726,7 +726,7 @@
 
 static void * VKAPI loader_gpa_internal(VkPhysicalDevice gpu, const char * pName)
 {
-    if (gpu == NULL) {
+    if (gpu == VK_NULL_HANDLE) {
         return NULL;;
     }
     VkBaseLayerObject* gpuw = (VkBaseLayerObject *) gpu;
@@ -756,8 +756,7 @@
     for (struct loader_instance *inst = loader.instances; inst; inst = inst->next) {
         for (struct loader_icd *icd = inst->icds; icd; icd = icd->next) {
             for (uint32_t i = 0; i < icd->gpu_count; i++)
-                if ((icd->gpus + i) == gpu || (icd->gpus +i)->baseObject ==
-                                                            gpu) {
+                if ((icd->gpus + i) == gpu || (void*)(icd->gpus +i)->baseObject == gpu) {
                     *gpu_index = i;
                     return icd;
                 }
@@ -1023,7 +1022,7 @@
     /* activate any layer libraries */
     if (!loader_layers_activated(icd, gpu_index)) {
         VkBaseLayerObject *gpuObj = gpu;
-        VkBaseLayerObject *nextGpuObj, *baseObj = gpuObj->baseObject;
+        VkBaseLayerObject *nextGpuObj, *baseObj = (VkBaseLayerObject *) gpuObj->baseObject;
         PFN_vkGetProcAddr nextGPA = loader_gpa_internal;
 
         count = loader_get_layer_libs(icd, gpu_index, ext_count, ext_names, &pLayerNames);
@@ -1037,8 +1036,8 @@
         for (int32_t i = icd->layer_count[gpu_index] - 1; i >= 0; i--) {
             nextGpuObj = (icd->wrappedGpus[gpu_index] + i);
             nextGpuObj->pGPA = nextGPA;
-            nextGpuObj->baseObject = baseObj;
-            nextGpuObj->nextObject = gpuObj;
+            nextGpuObj->baseObject = (VkObject) baseObj;
+            nextGpuObj->nextObject = (VkObject) gpuObj;
             gpuObj = nextGpuObj;
 
             char funcStr[256];
@@ -1051,12 +1050,12 @@
             }
 
             if (i == 0) {
-                loader_init_dispatch_table(icd->loader_dispatch + gpu_index, nextGPA, gpuObj);
+                loader_init_dispatch_table(icd->loader_dispatch + gpu_index, nextGPA, (VkPhysicalDevice) gpuObj);
                 //Insert the new wrapped objects into the list with loader object at head
-                gpu->nextObject = gpuObj;
+                gpu->nextObject = (VkObject) gpuObj;
                 gpu->pGPA = nextGPA;
                 gpuObj = icd->wrappedGpus[gpu_index] + icd->layer_count[gpu_index] - 1;
-                gpuObj->nextObject = baseObj;
+                gpuObj->nextObject = (VkObject) baseObj;
                 gpuObj->pGPA = icd->scanned_icds->GetProcAddr;
             }
 
@@ -1128,7 +1127,7 @@
             {
                 ptr_instance->icds = ptr_instance->icds->next;
                 loader_icd_destroy(icd);
-                scanned_icds->instance = NULL;
+                scanned_icds->instance = VK_NULL_HANDLE;
                 loader_log(VK_DBG_MSG_WARNING, 0,
                         "ICD ignored: failed to CreateInstance on device");
             }
@@ -1185,7 +1184,7 @@
         if (res != VK_SUCCESS)
             loader_log(VK_DBG_MSG_WARNING, 0,
                         "ICD ignored: failed to DestroyInstance on device");
-        scanned_icds->instance = NULL;
+        scanned_icds->instance = VK_NULL_HANDLE;
         scanned_icds = scanned_icds->next;
     }
 
@@ -1253,7 +1252,7 @@
                                                get_proc_addr, gpus[i]);
 
                     /* Verify ICD compatibility */
-                    if (!valid_loader_magic_value(gpus[i])) {
+                    if (!valid_loader_magic_value((void*) gpus[i])) {
                         loader_log(VK_DBG_MSG_WARNING, 0,
                             "Loader: Incompatible ICD, first dword must be initialized to ICD_LOADER_MAGIC. See loader/README.md for details.\n");
                         assert(0);
@@ -1284,7 +1283,7 @@
 
 LOADER_EXPORT void * VKAPI vkGetProcAddr(VkPhysicalDevice gpu, const char * pName)
 {
-    if (gpu == NULL) {
+    if (gpu == VK_NULL_HANDLE) {
 
         /* return entrypoint addresses that are global (in the loader)*/
         return globalGetProcAddr(pName);
@@ -1422,7 +1421,7 @@
             uint32_t n;
             VkResult res;
             n = (uint32_t) ((maxStringSize < 256) ? maxStringSize : 256);
-            res = fpEnumerateLayers(NULL, 16, n, &cnt, layers, (char *) icd->gpus + gpu_index);
+            res = fpEnumerateLayers((VkPhysicalDevice) NULL, 16, n, &cnt, layers, (char *) icd->gpus + gpu_index);
             loader_platform_close_library(handle);
             if (res != VK_SUCCESS)
                 continue;
@@ -1455,7 +1454,7 @@
     assert(loader.icds_scanned);
 
     for (inst = loader.instances; inst; inst = inst->next) {
-        if (inst == instance)
+        if ((VkInstance) inst == instance)
             break;
     }
 
@@ -1503,7 +1502,7 @@
     assert(loader.icds_scanned);
 
     for (inst = loader.instances; inst; inst = inst->next) {
-        if (inst == instance)
+        if ((VkInstance) inst == instance)
             break;
     }
 
@@ -1532,7 +1531,7 @@
     assert(loader.icds_scanned);
 
     for (inst = loader.instances; inst; inst = inst->next) {
-        if (inst == instance)
+        if ((VkInstance) inst == instance)
             break;
     }
 
diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index 635d234..2a6dd0e 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -773,7 +773,7 @@
     err = vkCreateEvent(dev_.obj(), &event_info, &event);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkGetObjectInfo(event, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
+    err = vkGetObjectInfo(dev_.obj(), VK_OBJECT_TYPE_EVENT, event, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
                            &data_size, &mem_req);
     ASSERT_VK_SUCCESS(err);
 
@@ -794,10 +794,10 @@
     err = vkAllocMemory(dev_.obj(), &mem_info, &event_mem);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkQueueBindObjectMemory(queue_.obj(), event, 0, event_mem, 0);
+    err = vkQueueBindObjectMemory(queue_.obj(), VK_OBJECT_TYPE_EVENT, event, 0, event_mem, 0);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkResetEvent(event);
+    err = vkResetEvent(dev_.obj(), event);
     ASSERT_VK_SUCCESS(err);
 
     for (int i = 0; i < ARRAY_SIZE(bufs); i++) {
@@ -852,13 +852,13 @@
     bufs[2].unmap();
 
     // All done with event memory, clean up
-    err = vkQueueBindObjectMemory(queue_.obj(), event, 0, VK_NULL_HANDLE, 0);
+    err = vkQueueBindObjectMemory(queue_.obj(), VK_OBJECT_TYPE_EVENT, event, 0, VK_NULL_HANDLE, 0);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkDestroyObject(event);
+    err = vkDestroyObject(dev_.obj(), VK_OBJECT_TYPE_EVENT, event);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkFreeMemory(event_mem);
+    err = vkFreeMemory(dev_.obj(), event_mem);
     ASSERT_VK_SUCCESS(err);
 }
 
diff --git a/tests/image_tests.cpp b/tests/image_tests.cpp
index 736daea..a9ad1be 100644
--- a/tests/image_tests.cpp
+++ b/tests/image_tests.cpp
@@ -223,14 +223,14 @@
     mem_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO;
     mem_info.pNext = NULL;
 
-    err = vkGetObjectInfo(m_image, VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT,
+    err = vkGetObjectInfo(device(), VK_OBJECT_TYPE_IMAGE, m_image, VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT,
                     &num_alloc_size, &num_allocations);
     ASSERT_VK_SUCCESS(err);
     ASSERT_EQ(num_alloc_size,sizeof(num_allocations));
     mem_req = (VkMemoryRequirements *) malloc(num_allocations * sizeof(VkMemoryRequirements));
     m_image_mem = (VkDeviceMemory *) malloc(num_allocations * sizeof(VkDeviceMemory));
     m_num_mem = num_allocations;
-    err = vkGetObjectInfo(m_image,
+    err = vkGetObjectInfo(device(), VK_OBJECT_TYPE_IMAGE, m_image,
                     VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
                     &mem_reqs_size, mem_req);
     ASSERT_VK_SUCCESS(err);
@@ -248,7 +248,7 @@
 
         /* bind memory */
         VkQueue queue = m_device->graphics_queues()[0]->obj();
-        err = vkQueueBindObjectMemory(queue, m_image, i, m_image_mem[i], 0);
+        err = vkQueueBindObjectMemory(queue, VK_OBJECT_TYPE_IMAGE, m_image, i, m_image_mem[i], 0);
         ASSERT_VK_SUCCESS(err);
     }
 }
@@ -258,15 +258,15 @@
     VkResult err;
     // All done with image memory, clean up
     VkQueue queue = m_device->graphics_queues()[0]->obj();
-    ASSERT_VK_SUCCESS(vkQueueBindObjectMemory(queue, m_image, 0, VK_NULL_HANDLE, 0));
+    ASSERT_VK_SUCCESS(vkQueueBindObjectMemory(queue, VK_OBJECT_TYPE_IMAGE, m_image, 0, VK_NULL_HANDLE, 0));
 
     for (uint32_t i = 0 ; i < m_num_mem; i++) {
-        err = vkFreeMemory(m_image_mem[i]);
+        err = vkFreeMemory(device(), m_image_mem[i]);
         ASSERT_VK_SUCCESS(err);
     }
 
 
-    ASSERT_VK_SUCCESS(vkDestroyObject(m_image));
+    ASSERT_VK_SUCCESS(vkDestroyObject(device(), VK_OBJECT_TYPE_IMAGE, m_image));
 }
 
 void VkImageTest::CreateImageView(VkImageViewCreateInfo *pCreateInfo,
@@ -278,7 +278,7 @@
 
 void VkImageTest::DestroyImageView(VkImageView imageView)
 {
-    ASSERT_VK_SUCCESS(vkDestroyObject(imageView));
+    ASSERT_VK_SUCCESS(vkDestroyObject(device(), VK_OBJECT_TYPE_IMAGE, imageView));
 }
 
 TEST_F(VkImageTest, CreateImageViewTest) {
diff --git a/tests/init.cpp b/tests/init.cpp
index 545c041..d2402a5 100644
--- a/tests/init.cpp
+++ b/tests/init.cpp
@@ -207,16 +207,16 @@
     err = vkAllocMemory(device(), &alloc_info, &gpu_mem);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkMapMemory(gpu_mem, 0, 0, 0, (void **) &pData);
+    err = vkMapMemory(device(), gpu_mem, 0, 0, 0, (void **) &pData);
     ASSERT_VK_SUCCESS(err);
 
     memset(pData, 0x55, alloc_info.allocationSize);
     EXPECT_EQ(0x55, pData[0]) << "Memory read not same a write";
 
-    err = vkUnmapMemory(gpu_mem);
+    err = vkUnmapMemory(device(), gpu_mem);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkFreeMemory(gpu_mem);
+    err = vkFreeMemory(device(), gpu_mem);
     ASSERT_VK_SUCCESS(err);
 }
 
@@ -239,7 +239,7 @@
     err = vkCreateEvent(device(), &event_info, &event);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkGetObjectInfo(event, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
+    err = vkGetObjectInfo(device(), VK_OBJECT_TYPE_EVENT, event, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
                            &data_size, &mem_req);
     ASSERT_VK_SUCCESS(err);
 
@@ -261,28 +261,28 @@
     ASSERT_VK_SUCCESS(err);
 
     VkQueue queue = m_device->graphics_queues()[0]->obj();
-    err = vkQueueBindObjectMemory(queue, event, 0, event_mem, 0);
+    err = vkQueueBindObjectMemory(queue, VK_OBJECT_TYPE_EVENT, event, 0, event_mem, 0);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkResetEvent(event);
+    err = vkResetEvent(device(), event);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkGetEventStatus(event);
+    err = vkGetEventStatus(device(), event);
     ASSERT_EQ(VK_EVENT_RESET, err);
 
-    err = vkSetEvent(event);
+    err = vkSetEvent(device(), event);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkGetEventStatus(event);
+    err = vkGetEventStatus(device(), event);
     ASSERT_EQ(VK_EVENT_SET, err);
 
     // TODO: Test actual synchronization with command buffer event.
 
     // All done with event memory, clean up
-    err = vkQueueBindObjectMemory(queue, event, 0, VK_NULL_HANDLE, 0);
+    err = vkQueueBindObjectMemory(queue, VK_OBJECT_TYPE_EVENT, event, 0, VK_NULL_HANDLE, 0);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkDestroyObject(event);
+    err = vkDestroyObject(device(), VK_OBJECT_TYPE_EVENT, event);
     ASSERT_VK_SUCCESS(err);
 }
 
@@ -303,7 +303,7 @@
     err = vkCreateFence(device(), &fence_info, &fence);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkGetFenceStatus(fence);
+    err = vkGetFenceStatus(device(), fence);
     // We've not submitted this fence on a command buffer so should get
     // VK_ERROR_UNAVAILABLE
     EXPECT_EQ(VK_ERROR_UNAVAILABLE, err);
@@ -321,7 +321,7 @@
     // TODO: Attached to command buffer and test GetFenceStatus
     // TODO: Add some commands and submit the command buffer
 
-    err = vkDestroyObject(fence);
+    err = vkDestroyObject(device(), VK_OBJECT_TYPE_FENCE, fence);
     ASSERT_VK_SUCCESS(err);
 
 }
@@ -370,7 +370,7 @@
     ASSERT_VK_SUCCESS(err);
 
     data_size = sizeof(mem_req);
-    err = vkGetObjectInfo(query_pool, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
+    err = vkGetObjectInfo(device(), VK_OBJECT_TYPE_QUERY_POOL, query_pool, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
                            &data_size, &mem_req);
     ASSERT_VK_SUCCESS(err);
     ASSERT_NE(0, data_size) << "Invalid data_size";
@@ -393,7 +393,7 @@
     ASSERT_VK_SUCCESS(err);
 
     VkQueue queue = m_device->graphics_queues()[0]->obj();
-    err = vkQueueBindObjectMemory(queue, query_pool, 0, query_mem, 0);
+    err = vkQueueBindObjectMemory(queue, VK_OBJECT_TYPE_QUERY_POOL, query_pool, 0, query_mem, 0);
     ASSERT_VK_SUCCESS(err);
 
     // TODO: Test actual synchronization with command buffer event.
@@ -403,13 +403,13 @@
     // TODO: commands
     // TOOD: vkCmdEndQuery
 
-    err = vkGetQueryPoolResults(query_pool, 0, MAX_QUERY_SLOTS,
+    err = vkGetQueryPoolResults(device(), query_pool, 0, MAX_QUERY_SLOTS,
                                  &query_result_size, VK_NULL_HANDLE, 0);
     ASSERT_VK_SUCCESS(err);
 
     if (query_result_size > 0) {
         query_result_data = new uint32_t [query_result_size];
-        err = vkGetQueryPoolResults(query_pool, 0, MAX_QUERY_SLOTS,
+        err = vkGetQueryPoolResults(device(), query_pool, 0, MAX_QUERY_SLOTS,
                                      &query_result_size, query_result_data, 0);
         ASSERT_VK_SUCCESS(err);
 
@@ -418,10 +418,10 @@
     }
 
     // All done with QueryPool memory, clean up
-    err = vkQueueBindObjectMemory(queue, query_pool, 0, VK_NULL_HANDLE, 0);
+    err = vkQueueBindObjectMemory(queue, VK_OBJECT_TYPE_QUERY_POOL, query_pool, 0, VK_NULL_HANDLE, 0);
     ASSERT_VK_SUCCESS(err);
 
-    err = vkDestroyObject(query_pool);
+    err = vkDestroyObject(device(), VK_OBJECT_TYPE_QUERY_POOL, query_pool);
     ASSERT_VK_SUCCESS(err);
 }
 
@@ -625,7 +625,7 @@
     {
         VkSubresourceLayout layout = {};
         data_size = sizeof(layout);
-        err = vkGetImageSubresourceInfo(image, &subresource, VK_SUBRESOURCE_INFO_TYPE_LAYOUT,
+        err = vkGetImageSubresourceInfo(device(), image, &subresource, VK_SUBRESOURCE_INFO_TYPE_LAYOUT,
                                          &data_size, &layout);
         ASSERT_VK_SUCCESS(err);
         ASSERT_EQ(sizeof(VkSubresourceLayout), data_size) << "Invalid structure (VkSubresourceLayout) size";
@@ -640,7 +640,7 @@
 
     VkMemoryRequirements mem_req;
     data_size = sizeof(mem_req);
-    err = vkGetObjectInfo(image, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
+    err = vkGetObjectInfo(device(), VK_OBJECT_TYPE_IMAGE, image, VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
                            &data_size, &mem_req);
     ASSERT_VK_SUCCESS(err);
     ASSERT_EQ(data_size, sizeof(mem_req));
@@ -661,7 +661,7 @@
     ASSERT_VK_SUCCESS(err);
 
     VkQueue queue = m_device->graphics_queues()[0]->obj();
-    err = vkQueueBindObjectMemory(queue, image, 0, image_mem, 0);
+    err = vkQueueBindObjectMemory(queue, VK_OBJECT_TYPE_IMAGE, image, 0, image_mem, 0);
     ASSERT_VK_SUCCESS(err);
 
 //    typedef struct VkImageViewCreateInfo_
@@ -704,11 +704,11 @@
     // TODO: Test image memory.
 
     // All done with image memory, clean up
-    ASSERT_VK_SUCCESS(vkQueueBindObjectMemory(queue, image, 0, VK_NULL_HANDLE, 0));
+    ASSERT_VK_SUCCESS(vkQueueBindObjectMemory(queue, VK_OBJECT_TYPE_IMAGE, image, 0, VK_NULL_HANDLE, 0));
 
-    ASSERT_VK_SUCCESS(vkFreeMemory(image_mem));
+    ASSERT_VK_SUCCESS(vkFreeMemory(device(), image_mem));
 
-    ASSERT_VK_SUCCESS(vkDestroyObject(image));
+    ASSERT_VK_SUCCESS(vkDestroyObject(device(), VK_OBJECT_TYPE_IMAGE, image));
 }
 
 TEST_F(XglTest, CreateImage) {
@@ -734,7 +734,7 @@
     err = vkCreateCommandBuffer(device(), &info, &cmdBuffer);
     ASSERT_VK_SUCCESS(err) << "vkCreateCommandBuffer failed";
 
-    ASSERT_VK_SUCCESS(vkDestroyObject(cmdBuffer));
+    ASSERT_VK_SUCCESS(vkDestroyObject(device(), VK_OBJECT_TYPE_COMMAND_BUFFER, cmdBuffer));
 }
 
 TEST_F(XglTest, TestComandBuffer) {
diff --git a/tests/render_tests.cpp b/tests/render_tests.cpp
index 1f657fa..d805808 100644
--- a/tests/render_tests.cpp
+++ b/tests/render_tests.cpp
@@ -83,7 +83,7 @@
 void VKAPI myDbgFunc(
     VK_DBG_MSG_TYPE     msgType,
     VkValidationLevel validationLevel,
-    VkBaseObject      srcObject,
+    VkObject             srcObject,
     size_t               location,
     int32_t              msgCode,
     const char*          pMsg,
diff --git a/vk-generate.py b/vk-generate.py
index 550ebc1..4204fcd 100755
--- a/vk-generate.py
+++ b/vk-generate.py
@@ -132,7 +132,7 @@
             pcount = proto.params[-1].name
             setup.append("uint32_t i;")
             setup.append("for (i = 0; i < *%s; i++)" % pcount)
-            setup.append("    %s(%s[i], disp);" % (method, psets))
+            setup.append("    %s((void*)%s[i], disp);" % (method, psets))
         elif proto.name == "GetPhysicalDeviceInfo":
             ptype = proto.params[-3].name
             psize = proto.params[-2].name
@@ -159,7 +159,7 @@
         else:
             obj_params = proto.object_out_params()
             for param in obj_params:
-                setup.append("%s(*%s, disp);" % (method, param.name))
+                setup.append("%s((void*)*%s, disp);" % (method, param.name))
 
         if setup:
             joined = "\n        ".join(setup)
@@ -192,7 +192,7 @@
             func.append("")
 
             # get dispatch table
-            func.append("    disp = loader_get_data(%s);" %
+            func.append("    disp = loader_get_data((void*)%s);" %
                     proto.params[0].name)
             func.append("")
 
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index 8bcc132..ee9ce17 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -374,7 +374,7 @@
                          "{\n"
                          "    VkBaseLayerObject* gpuw = (VkBaseLayerObject *) gpu;\n"
                          "    void* addr;\n"
-                         "    if (gpu == NULL)\n"
+                         "    if (gpu == VK_NULL_HANDLE)\n"
                          "        return NULL;\n"
                          "    pCurObj = gpuw;\n"
                          "    loader_platform_thread_once(&tabOnce, init%s);\n\n"
@@ -481,7 +481,7 @@
             funcs.append('%s%s\n'
                      '{\n'
                      '    char str[1024];\n'
-                     '    if (gpu != NULL) {\n'
+                     '    if (gpu != VK_NULL_HANDLE) {\n'
                      '        sprintf(str, "At start of layered %s\\n");\n'
                      '        layerCbMsg(VK_DBG_MSG_UNKNOWN, VK_VALIDATION_LEVEL_0, gpu, 0, 0, (char *) "GENERIC", (char *) str);\n'
                      '        pCurObj = (VkBaseLayerObject *) gpu;\n'
@@ -1133,7 +1133,7 @@
             return None
         obj_type_mapping = {base_t : base_t.replace("Vk", "VkObjectType") for base_t in vulkan.object_type_list}
         # For the various "super-types" we have to use function to distinguish sub type
-        for obj_type in ["VK_BASE_OBJECT", "VK_OBJECT", "VK_DYNAMIC_STATE_OBJECT", "VkObject", "VkBaseObject"]:
+        for obj_type in ["VK_BASE_OBJECT", "VK_OBJECT", "VK_DYNAMIC_STATE_OBJECT", "VkObject"]:
             obj_type_mapping[obj_type] = "ll_get_obj_type(object)"
 
         decl = proto.c_func(prefix="vk", attr="VKAPI")
diff --git a/vulkan.py b/vulkan.py
index 044a98c..d9a0775 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -186,7 +186,6 @@
     objects=[
         "VkInstance",
         "VkPhysicalDevice",
-        "VkBaseObject",
         "VkDevice",
         "VkQueue",
         "VkDeviceMemory",
@@ -303,24 +302,29 @@
              Param("VkDeviceMemory*", "pMem")]),
 
         Proto("VkResult", "FreeMemory",
-            [Param("VkDeviceMemory", "mem")]),
+            [Param("VkDevice", "device"),
+             Param("VkDeviceMemory", "mem")]),
 
         Proto("VkResult", "SetMemoryPriority",
-            [Param("VkDeviceMemory", "mem"),
+            [Param("VkDevice", "device"),
+             Param("VkDeviceMemory", "mem"),
              Param("VkMemoryPriority", "priority")]),
 
         Proto("VkResult", "MapMemory",
-            [Param("VkDeviceMemory", "mem"),
+            [Param("VkDevice", "device"),
+             Param("VkDeviceMemory", "mem"),
              Param("VkDeviceSize", "offset"),
              Param("VkDeviceSize", "size"),
              Param("VkFlags", "flags"),
              Param("void**", "ppData")]),
 
         Proto("VkResult", "UnmapMemory",
-            [Param("VkDeviceMemory", "mem")]),
+            [Param("VkDevice", "device"),
+             Param("VkDeviceMemory", "mem")]),
 
         Proto("VkResult", "FlushMappedMemory",
-            [Param("VkDeviceMemory", "mem"),
+            [Param("VkDevice", "device"),
+             Param("VkDeviceMemory", "mem"),
              Param("VkDeviceSize", "offset"),
              Param("VkDeviceSize", "size")]),
 
@@ -357,16 +361,21 @@
              Param("VkDeviceMemory*", "pMem")]),
 
         Proto("VkResult", "DestroyObject",
-            [Param("VkObject", "object")]),
+            [Param("VkDevice", "device"),
+             Param("VkObjectType", "objType"), 
+             Param("VkObject", "object")]),
 
         Proto("VkResult", "GetObjectInfo",
-            [Param("VkBaseObject", "object"),
+            [Param("VkDevice", "device"),
+             Param("VkObjectType", "objType"), 
+             Param("VkObject", "object"),
              Param("VkObjectInfoType", "infoType"),
              Param("size_t*", "pDataSize"),
              Param("void*", "pData")]),
 
         Proto("VkResult", "QueueBindObjectMemory",
             [Param("VkQueue", "queue"),
+             Param("VkObjectType", "objType"), 
              Param("VkObject", "object"),
              Param("uint32_t", "allocationIdx"),
              Param("VkDeviceMemory", "mem"),
@@ -374,6 +383,7 @@
 
         Proto("VkResult", "QueueBindObjectMemoryRange",
             [Param("VkQueue", "queue"),
+             Param("VkObjectType", "objType"), 
              Param("VkObject", "object"),
              Param("uint32_t", "allocationIdx"),
              Param("VkDeviceSize", "rangeOffset"),
@@ -400,7 +410,8 @@
              Param("VkFence*", "pFences")]),
 
         Proto("VkResult", "GetFenceStatus",
-            [Param("VkFence", "fence")]),
+            [Param("VkDevice", "device"),
+             Param("VkFence", "fence")]),
 
         Proto("VkResult", "WaitForFences",
             [Param("VkDevice", "device"),
@@ -428,13 +439,16 @@
              Param("VkEvent*", "pEvent")]),
 
         Proto("VkResult", "GetEventStatus",
-            [Param("VkEvent", "event")]),
+            [Param("VkDevice", "device"),
+             Param("VkEvent", "event")]),
 
         Proto("VkResult", "SetEvent",
-            [Param("VkEvent", "event")]),
+            [Param("VkDevice", "device"),
+             Param("VkEvent", "event")]),
 
         Proto("VkResult", "ResetEvent",
-            [Param("VkEvent", "event")]),
+            [Param("VkDevice", "device"),
+             Param("VkEvent", "event")]),
 
         Proto("VkResult", "CreateQueryPool",
             [Param("VkDevice", "device"),
@@ -442,7 +456,8 @@
              Param("VkQueryPool*", "pQueryPool")]),
 
         Proto("VkResult", "GetQueryPoolResults",
-            [Param("VkQueryPool", "queryPool"),
+            [Param("VkDevice", "device"),
+             Param("VkQueryPool", "queryPool"),
              Param("uint32_t", "startQuery"),
              Param("uint32_t", "queryCount"),
              Param("size_t*", "pDataSize"),
@@ -472,7 +487,8 @@
              Param("VkImage*", "pImage")]),
 
         Proto("VkResult", "GetImageSubresourceInfo",
-            [Param("VkImage", "image"),
+            [Param("VkDevice", "device"),
+             Param("VkImage", "image"),
              Param("const VkImageSubresource*", "pSubresource"),
              Param("VkSubresourceInfoType", "infoType"),
              Param("size_t*", "pDataSize"),
@@ -515,7 +531,8 @@
              Param("VkPipeline*", "pPipeline")]),
 
         Proto("VkResult", "StorePipeline",
-            [Param("VkPipeline", "pipeline"),
+            [Param("VkDevice", "device"),
+             Param("VkPipeline", "pipeline"),
              Param("size_t*", "pDataSize"),
              Param("void*", "pData")]),
 
@@ -563,10 +580,12 @@
              Param("VkDescriptorPool*", "pDescriptorPool")]),
 
         Proto("VkResult", "ResetDescriptorPool",
-            [Param("VkDescriptorPool", "descriptorPool")]),
+            [Param("VkDevice", "device"),
+             Param("VkDescriptorPool", "descriptorPool")]),
 
         Proto("VkResult", "AllocDescriptorSets",
-            [Param("VkDescriptorPool", "descriptorPool"),
+            [Param("VkDevice", "device"),
+             Param("VkDescriptorPool", "descriptorPool"),
              Param("VkDescriptorSetUsage", "setUsage"),
              Param("uint32_t", "count"),
              Param("const VkDescriptorSetLayout*", "pSetLayouts"),
@@ -574,12 +593,14 @@
              Param("uint32_t*", "pCount")]),
 
         Proto("void", "ClearDescriptorSets",
-            [Param("VkDescriptorPool", "descriptorPool"),
+            [Param("VkDevice", "device"),
+             Param("VkDescriptorPool", "descriptorPool"),
              Param("uint32_t", "count"),
              Param("const VkDescriptorSet*", "pDescriptorSets")]),
 
         Proto("void", "UpdateDescriptors",
-            [Param("VkDescriptorSet", "descriptorSet"),
+            [Param("VkDevice", "device"),
+             Param("VkDescriptorSet", "descriptorSet"),
              Param("uint32_t", "updateCount"),
              Param("const void**", "ppUpdateArray")]),
 
@@ -757,7 +778,7 @@
             [Param("VkCmdBuffer", "cmdBuffer"),
              Param("VkImage", "image"),
              Param("VkImageLayout", "imageLayout"),
-	     Param("VkClearColor", "color"),
+             Param("VkClearColor", "color"),
              Param("uint32_t", "rangeCount"),
              Param("const VkImageSubresourceRange*", "pRanges")]),
 
@@ -898,7 +919,8 @@
              Param("VK_DBG_MSG_FILTER", "filter")]),
 
         Proto("VkResult", "DbgSetObjectTag",
-            [Param("VkBaseObject", "object"),
+            [Param("VkDevice", "device"),
+             Param("VkObject", "object"),
              Param("size_t", "tagSize"),
              Param("const void*", "pTag")]),
 
@@ -962,7 +984,6 @@
 object_root_list = [
     "VkInstance",
     "VkPhysicalDevice",
-    "VkBaseObject",
     "VkDisplayWSI",
     "VkSwapChainWSI",
 ]
@@ -1007,7 +1028,7 @@
 
 object_type_list = object_root_list + object_base_list + object_list + object_dynamic_state_list
 
-object_parent_list = ["VkBaseObject", "VkObject", "VkDynamicStateObject"]
+object_parent_list = ["VkObject", "VkDynamicStateObject"]
 
 headers = []
 objects = []