Skip to content

Commit 0f4b741

Browse files
MarkY-LunarGjzulauf-lunarg
authored andcommitted
codegen: Update more Vulkan to generate at endFile
Update more Vulkan python scripts to generate at endFile time instead of generate_feature time.
1 parent 29ada5d commit 0f4b741

File tree

3 files changed

+42
-49
lines changed

3 files changed

+42
-49
lines changed

framework/generated/khronos_generators/vulkan_generators/layer_func_table_generator.py

+12-14
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,18 @@ def beginFile(self, gen_opts):
109109

110110
def endFile(self):
111111
"""Method override."""
112+
for cmd in self.get_all_filtered_cmd_names():
113+
align = 100 - len(cmd)
114+
if (cmd in self.LAYER_FUNCTIONS):
115+
body = ' {{ "{}",{}reinterpret_cast<PFN_vkVoidFunction>(vulkan_entry::{}) }},'.format(
116+
cmd, (' ' * align), cmd[2:]
117+
)
118+
else:
119+
body = ' {{ "{}",{}reinterpret_cast<PFN_vkVoidFunction>(encode::{}) }},'.format(
120+
cmd, (' ' * align), cmd[2:]
121+
)
122+
write(body, file=self.outFile)
123+
112124
# Manually output the physical device proc address function as its name doesn't
113125
# match the scheme used by self.LAYER_FUNCTIONS:
114126
align = 100 - len('vk_layerGetPhysicalDeviceProcAddr')
@@ -126,17 +138,3 @@ def need_feature_generation(self):
126138
if self.feature_cmd_params:
127139
return True
128140
return False
129-
130-
def generate_feature(self):
131-
"""Performs C++ code generation for the feature."""
132-
for cmd in self.get_filtered_cmd_names():
133-
align = 100 - len(cmd)
134-
if (cmd in self.LAYER_FUNCTIONS):
135-
body = ' {{ "{}",{}reinterpret_cast<PFN_vkVoidFunction>(vulkan_entry::{}) }},'.format(
136-
cmd, (' ' * align), cmd[2:]
137-
)
138-
else:
139-
body = ' {{ "{}",{}reinterpret_cast<PFN_vkVoidFunction>(encode::{}) }},'.format(
140-
cmd, (' ' * align), cmd[2:]
141-
)
142-
write(body, file=self.outFile)

framework/generated/khronos_generators/vulkan_generators/vulkan_decoder_header_generator.py

+7-9
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,13 @@ def beginFile(self, gen_opts):
109109

110110
def endFile(self):
111111
"""Method override."""
112+
for cmd in self.get_all_filtered_cmd_names():
113+
cmddef = '\n'
114+
cmddef += ' size_t Decode_{}(const ApiCallInfo& call_info, const uint8_t* parameter_buffer, size_t buffer_size);'.format(
115+
cmd
116+
)
117+
write(cmddef, file=self.outFile)
118+
112119
write('};', file=self.outFile)
113120
self.newline()
114121
write('GFXRECON_END_NAMESPACE(decode)', file=self.outFile)
@@ -122,12 +129,3 @@ def need_feature_generation(self):
122129
if self.feature_cmd_params:
123130
return True
124131
return False
125-
126-
def generate_feature(self):
127-
"""Performs C++ code generation for the feature."""
128-
for cmd in self.get_filtered_cmd_names():
129-
cmddef = '\n'
130-
cmddef += ' size_t Decode_{}(const ApiCallInfo& call_info, const uint8_t* parameter_buffer, size_t buffer_size);'.format(
131-
cmd
132-
)
133-
write(cmddef, file=self.outFile)

framework/generated/khronos_generators/vulkan_generators/vulkan_dispatch_table_generator.py

+23-26
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,29 @@ def beginFile(self, gen_opts):
108108

109109
def endFile(self):
110110
"""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)
111134
self.newline()
112135

113136
write('typedef const void* VulkanDispatchKey;', file=self.outFile)
@@ -188,32 +211,6 @@ def need_feature_generation(self):
188211
return True
189212
return False
190213

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-
217214
def generate_instance_cmd_table(self):
218215
"""Generate instance dispatch table structure."""
219216
write('struct VulkanInstanceTable', file=self.outFile)

0 commit comments

Comments
 (0)