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=""VK_NV_extension_433"" 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"/>