aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olv@google.com>2016-05-16 07:43:38 +0800
committerTobin Ehlis <tobine@google.com>2016-05-24 06:29:13 -0600
commit75a563e815c2606f61db88b9e1ed3c51ca7dbe1d (patch)
tree0b45e28f57ddb98d893bf6bd656e0fc46816449f
parent829634f559bfed6fc194010ff190eb6c13304ceb (diff)
downloadusermoji-75a563e815c2606f61db88b9e1ed3c51ca7dbe1d.tar.xz
vk-layer-generate.py: no interface functions in layer functions
Move handling of interface functions out of layers' GetInstanceProcAddr to v0's vkGetInstanceProcAddr.
-rwxr-xr-xvk-layer-generate.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index 3d45a694..7d7257be 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -428,6 +428,15 @@ class Subcommand(object):
body.append('')
body.append('VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char *funcName)')
body.append('{')
+ body.append(' if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties"))')
+ body.append(' return reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateInstanceLayerProperties);')
+ body.append(' if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties"))')
+ body.append(' return reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateDeviceLayerProperties);')
+ body.append(' if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties"))')
+ body.append(' return reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateInstanceExtensionProperties);')
+ body.append(' if (!strcmp(funcName, "vkGetInstanceProcAddr"))')
+ body.append(' return reinterpret_cast<PFN_vkVoidFunction>(vkGetInstanceProcAddr);')
+ body.append('')
body.append(' return %s::vkGetInstanceProcAddr(instance, funcName);' % self.layer_name)
body.append('}')
@@ -440,11 +449,13 @@ class Subcommand(object):
funcs = []
intercepted = []
for proto in self.protos:
- if proto.name in ["GetDeviceProcAddr",
- "GetInstanceProcAddr",
- "EnumerateInstanceExtensionProperties",
+ if proto.name in ["EnumerateInstanceExtensionProperties",
"EnumerateInstanceLayerProperties",
"EnumerateDeviceLayerProperties"]:
+ # the layer do not need to define these
+ continue
+ elif proto.name in ["GetDeviceProcAddr",
+ "GetInstanceProcAddr"]:
intercepted.append(proto)
else:
intercept = self.generate_intercept(proto, qual)
@@ -492,6 +503,11 @@ class Subcommand(object):
body.append("{")
body.append(generate_get_proc_addr_check("name"))
body.append("")
+ body.append(" // we should never be queried for these commands")
+ body.append(" assert(strcmp(name, \"vkEnumerateInstanceLayerProperties\") &&")
+ body.append(" strcmp(name, \"vkEnumerateInstanceExtensionProperties\") &&")
+ body.append(" strcmp(name, \"vkEnumerateDeviceLayerProperties\"));")
+ body.append("")
body.append(" name += 2;")
body.append(" %s" % "\n ".join(instance_lookups))
body.append("")