diff options
| author | David Pinedo <david@lunarg.com> | 2016-11-17 15:03:16 -0700 |
|---|---|---|
| committer | David Pinedo <david@lunarg.com> | 2016-11-17 15:03:16 -0700 |
| commit | ea5769bf2204f1486243bb33402c592c71111691 (patch) | |
| tree | 9b1b1d531861d8c729dccdba02a98c0e51966697 | |
| parent | 6d9457719304bd4fae2db1f9e945f608258e5b9f (diff) | |
| download | usermoji-ea5769bf2204f1486243bb33402c592c71111691.tar.xz | |
codegen: change script to handle NV ext structs
Modified vk_helper.py to handle NV-specific structures
| -rwxr-xr-x | vk_helper.py | 18 |
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)) |
