diff options
author | Pyry Haulos <phaulos@google.com> | 2017-04-05 11:05:03 -0700 |
---|---|---|
committer | Pyry Haulos <phaulos@google.com> | 2017-04-06 13:49:04 -0400 |
commit | bbd3dce44fafaa4b1952b63564022f19b3a65ca3 (patch) | |
tree | 10e7f5a0f26e04012a11d85b584b18370df9292e | |
parent | 9b55cad37af87bcb27d1b8523f475bff4480383e (diff) | |
download | deqp-bbd3dce44fafaa4b1952b63564022f19b3a65ca3.tar.gz |
Use vkGetInstanceProcAddr(NULL) to load platform funcs
Vulkan specification says that only vkGetInstanceProcAddr() has to be
loaded using platform-specific means. Other 'platform'-class functions,
listed below, can be loaded using vkGetInstanceProcAddr(NULL, pName).
Following functions are loaded with vkGetInstanceProcAddr():
* vkEnumerateInstanceExtensionProperties
* vkEnumerateInstanceLayerProperties
* vkCreateInstance
Change-Id: Iab0657bf93d3a36e4f4dda4a1f1550024db0890e
-rw-r--r-- | external/vulkancts/framework/vulkan/vkInitPlatformFunctionPointers.inl | 1 | ||||
-rw-r--r-- | external/vulkancts/framework/vulkan/vkPlatform.cpp | 4 | ||||
-rw-r--r-- | external/vulkancts/scripts/gen_framework.py | 6 |
3 files changed, 6 insertions, 5 deletions
diff --git a/external/vulkancts/framework/vulkan/vkInitPlatformFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkInitPlatformFunctionPointers.inl index 480eaac81..ab4c82047 100644 --- a/external/vulkancts/framework/vulkan/vkInitPlatformFunctionPointers.inl +++ b/external/vulkancts/framework/vulkan/vkInitPlatformFunctionPointers.inl @@ -2,6 +2,5 @@ * be lost! Modify the generating script instead. */ m_vk.createInstance = (CreateInstanceFunc) GET_PROC_ADDR("vkCreateInstance"); -m_vk.getInstanceProcAddr = (GetInstanceProcAddrFunc) GET_PROC_ADDR("vkGetInstanceProcAddr"); m_vk.enumerateInstanceExtensionProperties = (EnumerateInstanceExtensionPropertiesFunc) GET_PROC_ADDR("vkEnumerateInstanceExtensionProperties"); m_vk.enumerateInstanceLayerProperties = (EnumerateInstanceLayerPropertiesFunc) GET_PROC_ADDR("vkEnumerateInstanceLayerProperties"); diff --git a/external/vulkancts/framework/vulkan/vkPlatform.cpp b/external/vulkancts/framework/vulkan/vkPlatform.cpp index 9f4722c5e..f8beab8eb 100644 --- a/external/vulkancts/framework/vulkan/vkPlatform.cpp +++ b/external/vulkancts/framework/vulkan/vkPlatform.cpp @@ -29,7 +29,9 @@ namespace vk PlatformDriver::PlatformDriver (const tcu::FunctionLibrary& library) { -#define GET_PROC_ADDR(NAME) library.getFunction(NAME) + m_vk.getInstanceProcAddr = (GetInstanceProcAddrFunc)library.getFunction("vkGetInstanceProcAddr"); + +#define GET_PROC_ADDR(NAME) m_vk.getInstanceProcAddr(DE_NULL, NAME) #include "vkInitPlatformFunctionPointers.inl" #undef GET_PROC_ADDR } diff --git a/external/vulkancts/scripts/gen_framework.py b/external/vulkancts/scripts/gen_framework.py index 1893d7d65..67ca19594 100644 --- a/external/vulkancts/scripts/gen_framework.py +++ b/external/vulkancts/scripts/gen_framework.py @@ -549,10 +549,10 @@ def writeFunctionPtrTypes (api, filename): def writeFunctionPointers (api, filename, functionTypes): writeInlFile(filename, INL_HEADER, indentLines(["%s\t%s;" % (getFunctionTypeName(function), getInterfaceName(function)) for function in api.functions if function.getType() in functionTypes])) -def writeInitFunctionPointers (api, filename, functionTypes): +def writeInitFunctionPointers (api, filename, functionTypes, cond = None): def makeInitFunctionPointers (): for function in api.functions: - if function.getType() in functionTypes: + if function.getType() in functionTypes and (cond == None or cond(function)): yield "m_vk.%s\t= (%s)\tGET_PROC_ADDR(\"%s\");" % (getInterfaceName(function), getFunctionTypeName(function), function.name) writeInlFile(filename, INL_HEADER, indentLines(makeInitFunctionPointers())) @@ -926,7 +926,7 @@ if __name__ == "__main__": writeFunctionPointers (api, os.path.join(VULKAN_DIR, "vkPlatformFunctionPointers.inl"), functionTypes = platformFuncs) writeFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInstanceFunctionPointers.inl"), functionTypes = instanceFuncs) writeFunctionPointers (api, os.path.join(VULKAN_DIR, "vkDeviceFunctionPointers.inl"), functionTypes = deviceFuncs) - writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitPlatformFunctionPointers.inl"), functionTypes = platformFuncs) + writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitPlatformFunctionPointers.inl"), functionTypes = platformFuncs, cond = lambda f: f.name != "vkGetInstanceProcAddr") writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitInstanceFunctionPointers.inl"), functionTypes = instanceFuncs) writeInitFunctionPointers (api, os.path.join(VULKAN_DIR, "vkInitDeviceFunctionPointers.inl"), functionTypes = deviceFuncs) writeFuncPtrInterfaceImpl (api, os.path.join(VULKAN_DIR, "vkPlatformDriverImpl.inl"), functionTypes = platformFuncs, className = "PlatformDriver") |