@@ -108,6 +108,29 @@ def beginFile(self, gen_opts):
108
108
109
109
def endFile (self ):
110
110
"""Method override."""
111
+ for name in self .all_cmd_params :
112
+ # Ignore vkCreateInstance and vkCreateDevice, which are provided by the layer due to special handling requirements
113
+ if name not in ['vkCreateInstance' , 'vkCreateDevice' ]:
114
+ info = self .all_cmd_params [name ]
115
+ values = info [2 ]
116
+
117
+ if values and values [0 ]:
118
+ first_param = values [0 ]
119
+ if self .is_handle (first_param .base_type ):
120
+ return_type = info [0 ]
121
+ proto = info [1 ]
122
+
123
+ # vkSetDebugUtilsObjectNameEXT and vkSetDebugUtilsObjectTagEXT
124
+ # need to be probed from GetInstanceProcAddress due to a loader issue.
125
+ # https://github.com/KhronosGroup/Vulkan-Loader/issues/1109
126
+ # TODO : When loader with fix for issue is widely available, remove this
127
+ # special case.
128
+ if name in ['vkSetDebugUtilsObjectNameEXT' , 'vkSetDebugUtilsObjectTagEXT' ]:
129
+ self .instance_cmd_names [name ] = self .make_cmd_decl (return_type , proto , values , name )
130
+ elif first_param .base_type not in ['VkInstance' , 'VkPhysicalDevice' ]:
131
+ self .device_cmd_names [name ] = self .make_cmd_decl (return_type , proto , values , name )
132
+ else :
133
+ self .instance_cmd_names [name ] = self .make_cmd_decl (return_type , proto , values , name )
111
134
self .newline ()
112
135
113
136
write ('typedef const void* VulkanDispatchKey;' , file = self .outFile )
@@ -188,32 +211,6 @@ def need_feature_generation(self):
188
211
return True
189
212
return False
190
213
191
- def generate_feature (self ):
192
- """Performs C++ code generation for the feature."""
193
- for name in self .feature_cmd_params :
194
- # Ignore vkCreateInstance and vkCreateDevice, which are provided by the layer due to special handling requirements
195
- if name not in ['vkCreateInstance' , 'vkCreateDevice' ]:
196
- info = self .feature_cmd_params [name ]
197
- values = info [2 ]
198
-
199
- if values and values [0 ]:
200
- first_param = values [0 ]
201
- if self .is_handle (first_param .base_type ):
202
- return_type = info [0 ]
203
- proto = info [1 ]
204
-
205
- # vkSetDebugUtilsObjectNameEXT and vkSetDebugUtilsObjectTagEXT
206
- # need to be probed from GetInstanceProcAddress due to a loader issue.
207
- # https://github.com/KhronosGroup/Vulkan-Loader/issues/1109
208
- # TODO : When loader with fix for issue is widely available, remove this
209
- # special case.
210
- if name in ['vkSetDebugUtilsObjectNameEXT' , 'vkSetDebugUtilsObjectTagEXT' ]:
211
- self .instance_cmd_names [name ] = self .make_cmd_decl (return_type , proto , values , name )
212
- elif first_param .base_type not in ['VkInstance' , 'VkPhysicalDevice' ]:
213
- self .device_cmd_names [name ] = self .make_cmd_decl (return_type , proto , values , name )
214
- else :
215
- self .instance_cmd_names [name ] = self .make_cmd_decl (return_type , proto , values , name )
216
-
217
214
def generate_instance_cmd_table (self ):
218
215
"""Generate instance dispatch table structure."""
219
216
write ('struct VulkanInstanceTable' , file = self .outFile )
0 commit comments