aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Pinedo <david@lunarg.com>2016-11-17 15:03:16 -0700
committerDavid Pinedo <david@lunarg.com>2016-11-17 15:03:16 -0700
commitea5769bf2204f1486243bb33402c592c71111691 (patch)
tree9b1b1d531861d8c729dccdba02a98c0e51966697
parent6d9457719304bd4fae2db1f9e945f608258e5b9f (diff)
downloadusermoji-ea5769bf2204f1486243bb33402c592c71111691.tar.xz
codegen: change script to handle NV ext structs
Modified vk_helper.py to handle NV-specific structures
-rwxr-xr-xvk_helper.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/vk_helper.py b/vk_helper.py
index 6d290633..94126500 100755
--- a/vk_helper.py
+++ b/vk_helper.py
@@ -377,8 +377,6 @@ def recreate_structs():
def get_struct_name_from_struct_type(struct_type):
# Note: All struct types are now camel-case
# Debug Report has an inconsistency - so need special case.
- if ("VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT" == struct_type):
- return "VkDebugReportCallbackCreateInfoEXT"
caps_struct_name = struct_type.replace("_STRUCTURE_TYPE", "")
char_idx = 0
struct_name = ''
@@ -391,6 +389,12 @@ def get_struct_name_from_struct_type(struct_type):
struct_name += caps_struct_name[char_idx].lower()
char_idx += 1
+ # Vendor extension structs ending in vendor TLA need to be uppercase.
+ if (caps_struct_name[-2:] == "NV"):
+ struct_name = struct_name[:-2] + caps_struct_name[-2:]
+ if ((caps_struct_name[-3:] == "AMD") or (caps_struct_name[-3:] == "IMG") or (caps_struct_name[-3:] == "EXT")):
+ struct_name = struct_name[:-3] + caps_struct_name[-3:]
+
return struct_name
# Emit an ifdef if incoming func matches a platform identifier
@@ -1163,12 +1167,16 @@ class StructWrapperGen:
struct_name = get_struct_name_from_struct_type(v)
if struct_name not in self.struct_dict:
continue
+ if 'WIN32' in v:
+ sh_funcs.append("#ifdef VK_USE_PLATFORM_WIN32_KHR")
print_func_name = self._get_sh_func_name(struct_name)
#sh_funcs.append('string %s(const %s* pStruct, const string prefix);' % (self._get_sh_func_name(s), typedef_fwd_dict[s]))
sh_funcs.append(' case %s:\n {' % (v))
sh_funcs.append(' return %s((%s*)pStruct, indent);' % (print_func_name, struct_name))
sh_funcs.append(' }')
sh_funcs.append(' break;')
+ if 'WIN32' in v:
+ sh_funcs.append("#endif // VK_USE_PLATFORM_WIN32_KHR")
sh_funcs.append(" default:")
sh_funcs.append(" return string();")
sh_funcs.append('%s' % lineinfo.get())
@@ -1418,7 +1426,7 @@ class StructWrapperGen:
sh_funcs.append('%s}' % (indent))
else:
sh_funcs.append('%sstructSize += pStruct->%s*sizeof(%s);' % (indent, self.struct_dict[s][m]['array_size'], self.struct_dict[s][m]['type']))
- elif self.struct_dict[s][m]['ptr'] and 'pNext' != self.struct_dict[s][m]['name']:
+ elif self.struct_dict[s][m]['ptr'] and 'pNext' != self.struct_dict[s][m]['name'] and 'dpy' != self.struct_dict[s][m]['name']:
if 'char' in self.struct_dict[s][m]['type'].lower():
sh_funcs.append('%sstructSize += (pStruct->%s != NULL) ? sizeof(%s)*(1+strlen(pStruct->%s)) : 0;' % (indent, self.struct_dict[s][m]['name'], self.struct_dict[s][m]['type'], self.struct_dict[s][m]['name']))
elif is_type(self.struct_dict[s][m]['type'], 'struct'):
@@ -1460,6 +1468,8 @@ class StructWrapperGen:
if struct_name not in self.struct_dict:
continue
+ if 'WIN32' in v:
+ sh_funcs.append("#ifdef VK_USE_PLATFORM_WIN32_KHR")
sh_funcs.append('%scase %s:' % (indent, v))
sh_funcs.append('%s{' % (indent))
indent += ' '
@@ -1467,6 +1477,8 @@ class StructWrapperGen:
sh_funcs.append('%sbreak;' % (indent))
indent = indent[:-4]
sh_funcs.append('%s}' % (indent))
+ if 'WIN32' in v:
+ sh_funcs.append("#endif // VK_USE_PLATFORM_WIN32_KHR")
sh_funcs.append('%sdefault:' % (indent))
indent += ' '
sh_funcs.append('%sassert(0);' % (indent))