aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPyry Haulos <phaulos@google.com>2017-04-05 11:05:03 -0700
committerPyry Haulos <phaulos@google.com>2017-04-06 13:49:04 -0400
commitbbd3dce44fafaa4b1952b63564022f19b3a65ca3 (patch)
tree10e7f5a0f26e04012a11d85b584b18370df9292e
parent9b55cad37af87bcb27d1b8523f475bff4480383e (diff)
downloaddeqp-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.inl1
-rw-r--r--external/vulkancts/framework/vulkan/vkPlatform.cpp4
-rw-r--r--external/vulkancts/scripts/gen_framework.py6
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")