Fix instance extension checks.

We were erroneously not checking for some functions and erroneously checking for others. Use the underlying extension type to decide when to check.

Bug: 236130541
Test: Verified graphics continue to work.
Change-Id: I2303a547599a35e942341eeb85c0719be244c913
diff --git a/registry/vulkan/scripts/cereal/functable.py b/registry/vulkan/scripts/cereal/functable.py
index 1558c2b..b49dbe2 100644
--- a/registry/vulkan/scripts/cereal/functable.py
+++ b/registry/vulkan/scripts/cereal/functable.py
@@ -242,6 +242,8 @@
             "auto resources = ResourceTracker::get()")
         self.cgen.stmt(
             "bool has1_1OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_1")
+        self.cgen.stmt(
+            "bool has1_2OrHigher = resources->getApiVersionFromInstance(instance) >= VK_API_VERSION_1_2")
 
         prevFeature = None
         for e, f in zip(self.entries, self.entryFeatures):
@@ -251,7 +253,7 @@
             if featureEndif:
                 self.cgen.leftline("#endif")
                 self.cgen.leftline("#ifdef %s" % f)
-            
+
             if featureif:
                 self.cgen.leftline("#ifdef %s" % f)
 
@@ -261,6 +263,13 @@
 
             if e.name in EXCLUDED_APIS:
                 self.cgen.stmt("return nullptr")
+            elif f == "VK_VERSION_1_2":
+                if self.isDeviceDispatch(e):
+                    self.cgen.stmt("return (void*)dynCheck_entry_%s" % e.name)
+                else:
+                    self.cgen.stmt( \
+                        "return has1_2OrHigher ? %s : nullptr" % \
+                        entryPointExpr)
             elif f == "VK_VERSION_1_1":
                 if self.isDeviceDispatch(e):
                     self.cgen.stmt("return (void*)dynCheck_entry_%s" % e.name)
@@ -269,12 +278,19 @@
                         "return has1_1OrHigher ? %s : nullptr" % \
                         entryPointExpr)
             elif f != "VK_VERSION_1_0":
-                if self.isDeviceDispatch(e):
-                    self.cgen.stmt("return (void*)dynCheck_entry_%s" % e.name)
-                else:
-                    self.cgen.stmt( \
-                        "bool hasExt = resources->hasInstanceExtension(instance, \"%s\")"  % f)
+                entryNeedsInstanceExtensionCheck = self.cmdToFeatureType[e.name] == "instance"
+
+                entryPrefix = "dynCheck_" if self.isDeviceDispatch(e) else ""
+                entryPointExpr = "(void*)%sentry_%s" % (entryPrefix, e.name)
+
+                if entryNeedsInstanceExtensionCheck:
+                    self.cgen.stmt("bool hasExt = resources->hasInstanceExtension(instance, \"%s\")"  % f)
                     self.cgen.stmt("return hasExt ? %s : nullptr" % entryPointExpr)
+                else:
+                    # TODO(b/236246382): We need to check the device extension support here.
+                    self.cgen.stmt("// TODO(b/236246382): Check support for device extension");
+                    self.cgen.stmt("return %s" % entryPointExpr)
+
             else:
                 self.cgen.stmt("return %s" % entryPointExpr)
             self.cgen.endIf()
@@ -304,7 +320,7 @@
             if featureEndif:
                 self.cgen.leftline("#endif")
                 self.cgen.leftline("#ifdef %s" % f)
-            
+
             if featureif:
                 self.cgen.leftline("#ifdef %s" % f)
 
diff --git a/registry/vulkan/xml/vk.xml b/registry/vulkan/xml/vk.xml
index 0732e51..25344df 100644
--- a/registry/vulkan/xml/vk.xml
+++ b/registry/vulkan/xml/vk.xml
@@ -17640,7 +17640,7 @@
                 <enum value="&quot;VK_NV_extension_433&quot;"           name="VK_NV_EXTENSION_433_EXTENSION_NAME"/>
             </require>
         </extension>
-        <extension name="VK_GOOGLE_gfxstream" number="386" author="GOOGLE" contact="Lingfeng Yang @frank,Roman Kiryanov @rkir,Yilong Li @liyl_google" supported="vulkan">
+        <extension name="VK_GOOGLE_gfxstream" number="386" author="GOOGLE" contact="Lingfeng Yang @frank,Roman Kiryanov @rkir,Yilong Li @liyl_google" supported="vulkan" type="instance">
             <require>
                 <enum value="0"                                             name="VK_GOOGLE_GFXSTREAM_SPEC_VERSION"/>
                 <enum value="386"                                           name="VK_GOOGLE_GFXSTREAM_NUMBER"/>