15db71995Sopenharmony_ci/* 25db71995Sopenharmony_ci * 35db71995Sopenharmony_ci * Copyright (c) 2015-2021 The Khronos Group Inc. 45db71995Sopenharmony_ci * Copyright (c) 2015-2021 Valve Corporation 55db71995Sopenharmony_ci * Copyright (c) 2015-2021 LunarG, Inc. 65db71995Sopenharmony_ci * 75db71995Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 85db71995Sopenharmony_ci * you may not use this file except in compliance with the License. 95db71995Sopenharmony_ci * You may obtain a copy of the License at 105db71995Sopenharmony_ci * 115db71995Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 125db71995Sopenharmony_ci * 135db71995Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 145db71995Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 155db71995Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 165db71995Sopenharmony_ci * See the License for the specific language governing permissions and 175db71995Sopenharmony_ci * limitations under the License. 185db71995Sopenharmony_ci * 195db71995Sopenharmony_ci * Author: Jon Ashburn <jon@lunarg.com> 205db71995Sopenharmony_ci * Author: Charles Giessen <charles@lunarg.com> 215db71995Sopenharmony_ci */ 225db71995Sopenharmony_ci 235db71995Sopenharmony_ci#include "gpa_helper.h" 245db71995Sopenharmony_ci 255db71995Sopenharmony_ci#include <string.h> 265db71995Sopenharmony_ci 275db71995Sopenharmony_ci#include "loader.h" 285db71995Sopenharmony_ci#include "debug_utils.h" 295db71995Sopenharmony_ci#include "unknown_function_handling.h" 305db71995Sopenharmony_ci#include "wsi.h" 315db71995Sopenharmony_ci 325db71995Sopenharmony_civoid *trampoline_get_proc_addr(struct loader_instance *inst, const char *funcName) { 335db71995Sopenharmony_ci // Don't include or check global functions 345db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetInstanceProcAddr")) return vkGetInstanceProcAddr; 355db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyInstance")) return vkDestroyInstance; 365db71995Sopenharmony_ci if (!strcmp(funcName, "vkEnumeratePhysicalDevices")) return vkEnumeratePhysicalDevices; 375db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures")) return vkGetPhysicalDeviceFeatures; 385db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties")) return vkGetPhysicalDeviceFormatProperties; 395db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceImageFormatProperties")) return vkGetPhysicalDeviceImageFormatProperties; 405db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties")) return vkGetPhysicalDeviceSparseImageFormatProperties; 415db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceProperties")) return vkGetPhysicalDeviceProperties; 425db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties")) return vkGetPhysicalDeviceQueueFamilyProperties; 435db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties")) return vkGetPhysicalDeviceMemoryProperties; 445db71995Sopenharmony_ci if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties")) return vkEnumerateDeviceLayerProperties; 455db71995Sopenharmony_ci if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties")) return vkEnumerateDeviceExtensionProperties; 465db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateDevice")) return vkCreateDevice; 475db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDeviceProcAddr")) return vkGetDeviceProcAddr; 485db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyDevice")) return vkDestroyDevice; 495db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDeviceQueue")) return vkGetDeviceQueue; 505db71995Sopenharmony_ci if (!strcmp(funcName, "vkQueueSubmit")) return vkQueueSubmit; 515db71995Sopenharmony_ci if (!strcmp(funcName, "vkQueueWaitIdle")) return vkQueueWaitIdle; 525db71995Sopenharmony_ci if (!strcmp(funcName, "vkDeviceWaitIdle")) return vkDeviceWaitIdle; 535db71995Sopenharmony_ci if (!strcmp(funcName, "vkAllocateMemory")) return vkAllocateMemory; 545db71995Sopenharmony_ci if (!strcmp(funcName, "vkFreeMemory")) return vkFreeMemory; 555db71995Sopenharmony_ci if (!strcmp(funcName, "vkMapMemory")) return vkMapMemory; 565db71995Sopenharmony_ci if (!strcmp(funcName, "vkUnmapMemory")) return vkUnmapMemory; 575db71995Sopenharmony_ci if (!strcmp(funcName, "vkFlushMappedMemoryRanges")) return vkFlushMappedMemoryRanges; 585db71995Sopenharmony_ci if (!strcmp(funcName, "vkInvalidateMappedMemoryRanges")) return vkInvalidateMappedMemoryRanges; 595db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDeviceMemoryCommitment")) return vkGetDeviceMemoryCommitment; 605db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements")) return vkGetImageSparseMemoryRequirements; 615db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetImageMemoryRequirements")) return vkGetImageMemoryRequirements; 625db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetBufferMemoryRequirements")) return vkGetBufferMemoryRequirements; 635db71995Sopenharmony_ci if (!strcmp(funcName, "vkBindImageMemory")) return vkBindImageMemory; 645db71995Sopenharmony_ci if (!strcmp(funcName, "vkBindBufferMemory")) return vkBindBufferMemory; 655db71995Sopenharmony_ci if (!strcmp(funcName, "vkQueueBindSparse")) return vkQueueBindSparse; 665db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateFence")) return vkCreateFence; 675db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyFence")) return vkDestroyFence; 685db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetFenceStatus")) return vkGetFenceStatus; 695db71995Sopenharmony_ci if (!strcmp(funcName, "vkResetFences")) return vkResetFences; 705db71995Sopenharmony_ci if (!strcmp(funcName, "vkWaitForFences")) return vkWaitForFences; 715db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateSemaphore")) return vkCreateSemaphore; 725db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroySemaphore")) return vkDestroySemaphore; 735db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateEvent")) return vkCreateEvent; 745db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyEvent")) return vkDestroyEvent; 755db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetEventStatus")) return vkGetEventStatus; 765db71995Sopenharmony_ci if (!strcmp(funcName, "vkSetEvent")) return vkSetEvent; 775db71995Sopenharmony_ci if (!strcmp(funcName, "vkResetEvent")) return vkResetEvent; 785db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateQueryPool")) return vkCreateQueryPool; 795db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyQueryPool")) return vkDestroyQueryPool; 805db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetQueryPoolResults")) return vkGetQueryPoolResults; 815db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateBuffer")) return vkCreateBuffer; 825db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyBuffer")) return vkDestroyBuffer; 835db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateBufferView")) return vkCreateBufferView; 845db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyBufferView")) return vkDestroyBufferView; 855db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateImage")) return vkCreateImage; 865db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyImage")) return vkDestroyImage; 875db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetImageSubresourceLayout")) return vkGetImageSubresourceLayout; 885db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateImageView")) return vkCreateImageView; 895db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyImageView")) return vkDestroyImageView; 905db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateShaderModule")) return vkCreateShaderModule; 915db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyShaderModule")) return vkDestroyShaderModule; 925db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreatePipelineCache")) return vkCreatePipelineCache; 935db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyPipelineCache")) return vkDestroyPipelineCache; 945db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPipelineCacheData")) return vkGetPipelineCacheData; 955db71995Sopenharmony_ci if (!strcmp(funcName, "vkMergePipelineCaches")) return vkMergePipelineCaches; 965db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateGraphicsPipelines")) return vkCreateGraphicsPipelines; 975db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateComputePipelines")) return vkCreateComputePipelines; 985db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyPipeline")) return vkDestroyPipeline; 995db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreatePipelineLayout")) return vkCreatePipelineLayout; 1005db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyPipelineLayout")) return vkDestroyPipelineLayout; 1015db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateSampler")) return vkCreateSampler; 1025db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroySampler")) return vkDestroySampler; 1035db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateDescriptorSetLayout")) return vkCreateDescriptorSetLayout; 1045db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyDescriptorSetLayout")) return vkDestroyDescriptorSetLayout; 1055db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateDescriptorPool")) return vkCreateDescriptorPool; 1065db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyDescriptorPool")) return vkDestroyDescriptorPool; 1075db71995Sopenharmony_ci if (!strcmp(funcName, "vkResetDescriptorPool")) return vkResetDescriptorPool; 1085db71995Sopenharmony_ci if (!strcmp(funcName, "vkAllocateDescriptorSets")) return vkAllocateDescriptorSets; 1095db71995Sopenharmony_ci if (!strcmp(funcName, "vkFreeDescriptorSets")) return vkFreeDescriptorSets; 1105db71995Sopenharmony_ci if (!strcmp(funcName, "vkUpdateDescriptorSets")) return vkUpdateDescriptorSets; 1115db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateFramebuffer")) return vkCreateFramebuffer; 1125db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyFramebuffer")) return vkDestroyFramebuffer; 1135db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateRenderPass")) return vkCreateRenderPass; 1145db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyRenderPass")) return vkDestroyRenderPass; 1155db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetRenderAreaGranularity")) return vkGetRenderAreaGranularity; 1165db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateCommandPool")) return vkCreateCommandPool; 1175db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyCommandPool")) return vkDestroyCommandPool; 1185db71995Sopenharmony_ci if (!strcmp(funcName, "vkResetCommandPool")) return vkResetCommandPool; 1195db71995Sopenharmony_ci if (!strcmp(funcName, "vkAllocateCommandBuffers")) return vkAllocateCommandBuffers; 1205db71995Sopenharmony_ci if (!strcmp(funcName, "vkFreeCommandBuffers")) return vkFreeCommandBuffers; 1215db71995Sopenharmony_ci if (!strcmp(funcName, "vkBeginCommandBuffer")) return vkBeginCommandBuffer; 1225db71995Sopenharmony_ci if (!strcmp(funcName, "vkEndCommandBuffer")) return vkEndCommandBuffer; 1235db71995Sopenharmony_ci if (!strcmp(funcName, "vkResetCommandBuffer")) return vkResetCommandBuffer; 1245db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBindPipeline")) return vkCmdBindPipeline; 1255db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBindDescriptorSets")) return vkCmdBindDescriptorSets; 1265db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBindVertexBuffers")) return vkCmdBindVertexBuffers; 1275db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBindIndexBuffer")) return vkCmdBindIndexBuffer; 1285db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetViewport")) return vkCmdSetViewport; 1295db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetScissor")) return vkCmdSetScissor; 1305db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetLineWidth")) return vkCmdSetLineWidth; 1315db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetDepthBias")) return vkCmdSetDepthBias; 1325db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetBlendConstants")) return vkCmdSetBlendConstants; 1335db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetDepthBounds")) return vkCmdSetDepthBounds; 1345db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetStencilCompareMask")) return vkCmdSetStencilCompareMask; 1355db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetStencilWriteMask")) return vkCmdSetStencilWriteMask; 1365db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetStencilReference")) return vkCmdSetStencilReference; 1375db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdDraw")) return vkCmdDraw; 1385db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdDrawIndexed")) return vkCmdDrawIndexed; 1395db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdDrawIndirect")) return vkCmdDrawIndirect; 1405db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdDrawIndexedIndirect")) return vkCmdDrawIndexedIndirect; 1415db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdDispatch")) return vkCmdDispatch; 1425db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdDispatchIndirect")) return vkCmdDispatchIndirect; 1435db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdCopyBuffer")) return vkCmdCopyBuffer; 1445db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdCopyImage")) return vkCmdCopyImage; 1455db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBlitImage")) return vkCmdBlitImage; 1465db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdCopyBufferToImage")) return vkCmdCopyBufferToImage; 1475db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdCopyImageToBuffer")) return vkCmdCopyImageToBuffer; 1485db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdUpdateBuffer")) return vkCmdUpdateBuffer; 1495db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdFillBuffer")) return vkCmdFillBuffer; 1505db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdClearColorImage")) return vkCmdClearColorImage; 1515db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdClearDepthStencilImage")) return vkCmdClearDepthStencilImage; 1525db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdClearAttachments")) return vkCmdClearAttachments; 1535db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdResolveImage")) return vkCmdResolveImage; 1545db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetEvent")) return vkCmdSetEvent; 1555db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdResetEvent")) return vkCmdResetEvent; 1565db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdWaitEvents")) return vkCmdWaitEvents; 1575db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdPipelineBarrier")) return vkCmdPipelineBarrier; 1585db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBeginQuery")) return vkCmdBeginQuery; 1595db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdEndQuery")) return vkCmdEndQuery; 1605db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdResetQueryPool")) return vkCmdResetQueryPool; 1615db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdWriteTimestamp")) return vkCmdWriteTimestamp; 1625db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdCopyQueryPoolResults")) return vkCmdCopyQueryPoolResults; 1635db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdPushConstants")) return vkCmdPushConstants; 1645db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBeginRenderPass")) return vkCmdBeginRenderPass; 1655db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdNextSubpass")) return vkCmdNextSubpass; 1665db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdEndRenderPass")) return vkCmdEndRenderPass; 1675db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdExecuteCommands")) return vkCmdExecuteCommands; 1685db71995Sopenharmony_ci 1695db71995Sopenharmony_ci // Core 1.1 functions 1705db71995Sopenharmony_ci if (!strcmp(funcName, "vkEnumeratePhysicalDeviceGroups")) return vkEnumeratePhysicalDeviceGroups; 1715db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures2")) return vkGetPhysicalDeviceFeatures2; 1725db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceProperties2")) return vkGetPhysicalDeviceProperties2; 1735db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties2")) return vkGetPhysicalDeviceFormatProperties2; 1745db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceImageFormatProperties2")) return vkGetPhysicalDeviceImageFormatProperties2; 1755db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties2")) return vkGetPhysicalDeviceQueueFamilyProperties2; 1765db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties2")) return vkGetPhysicalDeviceMemoryProperties2; 1775db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties2")) 1785db71995Sopenharmony_ci return vkGetPhysicalDeviceSparseImageFormatProperties2; 1795db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceExternalBufferProperties")) return vkGetPhysicalDeviceExternalBufferProperties; 1805db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceExternalSemaphoreProperties")) return vkGetPhysicalDeviceExternalSemaphoreProperties; 1815db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceExternalFenceProperties")) return vkGetPhysicalDeviceExternalFenceProperties; 1825db71995Sopenharmony_ci if (!strcmp(funcName, "vkBindBufferMemory2")) return vkBindBufferMemory2; 1835db71995Sopenharmony_ci if (!strcmp(funcName, "vkBindImageMemory2")) return vkBindImageMemory2; 1845db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDeviceGroupPeerMemoryFeatures")) return vkGetDeviceGroupPeerMemoryFeatures; 1855db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetDeviceMask")) return vkCmdSetDeviceMask; 1865db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdDispatchBase")) return vkCmdDispatchBase; 1875db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetImageMemoryRequirements2")) return vkGetImageMemoryRequirements2; 1885db71995Sopenharmony_ci if (!strcmp(funcName, "vkTrimCommandPool")) return vkTrimCommandPool; 1895db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDeviceQueue2")) return vkGetDeviceQueue2; 1905db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateSamplerYcbcrConversion")) return vkCreateSamplerYcbcrConversion; 1915db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroySamplerYcbcrConversion")) return vkDestroySamplerYcbcrConversion; 1925db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDescriptorSetLayoutSupport")) return vkGetDescriptorSetLayoutSupport; 1935db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateDescriptorUpdateTemplate")) return vkCreateDescriptorUpdateTemplate; 1945db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyDescriptorUpdateTemplate")) return vkDestroyDescriptorUpdateTemplate; 1955db71995Sopenharmony_ci if (!strcmp(funcName, "vkUpdateDescriptorSetWithTemplate")) return vkUpdateDescriptorSetWithTemplate; 1965db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements2")) return vkGetImageSparseMemoryRequirements2; 1975db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetBufferMemoryRequirements2")) return vkGetBufferMemoryRequirements2; 1985db71995Sopenharmony_ci 1995db71995Sopenharmony_ci // Core 1.2 functions 2005db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreateRenderPass2")) return vkCreateRenderPass2; 2015db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBeginRenderPass2")) return vkCmdBeginRenderPass2; 2025db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdNextSubpass2")) return vkCmdNextSubpass2; 2035db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdEndRenderPass2")) return vkCmdEndRenderPass2; 2045db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdDrawIndirectCount")) return vkCmdDrawIndirectCount; 2055db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdDrawIndexedIndirectCount")) return vkCmdDrawIndexedIndirectCount; 2065db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetSemaphoreCounterValue")) return vkGetSemaphoreCounterValue; 2075db71995Sopenharmony_ci if (!strcmp(funcName, "vkWaitSemaphores")) return vkWaitSemaphores; 2085db71995Sopenharmony_ci if (!strcmp(funcName, "vkSignalSemaphore")) return vkSignalSemaphore; 2095db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetBufferDeviceAddress")) return vkGetBufferDeviceAddress; 2105db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetBufferOpaqueCaptureAddress")) return vkGetBufferOpaqueCaptureAddress; 2115db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDeviceMemoryOpaqueCaptureAddress")) return vkGetDeviceMemoryOpaqueCaptureAddress; 2125db71995Sopenharmony_ci if (!strcmp(funcName, "vkResetQueryPool")) return vkResetQueryPool; 2135db71995Sopenharmony_ci 2145db71995Sopenharmony_ci // Core 1.3 functions 2155db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPhysicalDeviceToolProperties")) return vkGetPhysicalDeviceToolProperties; 2165db71995Sopenharmony_ci if (!strcmp(funcName, "vkCreatePrivateDataSlot")) return vkCreatePrivateDataSlot; 2175db71995Sopenharmony_ci if (!strcmp(funcName, "vkDestroyPrivateDataSlot")) return vkDestroyPrivateDataSlot; 2185db71995Sopenharmony_ci if (!strcmp(funcName, "vkSetPrivateData")) return vkSetPrivateData; 2195db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetPrivateData")) return vkGetPrivateData; 2205db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetEvent2")) return vkCmdSetEvent2; 2215db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdResetEvent2")) return vkCmdResetEvent2; 2225db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdWaitEvents2")) return vkCmdWaitEvents2; 2235db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdPipelineBarrier2")) return vkCmdPipelineBarrier2; 2245db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdWriteTimestamp2")) return vkCmdWriteTimestamp2; 2255db71995Sopenharmony_ci if (!strcmp(funcName, "vkQueueSubmit2")) return vkQueueSubmit2; 2265db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdCopyBuffer2")) return vkCmdCopyBuffer2; 2275db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdCopyImage2")) return vkCmdCopyImage2; 2285db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdCopyBufferToImage2")) return vkCmdCopyBufferToImage2; 2295db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdCopyImageToBuffer2")) return vkCmdCopyImageToBuffer2; 2305db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBlitImage2")) return vkCmdBlitImage2; 2315db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdResolveImage2")) return vkCmdResolveImage2; 2325db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBeginRendering")) return vkCmdBeginRendering; 2335db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdEndRendering")) return vkCmdEndRendering; 2345db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetCullMode")) return vkCmdSetCullMode; 2355db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetFrontFace")) return vkCmdSetFrontFace; 2365db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetPrimitiveTopology")) return vkCmdSetPrimitiveTopology; 2375db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetViewportWithCount")) return vkCmdSetViewportWithCount; 2385db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetScissorWithCount")) return vkCmdSetScissorWithCount; 2395db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdBindVertexBuffers2")) return vkCmdBindVertexBuffers2; 2405db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetDepthTestEnable")) return vkCmdSetDepthTestEnable; 2415db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetDepthWriteEnable")) return vkCmdSetDepthWriteEnable; 2425db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetDepthCompareOp")) return vkCmdSetDepthCompareOp; 2435db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetDepthBoundsTestEnable")) return vkCmdSetDepthBoundsTestEnable; 2445db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetStencilTestEnable")) return vkCmdSetStencilTestEnable; 2455db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetStencilOp")) return vkCmdSetStencilOp; 2465db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetRasterizerDiscardEnable")) return vkCmdSetRasterizerDiscardEnable; 2475db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetDepthBiasEnable")) return vkCmdSetDepthBiasEnable; 2485db71995Sopenharmony_ci if (!strcmp(funcName, "vkCmdSetPrimitiveRestartEnable")) return vkCmdSetPrimitiveRestartEnable; 2495db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDeviceBufferMemoryRequirements")) return vkGetDeviceBufferMemoryRequirements; 2505db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDeviceImageMemoryRequirements")) return vkGetDeviceImageMemoryRequirements; 2515db71995Sopenharmony_ci if (!strcmp(funcName, "vkGetDeviceImageSparseMemoryRequirements")) return vkGetDeviceImageSparseMemoryRequirements; 2525db71995Sopenharmony_ci 2535db71995Sopenharmony_ci // Instance extensions 2545db71995Sopenharmony_ci void *addr; 2555db71995Sopenharmony_ci if (debug_extensions_InstanceGpa(inst, funcName, &addr)) return addr; 2565db71995Sopenharmony_ci 2575db71995Sopenharmony_ci if (wsi_swapchain_instance_gpa(inst, funcName, &addr)) return addr; 2585db71995Sopenharmony_ci 2595db71995Sopenharmony_ci if (extension_instance_gpa(inst, funcName, &addr)) return addr; 2605db71995Sopenharmony_ci 2615db71995Sopenharmony_ci // Unknown physical device extensions 2625db71995Sopenharmony_ci addr = loader_phys_dev_ext_gpa_tramp(inst, funcName); 2635db71995Sopenharmony_ci if (NULL != addr) return addr; 2645db71995Sopenharmony_ci 2655db71995Sopenharmony_ci // Unknown device extensions 2665db71995Sopenharmony_ci addr = loader_dev_ext_gpa_tramp(inst, funcName); 2675db71995Sopenharmony_ci return addr; 2685db71995Sopenharmony_ci} 2695db71995Sopenharmony_ci 2705db71995Sopenharmony_civoid *globalGetProcAddr(const char *name) { 2715db71995Sopenharmony_ci if (!name || name[0] != 'v' || name[1] != 'k') return NULL; 2725db71995Sopenharmony_ci 2735db71995Sopenharmony_ci name += 2; 2745db71995Sopenharmony_ci if (!strcmp(name, "CreateInstance")) return vkCreateInstance; 2755db71995Sopenharmony_ci if (!strcmp(name, "EnumerateInstanceExtensionProperties")) return vkEnumerateInstanceExtensionProperties; 2765db71995Sopenharmony_ci if (!strcmp(name, "EnumerateInstanceLayerProperties")) return vkEnumerateInstanceLayerProperties; 2775db71995Sopenharmony_ci if (!strcmp(name, "EnumerateInstanceVersion")) return vkEnumerateInstanceVersion; 2785db71995Sopenharmony_ci 2795db71995Sopenharmony_ci return NULL; 2805db71995Sopenharmony_ci} 281