Add vkCmd* device extension functions
vkCmdBeginQueryIndexedEXT and many other commands starting with "vkCmd"
are device extensions. Update our code generator to detect those device
extensions as well.
Bug: 229120758
Change-Id: I43030bb15d18fc1a7330d7c0b4f21538a48938e9
diff --git a/registry/vulkan/scripts/cereal/functable.py b/registry/vulkan/scripts/cereal/functable.py
index 58aa642..0b45edc 100644
--- a/registry/vulkan/scripts/cereal/functable.py
+++ b/registry/vulkan/scripts/cereal/functable.py
@@ -167,11 +167,15 @@
cgen.beginBlock()
if self.feature == "VK_VERSION_1_1":
cgen.stmt("auto resources = ResourceTracker::get()")
+ if "VkCommandBuffer" == api.parameters[0].typeName:
+ cgen.stmt("VkDevice device = resources->getDevice(commandBuffer)")
cgen.beginIf("resources->getApiVersionFromDevice(device) < VK_API_VERSION_1_1")
cgen.stmt("sOnInvalidDynamicallyCheckedCall(\"%s\", \"%s\")" % (api.name, self.feature))
cgen.endIf()
elif self.feature != "VK_VERSION_1_0":
cgen.stmt("auto resources = ResourceTracker::get()")
+ if "VkCommandBuffer" == api.parameters[0].typeName:
+ cgen.stmt("VkDevice device = resources->getDevice(commandBuffer);")
cgen.beginIf("!resources->hasDeviceExtension(device, \"%s\")" % self.feature)
cgen.stmt("sOnInvalidDynamicallyCheckedCall(\"%s\", \"%s\")" % (api.name, self.feature))
cgen.endIf()
@@ -321,4 +325,5 @@
self.module.appendImpl(self.cgen.swapCode())
def isDeviceDispatch(self, api):
- return len(api.parameters) > 0 and "VkDevice" == api.parameters[0].typeName
+ return len(api.parameters) > 0 and (
+ "VkDevice" == api.parameters[0].typeName or "VkCommandBuffer" == api.parameters[0].typeName)