aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2016-01-29 09:24:46 -0700
committerMark Lobodzinski <mark@lunarg.com>2016-01-29 11:21:03 -0700
commit7b69f0ebefd1f256f7c67b814169057f0134849a (patch)
tree8222d0b47aa4b4494b7c98a1ec51686ed32b7566
parentb090e4f08947bfc3719f1c74f5d3a3bb55197a98 (diff)
downloadusermoji-7b69f0ebefd1f256f7c67b814169057f0134849a.tar.xz
layers: MR181/GL102 Fix unique_objects to correctly assign local vars under ptrs
If a variable that needs to be restored is below a ptr, then need to declare it at the top level, but only assign it if the ptr(s) that it's below are non-null.
-rwxr-xr-xvk-layer-generate.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index e72a9a54..b0235f0f 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -2120,7 +2120,13 @@ class UniqueObjectsSubcommand(Subcommand):
indent = indent[4:]
pre_code += '%s}\n' % (indent)
if not first_level_param: # embedded in a ptr/struct so need to undo the update
- decls += ' %s local_%s = %s%s;\n' % (struct_uses[obj], name, prefix, name)
+ if '->' in prefix:
+ # Since this variable is embedded under a ptr, need to decl up front, but wait
+ # to assign it inside of the "if" block(s) for surrounding ptr(s)
+ decls += ' %s local_%s = VK_NULL_HANDLE;\n' % (struct_uses[obj], name)
+ pre_code = '%slocal_%s = %s%s;\n%s' % (indent, name, prefix, name, pre_code)
+ else:
+ decls += ' %s local_%s = %s%s;\n' % (struct_uses[obj], name, prefix, name)
post_code += '%sif (%s%s) {\n' %(indent, prefix, name)
post_code += '%s %s* p%s = (%s*)%s%s%s;\n' % (indent, struct_uses[obj], name, struct_uses[obj], deref_txt, prefix, name)
post_code += '%s *p%s = local_%s;\n' % (indent, name, name)