From fce11d52fee0344bb10a098b0a398dff42cb5d51 Mon Sep 17 00:00:00 2001 From: spencer-lunarg Date: Fri, 29 Dec 2023 09:04:09 +0900 Subject: [PATCH] scripts: Sync base_generator.py --- scripts/generators/base_generator.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/scripts/generators/base_generator.py b/scripts/generators/base_generator.py index 29104bd..75ce610 100644 --- a/scripts/generators/base_generator.py +++ b/scripts/generators/base_generator.py @@ -298,6 +298,13 @@ class BaseGenerator(OutputGenerator): # Turn handle parents into pointers to classess for handle in [x for x in self.vk.handles.values() if x.parent is not None]: handle.parent = self.vk.handles[handle.parent] + # search up parent chain to see if instance or device + for handle in [x for x in self.vk.handles.values()]: + next_parent = handle.parent + while (not handle.instance and not handle.device): + handle.instance = next_parent.name == 'VkInstance' + handle.device = next_parent.name == 'VkDevice' + next_parent = next_parent.parent maxSyncSupport.queues = Queues.ALL maxSyncSupport.stages = self.vk.bitmasks['VkPipelineStageFlagBits2'].flags @@ -572,9 +579,12 @@ class BaseGenerator(OutputGenerator): if alias is not None: return type = typeElem.get('objtypeenum') - parent = typeElem.get('parent') # will resolve later - instance = parent == 'VkInstance' - device = not instance + + # will resolve these later, the VulkanObjectType doesn't list things in dependent order + parent = typeElem.get('parent') + instance = typeName == 'VkInstance' + device = typeName == 'VkDevice' + dispatchable = typeElem.find('type').text == 'VK_DEFINE_HANDLE' self.vk.handles[typeName] = Handle(typeName, type, protect, parent, instance, device, dispatchable)