12139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn/* 22139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn * 344aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * Copyright (c) 2015 The Khronos Group Inc. 444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * Copyright (c) 2015 Valve Corporation 544aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * Copyright (c) 2015 LunarG, Inc. 62139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn * 744aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * Permission is hereby granted, free of charge, to any person obtaining a copy 844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * of this software and/or associated documentation files (the "Materials"), to 944aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * deal in the Materials without restriction, including without limitation the 1044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 1144aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * sell copies of the Materials, and to permit persons to whom the Materials are 1244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * furnished to do so, subject to the following conditions: 132139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn * 1444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * The above copyright notice(s) and this permission notice shall be included in 1544aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * all copies or substantial portions of the Materials. 162139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn * 1744aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 182139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1944aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * 2144aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 2244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 2344aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE 2444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn * USE OR OTHER DEALINGS IN THE MATERIALS. 2596cd795bb585711057cd90d37a2251419384c937Courtney Goeltzenleuchter * 2696cd795bb585711057cd90d37a2251419384c937Courtney Goeltzenleuchter * Author: Jon Ashburn <jon@lunarg.com> 272139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn */ 282139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn 292139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn#include <string.h> 30994560074f43babedf590909b2af41aca59167baJon Ashburn#include "debug_report.h" 31a81e8ac0c34d96ed4e81c95f108e80c3e97bd9f9Ian Elliott#include "wsi.h" 322139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn 3344aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburnstatic inline void *trampolineGetProcAddr(struct loader_instance *inst, 3444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn const char *funcName) { 3544aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn // Don't include or check global functions 36994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetInstanceProcAddr")) 3744aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetInstanceProcAddr; 38994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyInstance")) 3944aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyInstance; 40994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkEnumeratePhysicalDevices")) 4144aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkEnumeratePhysicalDevices; 42994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures")) 4344aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetPhysicalDeviceFeatures; 44994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties")) 4544aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetPhysicalDeviceFormatProperties; 46994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetPhysicalDeviceImageFormatProperties")) 4744aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetPhysicalDeviceImageFormatProperties; 48994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties")) 4944aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return ( 5044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn PFN_vkVoidFunction)vkGetPhysicalDeviceSparseImageFormatProperties; 51994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetPhysicalDeviceProperties")) 5244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetPhysicalDeviceProperties; 53994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties")) 5444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetPhysicalDeviceQueueFamilyProperties; 55994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties")) 5644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetPhysicalDeviceMemoryProperties; 57994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties")) 5844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkEnumerateDeviceLayerProperties; 59994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties")) 6044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkEnumerateDeviceExtensionProperties; 61994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateDevice")) 6244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateDevice; 63994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetDeviceProcAddr")) 6444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetDeviceProcAddr; 65994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyDevice")) 6644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyDevice; 67994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetDeviceQueue")) 6844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetDeviceQueue; 69994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkQueueSubmit")) 7044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkQueueSubmit; 71994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkQueueWaitIdle")) 7244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkQueueWaitIdle; 73994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDeviceWaitIdle")) 7444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDeviceWaitIdle; 75994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkAllocateMemory")) 7644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkAllocateMemory; 77994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkFreeMemory")) 7844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkFreeMemory; 79994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkMapMemory")) 8044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkMapMemory; 81994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkUnmapMemory")) 8244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkUnmapMemory; 83994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkFlushMappedMemoryRanges")) 8444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkFlushMappedMemoryRanges; 85994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkInvalidateMappedMemoryRanges")) 8644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkInvalidateMappedMemoryRanges; 87994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetDeviceMemoryCommitment")) 8844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetDeviceMemoryCommitment; 89994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements")) 9044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetImageSparseMemoryRequirements; 91994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetImageMemoryRequirements")) 9244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetImageMemoryRequirements; 93994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetBufferMemoryRequirements")) 9444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetBufferMemoryRequirements; 95994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkBindImageMemory")) 9644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkBindImageMemory; 97994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkBindBufferMemory")) 9844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkBindBufferMemory; 99994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkQueueBindSparse")) 10044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkQueueBindSparse; 101994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateFence")) 10244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateFence; 103994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyFence")) 10444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyFence; 105994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetFenceStatus")) 10644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetFenceStatus; 107994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkResetFences")) 10844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkResetFences; 109994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkWaitForFences")) 11044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkWaitForFences; 111994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateSemaphore")) 11244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateSemaphore; 113994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroySemaphore")) 11444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroySemaphore; 115994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateEvent")) 11644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateEvent; 117994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyEvent")) 11844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyEvent; 119994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetEventStatus")) 12044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetEventStatus; 121994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkSetEvent")) 12244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkSetEvent; 123994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkResetEvent")) 12444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkResetEvent; 125994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateQueryPool")) 12644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateQueryPool; 127994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyQueryPool")) 12844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyQueryPool; 129994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetQueryPoolResults")) 13044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetQueryPoolResults; 131994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateBuffer")) 13244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateBuffer; 133994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyBuffer")) 13444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyBuffer; 135994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateBufferView")) 13644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateBufferView; 137994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyBufferView")) 13844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyBufferView; 139994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateImage")) 14044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateImage; 141994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyImage")) 14244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyImage; 143994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetImageSubresourceLayout")) 14444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetImageSubresourceLayout; 145994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateImageView")) 14644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateImageView; 147994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyImageView")) 14844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyImageView; 149994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateShaderModule")) 15044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateShaderModule; 151994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyShaderModule")) 15244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyShaderModule; 153994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreatePipelineCache")) 15444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreatePipelineCache; 155994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyPipelineCache")) 15644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyPipelineCache; 157994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetPipelineCacheData")) 15844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetPipelineCacheData; 159994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkMergePipelineCaches")) 16044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkMergePipelineCaches; 161994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateGraphicsPipelines")) 16244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateGraphicsPipelines; 163994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateComputePipelines")) 16444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateComputePipelines; 165994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyPipeline")) 16644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyPipeline; 167994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreatePipelineLayout")) 16844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreatePipelineLayout; 169994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyPipelineLayout")) 17044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyPipelineLayout; 171994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateSampler")) 17244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateSampler; 173994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroySampler")) 17444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroySampler; 175994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateDescriptorSetLayout")) 17644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateDescriptorSetLayout; 177994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyDescriptorSetLayout")) 17844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyDescriptorSetLayout; 179994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateDescriptorPool")) 18044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateDescriptorPool; 181994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyDescriptorPool")) 18244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyDescriptorPool; 183994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkResetDescriptorPool")) 18444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkResetDescriptorPool; 185994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkAllocateDescriptorSets")) 18644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkAllocateDescriptorSets; 187994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkFreeDescriptorSets")) 18844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkFreeDescriptorSets; 189994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkUpdateDescriptorSets")) 19044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkUpdateDescriptorSets; 191994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateFramebuffer")) 19244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateFramebuffer; 193994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyFramebuffer")) 19444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyFramebuffer; 195994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateRenderPass")) 19644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateRenderPass; 197994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyRenderPass")) 19844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyRenderPass; 199994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkGetRenderAreaGranularity")) 20044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkGetRenderAreaGranularity; 201994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCreateCommandPool")) 20244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCreateCommandPool; 203994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkDestroyCommandPool")) 20444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkDestroyCommandPool; 205994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkResetCommandPool")) 20644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkResetCommandPool; 207994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkAllocateCommandBuffers")) 20844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkAllocateCommandBuffers; 209994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkFreeCommandBuffers")) 21044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkFreeCommandBuffers; 211994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkBeginCommandBuffer")) 21244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkBeginCommandBuffer; 213994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkEndCommandBuffer")) 21444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkEndCommandBuffer; 215994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkResetCommandBuffer")) 21644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkResetCommandBuffer; 217994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdBindPipeline")) 21844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdBindPipeline; 219994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdBindDescriptorSets")) 22044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdBindDescriptorSets; 221994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdBindVertexBuffers")) 22244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdBindVertexBuffers; 223994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdBindIndexBuffer")) 22444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdBindIndexBuffer; 225994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetViewport")) 22644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetViewport; 227994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetScissor")) 22844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetScissor; 229994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetLineWidth")) 23044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetLineWidth; 231994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetDepthBias")) 23244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetDepthBias; 233994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetBlendConstants")) 23444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetBlendConstants; 235994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetDepthBounds")) 23644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetDepthBounds; 237994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetStencilCompareMask")) 23844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetStencilCompareMask; 239994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetStencilWriteMask")) 24044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetStencilWriteMask; 241994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetStencilReference")) 24244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetStencilReference; 243994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdDraw")) 24444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdDraw; 245994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdDrawIndexed")) 24644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdDrawIndexed; 247994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdDrawIndirect")) 24844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdDrawIndirect; 249994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdDrawIndexedIndirect")) 25044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdDrawIndexedIndirect; 251994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdDispatch")) 25244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdDispatch; 253994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdDispatchIndirect")) 25444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdDispatchIndirect; 255994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdCopyBuffer")) 25644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdCopyBuffer; 257994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdCopyImage")) 25844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdCopyImage; 259994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdBlitImage")) 26044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdBlitImage; 261994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdCopyBufferToImage")) 26244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdCopyBufferToImage; 263994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdCopyImageToBuffer")) 26444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdCopyImageToBuffer; 265994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdUpdateBuffer")) 26644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdUpdateBuffer; 267994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdFillBuffer")) 26844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdFillBuffer; 269994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdClearColorImage")) 27044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdClearColorImage; 271994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdClearDepthStencilImage")) 27244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdClearDepthStencilImage; 273994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdClearAttachments")) 27444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdClearAttachments; 275994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdResolveImage")) 27644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdResolveImage; 277994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdSetEvent")) 27844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdSetEvent; 279994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdResetEvent")) 28044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdResetEvent; 281994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdWaitEvents")) 28244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdWaitEvents; 283994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdPipelineBarrier")) 28444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdPipelineBarrier; 285994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdBeginQuery")) 28644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdBeginQuery; 287994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdEndQuery")) 28844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdEndQuery; 289994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdResetQueryPool")) 29044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdResetQueryPool; 291994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdWriteTimestamp")) 29244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdWriteTimestamp; 293994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdCopyQueryPoolResults")) 29444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdCopyQueryPoolResults; 295994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdPushConstants")) 29644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdPushConstants; 297994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdBeginRenderPass")) 29844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdBeginRenderPass; 299994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdNextSubpass")) 30044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdNextSubpass; 301994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdEndRenderPass")) 30244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdEndRenderPass; 303994560074f43babedf590909b2af41aca59167baJon Ashburn if (!strcmp(funcName, "vkCmdExecuteCommands")) 30444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (PFN_vkVoidFunction)vkCmdExecuteCommands; 305994560074f43babedf590909b2af41aca59167baJon Ashburn 306994560074f43babedf590909b2af41aca59167baJon Ashburn // Instance extensions 307994560074f43babedf590909b2af41aca59167baJon Ashburn void *addr; 308994560074f43babedf590909b2af41aca59167baJon Ashburn if (debug_report_instance_gpa(inst, funcName, &addr)) 309994560074f43babedf590909b2af41aca59167baJon Ashburn return addr; 310994560074f43babedf590909b2af41aca59167baJon Ashburn 311994560074f43babedf590909b2af41aca59167baJon Ashburn if (wsi_swapchain_instance_gpa(inst, funcName, &addr)) 312994560074f43babedf590909b2af41aca59167baJon Ashburn return addr; 313994560074f43babedf590909b2af41aca59167baJon Ashburn 314429e19f6db395429cd2fe1a82f7a5df05e534dd1Jon Ashburn addr = loader_dev_ext_gpa(inst, funcName); 315429e19f6db395429cd2fe1a82f7a5df05e534dd1Jon Ashburn return addr; 316994560074f43babedf590909b2af41aca59167baJon Ashburn} 317994560074f43babedf590909b2af41aca59167baJon Ashburn 31844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburnstatic inline void *globalGetProcAddr(const char *name) { 3192139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn if (!name || name[0] != 'v' || name[1] != 'k') 3202139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn return NULL; 3212139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn 3222139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn name += 2; 3232139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn if (!strcmp(name, "CreateInstance")) 32444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkCreateInstance; 32574c4ce9c4fa101c0989a29cf918e799fa67adcecCourtney Goeltzenleuchter if (!strcmp(name, "EnumerateInstanceExtensionProperties")) 32644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkEnumerateInstanceExtensionProperties; 32774c4ce9c4fa101c0989a29cf918e799fa67adcecCourtney Goeltzenleuchter if (!strcmp(name, "EnumerateInstanceLayerProperties")) 32844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkEnumerateInstanceLayerProperties; 329994560074f43babedf590909b2af41aca59167baJon Ashburn 3302139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn return NULL; 3312139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn} 3322139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn 3332139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn/* These functions require special handling by the loader. 3342139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn* They are not just generic trampoline code entrypoints. 3352139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn* Thus GPA must return loader entrypoint for these instead of first function 3362139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn* in the chain. */ 33744aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburnstatic inline void *loader_non_passthrough_gipa(const char *name) { 3382139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn if (!name || name[0] != 'v' || name[1] != 'k') 3392139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn return NULL; 3402139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn 3412139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn name += 2; 3422139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn if (!strcmp(name, "CreateInstance")) 34344aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkCreateInstance; 3442139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn if (!strcmp(name, "DestroyInstance")) 34544aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkDestroyInstance; 346230556b692221db984be0294e849dd30d1ce301cJon Ashburn if (!strcmp(name, "GetDeviceProcAddr")) 34744aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkGetDeviceProcAddr; 34844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn // remove once no longer locks 3492139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn if (!strcmp(name, "EnumeratePhysicalDevices")) 35044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkEnumeratePhysicalDevices; 3518aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn if (!strcmp(name, "EnumerateDeviceExtensionProperties")) 35244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkEnumerateDeviceExtensionProperties; 3538aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn if (!strcmp(name, "EnumerateDeviceLayerProperties")) 35444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkEnumerateDeviceLayerProperties; 35553c167777cbf86f9f05aca0404162de3b7aa543bJon Ashburn if (!strcmp(name, "GetInstanceProcAddr")) 35644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkGetInstanceProcAddr; 357a1eef1a0fa4e7af0053fb4ab7d07f45c152b5c76Jon Ashburn if (!strcmp(name, "CreateDevice")) 35844aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkCreateDevice; 3598aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn 3608aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn return NULL; 3618aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn} 3628aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn 36344aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburnstatic inline void *loader_non_passthrough_gdpa(const char *name) { 3648aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn if (!name || name[0] != 'v' || name[1] != 'k') 3658aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn return NULL; 3668aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn 3678aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn name += 2; 3688aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn 3691245cec54fd74fea87bc95913788726054a91518Jon Ashburn if (!strcmp(name, "GetDeviceProcAddr")) 37044aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkGetDeviceProcAddr; 3718aa75cbc41b2b5e9e5dd4742a49f279f55d1c028Jon Ashburn if (!strcmp(name, "DestroyDevice")) 37244aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkDestroyDevice; 3732139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn if (!strcmp(name, "GetDeviceQueue")) 37444aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkGetDeviceQueue; 3751f85191a3a8479194ecb7b937aee284cf80cf08fChia-I Wu if (!strcmp(name, "AllocateCommandBuffers")) 37644aed66f451bb8cb72e233f704aa1dd68397ffbbJon Ashburn return (void *)vkAllocateCommandBuffers; 3772139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn 3782139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn return NULL; 3792139a3e9bb6cf96db0431b456798c205e067bb3cJon Ashburn} 380