/src/vulkan-loader/loader/gpa_helper.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * |
3 | | * Copyright (c) 2015-2024 The Khronos Group Inc. |
4 | | * Copyright (c) 2015-2024 Valve Corporation |
5 | | * Copyright (c) 2015-2024 LunarG, Inc. |
6 | | * |
7 | | * Licensed under the Apache License, Version 2.0 (the "License"); |
8 | | * you may not use this file except in compliance with the License. |
9 | | * You may obtain a copy of the License at |
10 | | * |
11 | | * http://www.apache.org/licenses/LICENSE-2.0 |
12 | | * |
13 | | * Unless required by applicable law or agreed to in writing, software |
14 | | * distributed under the License is distributed on an "AS IS" BASIS, |
15 | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
16 | | * See the License for the specific language governing permissions and |
17 | | * limitations under the License. |
18 | | * |
19 | | * Author: Jon Ashburn <jon@lunarg.com> |
20 | | * Author: Charles Giessen <charles@lunarg.com> |
21 | | */ |
22 | | |
23 | | #include "gpa_helper.h" |
24 | | |
25 | | #include <string.h> |
26 | | |
27 | | #include "debug_utils.h" |
28 | | #include "unknown_function_handling.h" |
29 | | #include "wsi.h" |
30 | | |
31 | 0 | void *trampoline_get_proc_addr(struct loader_instance *inst, const char *funcName) { |
32 | | // Don't include or check global functions |
33 | 0 | if (!strcmp(funcName, "vkGetInstanceProcAddr")) return vkGetInstanceProcAddr; |
34 | 0 | if (!strcmp(funcName, "vkDestroyInstance")) return vkDestroyInstance; |
35 | 0 | if (!strcmp(funcName, "vkEnumeratePhysicalDevices")) return vkEnumeratePhysicalDevices; |
36 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures")) return vkGetPhysicalDeviceFeatures; |
37 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties")) return vkGetPhysicalDeviceFormatProperties; |
38 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceImageFormatProperties")) return vkGetPhysicalDeviceImageFormatProperties; |
39 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties")) return vkGetPhysicalDeviceSparseImageFormatProperties; |
40 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceProperties")) return vkGetPhysicalDeviceProperties; |
41 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties")) return vkGetPhysicalDeviceQueueFamilyProperties; |
42 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties")) return vkGetPhysicalDeviceMemoryProperties; |
43 | 0 | if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties")) return vkEnumerateDeviceLayerProperties; |
44 | 0 | if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties")) return vkEnumerateDeviceExtensionProperties; |
45 | 0 | if (!strcmp(funcName, "vkCreateDevice")) return vkCreateDevice; |
46 | 0 | if (!strcmp(funcName, "vkGetDeviceProcAddr")) return vkGetDeviceProcAddr; |
47 | 0 | if (!strcmp(funcName, "vkDestroyDevice")) return vkDestroyDevice; |
48 | 0 | if (!strcmp(funcName, "vkGetDeviceQueue")) return vkGetDeviceQueue; |
49 | 0 | if (!strcmp(funcName, "vkQueueSubmit")) return vkQueueSubmit; |
50 | 0 | if (!strcmp(funcName, "vkQueueWaitIdle")) return vkQueueWaitIdle; |
51 | 0 | if (!strcmp(funcName, "vkDeviceWaitIdle")) return vkDeviceWaitIdle; |
52 | 0 | if (!strcmp(funcName, "vkAllocateMemory")) return vkAllocateMemory; |
53 | 0 | if (!strcmp(funcName, "vkFreeMemory")) return vkFreeMemory; |
54 | 0 | if (!strcmp(funcName, "vkMapMemory")) return vkMapMemory; |
55 | 0 | if (!strcmp(funcName, "vkUnmapMemory")) return vkUnmapMemory; |
56 | 0 | if (!strcmp(funcName, "vkFlushMappedMemoryRanges")) return vkFlushMappedMemoryRanges; |
57 | 0 | if (!strcmp(funcName, "vkInvalidateMappedMemoryRanges")) return vkInvalidateMappedMemoryRanges; |
58 | 0 | if (!strcmp(funcName, "vkGetDeviceMemoryCommitment")) return vkGetDeviceMemoryCommitment; |
59 | 0 | if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements")) return vkGetImageSparseMemoryRequirements; |
60 | 0 | if (!strcmp(funcName, "vkGetImageMemoryRequirements")) return vkGetImageMemoryRequirements; |
61 | 0 | if (!strcmp(funcName, "vkGetBufferMemoryRequirements")) return vkGetBufferMemoryRequirements; |
62 | 0 | if (!strcmp(funcName, "vkBindImageMemory")) return vkBindImageMemory; |
63 | 0 | if (!strcmp(funcName, "vkBindBufferMemory")) return vkBindBufferMemory; |
64 | 0 | if (!strcmp(funcName, "vkQueueBindSparse")) return vkQueueBindSparse; |
65 | 0 | if (!strcmp(funcName, "vkCreateFence")) return vkCreateFence; |
66 | 0 | if (!strcmp(funcName, "vkDestroyFence")) return vkDestroyFence; |
67 | 0 | if (!strcmp(funcName, "vkGetFenceStatus")) return vkGetFenceStatus; |
68 | 0 | if (!strcmp(funcName, "vkResetFences")) return vkResetFences; |
69 | 0 | if (!strcmp(funcName, "vkWaitForFences")) return vkWaitForFences; |
70 | 0 | if (!strcmp(funcName, "vkCreateSemaphore")) return vkCreateSemaphore; |
71 | 0 | if (!strcmp(funcName, "vkDestroySemaphore")) return vkDestroySemaphore; |
72 | 0 | if (!strcmp(funcName, "vkCreateEvent")) return vkCreateEvent; |
73 | 0 | if (!strcmp(funcName, "vkDestroyEvent")) return vkDestroyEvent; |
74 | 0 | if (!strcmp(funcName, "vkGetEventStatus")) return vkGetEventStatus; |
75 | 0 | if (!strcmp(funcName, "vkSetEvent")) return vkSetEvent; |
76 | 0 | if (!strcmp(funcName, "vkResetEvent")) return vkResetEvent; |
77 | 0 | if (!strcmp(funcName, "vkCreateQueryPool")) return vkCreateQueryPool; |
78 | 0 | if (!strcmp(funcName, "vkDestroyQueryPool")) return vkDestroyQueryPool; |
79 | 0 | if (!strcmp(funcName, "vkGetQueryPoolResults")) return vkGetQueryPoolResults; |
80 | 0 | if (!strcmp(funcName, "vkCreateBuffer")) return vkCreateBuffer; |
81 | 0 | if (!strcmp(funcName, "vkDestroyBuffer")) return vkDestroyBuffer; |
82 | 0 | if (!strcmp(funcName, "vkCreateBufferView")) return vkCreateBufferView; |
83 | 0 | if (!strcmp(funcName, "vkDestroyBufferView")) return vkDestroyBufferView; |
84 | 0 | if (!strcmp(funcName, "vkCreateImage")) return vkCreateImage; |
85 | 0 | if (!strcmp(funcName, "vkDestroyImage")) return vkDestroyImage; |
86 | 0 | if (!strcmp(funcName, "vkGetImageSubresourceLayout")) return vkGetImageSubresourceLayout; |
87 | 0 | if (!strcmp(funcName, "vkCreateImageView")) return vkCreateImageView; |
88 | 0 | if (!strcmp(funcName, "vkDestroyImageView")) return vkDestroyImageView; |
89 | 0 | if (!strcmp(funcName, "vkCreateShaderModule")) return vkCreateShaderModule; |
90 | 0 | if (!strcmp(funcName, "vkDestroyShaderModule")) return vkDestroyShaderModule; |
91 | 0 | if (!strcmp(funcName, "vkCreatePipelineCache")) return vkCreatePipelineCache; |
92 | 0 | if (!strcmp(funcName, "vkDestroyPipelineCache")) return vkDestroyPipelineCache; |
93 | 0 | if (!strcmp(funcName, "vkGetPipelineCacheData")) return vkGetPipelineCacheData; |
94 | 0 | if (!strcmp(funcName, "vkMergePipelineCaches")) return vkMergePipelineCaches; |
95 | 0 | if (!strcmp(funcName, "vkCreateGraphicsPipelines")) return vkCreateGraphicsPipelines; |
96 | 0 | if (!strcmp(funcName, "vkCreateComputePipelines")) return vkCreateComputePipelines; |
97 | 0 | if (!strcmp(funcName, "vkDestroyPipeline")) return vkDestroyPipeline; |
98 | 0 | if (!strcmp(funcName, "vkCreatePipelineLayout")) return vkCreatePipelineLayout; |
99 | 0 | if (!strcmp(funcName, "vkDestroyPipelineLayout")) return vkDestroyPipelineLayout; |
100 | 0 | if (!strcmp(funcName, "vkCreateSampler")) return vkCreateSampler; |
101 | 0 | if (!strcmp(funcName, "vkDestroySampler")) return vkDestroySampler; |
102 | 0 | if (!strcmp(funcName, "vkCreateDescriptorSetLayout")) return vkCreateDescriptorSetLayout; |
103 | 0 | if (!strcmp(funcName, "vkDestroyDescriptorSetLayout")) return vkDestroyDescriptorSetLayout; |
104 | 0 | if (!strcmp(funcName, "vkCreateDescriptorPool")) return vkCreateDescriptorPool; |
105 | 0 | if (!strcmp(funcName, "vkDestroyDescriptorPool")) return vkDestroyDescriptorPool; |
106 | 0 | if (!strcmp(funcName, "vkResetDescriptorPool")) return vkResetDescriptorPool; |
107 | 0 | if (!strcmp(funcName, "vkAllocateDescriptorSets")) return vkAllocateDescriptorSets; |
108 | 0 | if (!strcmp(funcName, "vkFreeDescriptorSets")) return vkFreeDescriptorSets; |
109 | 0 | if (!strcmp(funcName, "vkUpdateDescriptorSets")) return vkUpdateDescriptorSets; |
110 | 0 | if (!strcmp(funcName, "vkCreateFramebuffer")) return vkCreateFramebuffer; |
111 | 0 | if (!strcmp(funcName, "vkDestroyFramebuffer")) return vkDestroyFramebuffer; |
112 | 0 | if (!strcmp(funcName, "vkCreateRenderPass")) return vkCreateRenderPass; |
113 | 0 | if (!strcmp(funcName, "vkDestroyRenderPass")) return vkDestroyRenderPass; |
114 | 0 | if (!strcmp(funcName, "vkGetRenderAreaGranularity")) return vkGetRenderAreaGranularity; |
115 | 0 | if (!strcmp(funcName, "vkCreateCommandPool")) return vkCreateCommandPool; |
116 | 0 | if (!strcmp(funcName, "vkDestroyCommandPool")) return vkDestroyCommandPool; |
117 | 0 | if (!strcmp(funcName, "vkResetCommandPool")) return vkResetCommandPool; |
118 | 0 | if (!strcmp(funcName, "vkAllocateCommandBuffers")) return vkAllocateCommandBuffers; |
119 | 0 | if (!strcmp(funcName, "vkFreeCommandBuffers")) return vkFreeCommandBuffers; |
120 | 0 | if (!strcmp(funcName, "vkBeginCommandBuffer")) return vkBeginCommandBuffer; |
121 | 0 | if (!strcmp(funcName, "vkEndCommandBuffer")) return vkEndCommandBuffer; |
122 | 0 | if (!strcmp(funcName, "vkResetCommandBuffer")) return vkResetCommandBuffer; |
123 | 0 | if (!strcmp(funcName, "vkCmdBindPipeline")) return vkCmdBindPipeline; |
124 | 0 | if (!strcmp(funcName, "vkCmdBindDescriptorSets")) return vkCmdBindDescriptorSets; |
125 | 0 | if (!strcmp(funcName, "vkCmdBindVertexBuffers")) return vkCmdBindVertexBuffers; |
126 | 0 | if (!strcmp(funcName, "vkCmdBindIndexBuffer")) return vkCmdBindIndexBuffer; |
127 | 0 | if (!strcmp(funcName, "vkCmdSetViewport")) return vkCmdSetViewport; |
128 | 0 | if (!strcmp(funcName, "vkCmdSetScissor")) return vkCmdSetScissor; |
129 | 0 | if (!strcmp(funcName, "vkCmdSetLineWidth")) return vkCmdSetLineWidth; |
130 | 0 | if (!strcmp(funcName, "vkCmdSetDepthBias")) return vkCmdSetDepthBias; |
131 | 0 | if (!strcmp(funcName, "vkCmdSetBlendConstants")) return vkCmdSetBlendConstants; |
132 | 0 | if (!strcmp(funcName, "vkCmdSetDepthBounds")) return vkCmdSetDepthBounds; |
133 | 0 | if (!strcmp(funcName, "vkCmdSetStencilCompareMask")) return vkCmdSetStencilCompareMask; |
134 | 0 | if (!strcmp(funcName, "vkCmdSetStencilWriteMask")) return vkCmdSetStencilWriteMask; |
135 | 0 | if (!strcmp(funcName, "vkCmdSetStencilReference")) return vkCmdSetStencilReference; |
136 | 0 | if (!strcmp(funcName, "vkCmdDraw")) return vkCmdDraw; |
137 | 0 | if (!strcmp(funcName, "vkCmdDrawIndexed")) return vkCmdDrawIndexed; |
138 | 0 | if (!strcmp(funcName, "vkCmdDrawIndirect")) return vkCmdDrawIndirect; |
139 | 0 | if (!strcmp(funcName, "vkCmdDrawIndexedIndirect")) return vkCmdDrawIndexedIndirect; |
140 | 0 | if (!strcmp(funcName, "vkCmdDispatch")) return vkCmdDispatch; |
141 | 0 | if (!strcmp(funcName, "vkCmdDispatchIndirect")) return vkCmdDispatchIndirect; |
142 | 0 | if (!strcmp(funcName, "vkCmdCopyBuffer")) return vkCmdCopyBuffer; |
143 | 0 | if (!strcmp(funcName, "vkCmdCopyImage")) return vkCmdCopyImage; |
144 | 0 | if (!strcmp(funcName, "vkCmdBlitImage")) return vkCmdBlitImage; |
145 | 0 | if (!strcmp(funcName, "vkCmdCopyBufferToImage")) return vkCmdCopyBufferToImage; |
146 | 0 | if (!strcmp(funcName, "vkCmdCopyImageToBuffer")) return vkCmdCopyImageToBuffer; |
147 | 0 | if (!strcmp(funcName, "vkCmdUpdateBuffer")) return vkCmdUpdateBuffer; |
148 | 0 | if (!strcmp(funcName, "vkCmdFillBuffer")) return vkCmdFillBuffer; |
149 | 0 | if (!strcmp(funcName, "vkCmdClearColorImage")) return vkCmdClearColorImage; |
150 | 0 | if (!strcmp(funcName, "vkCmdClearDepthStencilImage")) return vkCmdClearDepthStencilImage; |
151 | 0 | if (!strcmp(funcName, "vkCmdClearAttachments")) return vkCmdClearAttachments; |
152 | 0 | if (!strcmp(funcName, "vkCmdResolveImage")) return vkCmdResolveImage; |
153 | 0 | if (!strcmp(funcName, "vkCmdSetEvent")) return vkCmdSetEvent; |
154 | 0 | if (!strcmp(funcName, "vkCmdResetEvent")) return vkCmdResetEvent; |
155 | 0 | if (!strcmp(funcName, "vkCmdWaitEvents")) return vkCmdWaitEvents; |
156 | 0 | if (!strcmp(funcName, "vkCmdPipelineBarrier")) return vkCmdPipelineBarrier; |
157 | 0 | if (!strcmp(funcName, "vkCmdBeginQuery")) return vkCmdBeginQuery; |
158 | 0 | if (!strcmp(funcName, "vkCmdEndQuery")) return vkCmdEndQuery; |
159 | 0 | if (!strcmp(funcName, "vkCmdResetQueryPool")) return vkCmdResetQueryPool; |
160 | 0 | if (!strcmp(funcName, "vkCmdWriteTimestamp")) return vkCmdWriteTimestamp; |
161 | 0 | if (!strcmp(funcName, "vkCmdCopyQueryPoolResults")) return vkCmdCopyQueryPoolResults; |
162 | 0 | if (!strcmp(funcName, "vkCmdPushConstants")) return vkCmdPushConstants; |
163 | 0 | if (!strcmp(funcName, "vkCmdBeginRenderPass")) return vkCmdBeginRenderPass; |
164 | 0 | if (!strcmp(funcName, "vkCmdNextSubpass")) return vkCmdNextSubpass; |
165 | 0 | if (!strcmp(funcName, "vkCmdEndRenderPass")) return vkCmdEndRenderPass; |
166 | 0 | if (!strcmp(funcName, "vkCmdExecuteCommands")) return vkCmdExecuteCommands; |
167 | | |
168 | | // Core 1.1 functions |
169 | 0 | if (!strcmp(funcName, "vkEnumeratePhysicalDeviceGroups")) return vkEnumeratePhysicalDeviceGroups; |
170 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures2")) return vkGetPhysicalDeviceFeatures2; |
171 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceProperties2")) return vkGetPhysicalDeviceProperties2; |
172 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties2")) return vkGetPhysicalDeviceFormatProperties2; |
173 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceImageFormatProperties2")) return vkGetPhysicalDeviceImageFormatProperties2; |
174 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties2")) return vkGetPhysicalDeviceQueueFamilyProperties2; |
175 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties2")) return vkGetPhysicalDeviceMemoryProperties2; |
176 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties2")) |
177 | 0 | return vkGetPhysicalDeviceSparseImageFormatProperties2; |
178 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceExternalBufferProperties")) return vkGetPhysicalDeviceExternalBufferProperties; |
179 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceExternalSemaphoreProperties")) return vkGetPhysicalDeviceExternalSemaphoreProperties; |
180 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceExternalFenceProperties")) return vkGetPhysicalDeviceExternalFenceProperties; |
181 | 0 | if (!strcmp(funcName, "vkBindBufferMemory2")) return vkBindBufferMemory2; |
182 | 0 | if (!strcmp(funcName, "vkBindImageMemory2")) return vkBindImageMemory2; |
183 | 0 | if (!strcmp(funcName, "vkGetDeviceGroupPeerMemoryFeatures")) return vkGetDeviceGroupPeerMemoryFeatures; |
184 | 0 | if (!strcmp(funcName, "vkCmdSetDeviceMask")) return vkCmdSetDeviceMask; |
185 | 0 | if (!strcmp(funcName, "vkCmdDispatchBase")) return vkCmdDispatchBase; |
186 | 0 | if (!strcmp(funcName, "vkGetImageMemoryRequirements2")) return vkGetImageMemoryRequirements2; |
187 | 0 | if (!strcmp(funcName, "vkTrimCommandPool")) return vkTrimCommandPool; |
188 | 0 | if (!strcmp(funcName, "vkGetDeviceQueue2")) return vkGetDeviceQueue2; |
189 | 0 | if (!strcmp(funcName, "vkCreateSamplerYcbcrConversion")) return vkCreateSamplerYcbcrConversion; |
190 | 0 | if (!strcmp(funcName, "vkDestroySamplerYcbcrConversion")) return vkDestroySamplerYcbcrConversion; |
191 | 0 | if (!strcmp(funcName, "vkGetDescriptorSetLayoutSupport")) return vkGetDescriptorSetLayoutSupport; |
192 | 0 | if (!strcmp(funcName, "vkCreateDescriptorUpdateTemplate")) return vkCreateDescriptorUpdateTemplate; |
193 | 0 | if (!strcmp(funcName, "vkDestroyDescriptorUpdateTemplate")) return vkDestroyDescriptorUpdateTemplate; |
194 | 0 | if (!strcmp(funcName, "vkUpdateDescriptorSetWithTemplate")) return vkUpdateDescriptorSetWithTemplate; |
195 | 0 | if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements2")) return vkGetImageSparseMemoryRequirements2; |
196 | 0 | if (!strcmp(funcName, "vkGetBufferMemoryRequirements2")) return vkGetBufferMemoryRequirements2; |
197 | | |
198 | | // Core 1.2 functions |
199 | 0 | if (!strcmp(funcName, "vkCreateRenderPass2")) return vkCreateRenderPass2; |
200 | 0 | if (!strcmp(funcName, "vkCmdBeginRenderPass2")) return vkCmdBeginRenderPass2; |
201 | 0 | if (!strcmp(funcName, "vkCmdNextSubpass2")) return vkCmdNextSubpass2; |
202 | 0 | if (!strcmp(funcName, "vkCmdEndRenderPass2")) return vkCmdEndRenderPass2; |
203 | 0 | if (!strcmp(funcName, "vkCmdDrawIndirectCount")) return vkCmdDrawIndirectCount; |
204 | 0 | if (!strcmp(funcName, "vkCmdDrawIndexedIndirectCount")) return vkCmdDrawIndexedIndirectCount; |
205 | 0 | if (!strcmp(funcName, "vkGetSemaphoreCounterValue")) return vkGetSemaphoreCounterValue; |
206 | 0 | if (!strcmp(funcName, "vkWaitSemaphores")) return vkWaitSemaphores; |
207 | 0 | if (!strcmp(funcName, "vkSignalSemaphore")) return vkSignalSemaphore; |
208 | 0 | if (!strcmp(funcName, "vkGetBufferDeviceAddress")) return vkGetBufferDeviceAddress; |
209 | 0 | if (!strcmp(funcName, "vkGetBufferOpaqueCaptureAddress")) return vkGetBufferOpaqueCaptureAddress; |
210 | 0 | if (!strcmp(funcName, "vkGetDeviceMemoryOpaqueCaptureAddress")) return vkGetDeviceMemoryOpaqueCaptureAddress; |
211 | 0 | if (!strcmp(funcName, "vkResetQueryPool")) return vkResetQueryPool; |
212 | | |
213 | | // Core 1.3 functions |
214 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceToolProperties")) return vkGetPhysicalDeviceToolProperties; |
215 | 0 | if (!strcmp(funcName, "vkCreatePrivateDataSlot")) return vkCreatePrivateDataSlot; |
216 | 0 | if (!strcmp(funcName, "vkDestroyPrivateDataSlot")) return vkDestroyPrivateDataSlot; |
217 | 0 | if (!strcmp(funcName, "vkSetPrivateData")) return vkSetPrivateData; |
218 | 0 | if (!strcmp(funcName, "vkGetPrivateData")) return vkGetPrivateData; |
219 | 0 | if (!strcmp(funcName, "vkCmdSetEvent2")) return vkCmdSetEvent2; |
220 | 0 | if (!strcmp(funcName, "vkCmdResetEvent2")) return vkCmdResetEvent2; |
221 | 0 | if (!strcmp(funcName, "vkCmdWaitEvents2")) return vkCmdWaitEvents2; |
222 | 0 | if (!strcmp(funcName, "vkCmdPipelineBarrier2")) return vkCmdPipelineBarrier2; |
223 | 0 | if (!strcmp(funcName, "vkCmdWriteTimestamp2")) return vkCmdWriteTimestamp2; |
224 | 0 | if (!strcmp(funcName, "vkQueueSubmit2")) return vkQueueSubmit2; |
225 | 0 | if (!strcmp(funcName, "vkCmdCopyBuffer2")) return vkCmdCopyBuffer2; |
226 | 0 | if (!strcmp(funcName, "vkCmdCopyImage2")) return vkCmdCopyImage2; |
227 | 0 | if (!strcmp(funcName, "vkCmdCopyBufferToImage2")) return vkCmdCopyBufferToImage2; |
228 | 0 | if (!strcmp(funcName, "vkCmdCopyImageToBuffer2")) return vkCmdCopyImageToBuffer2; |
229 | 0 | if (!strcmp(funcName, "vkCmdBlitImage2")) return vkCmdBlitImage2; |
230 | 0 | if (!strcmp(funcName, "vkCmdResolveImage2")) return vkCmdResolveImage2; |
231 | 0 | if (!strcmp(funcName, "vkCmdBeginRendering")) return vkCmdBeginRendering; |
232 | 0 | if (!strcmp(funcName, "vkCmdEndRendering")) return vkCmdEndRendering; |
233 | 0 | if (!strcmp(funcName, "vkCmdSetCullMode")) return vkCmdSetCullMode; |
234 | 0 | if (!strcmp(funcName, "vkCmdSetFrontFace")) return vkCmdSetFrontFace; |
235 | 0 | if (!strcmp(funcName, "vkCmdSetPrimitiveTopology")) return vkCmdSetPrimitiveTopology; |
236 | 0 | if (!strcmp(funcName, "vkCmdSetViewportWithCount")) return vkCmdSetViewportWithCount; |
237 | 0 | if (!strcmp(funcName, "vkCmdSetScissorWithCount")) return vkCmdSetScissorWithCount; |
238 | 0 | if (!strcmp(funcName, "vkCmdBindVertexBuffers2")) return vkCmdBindVertexBuffers2; |
239 | 0 | if (!strcmp(funcName, "vkCmdSetDepthTestEnable")) return vkCmdSetDepthTestEnable; |
240 | 0 | if (!strcmp(funcName, "vkCmdSetDepthWriteEnable")) return vkCmdSetDepthWriteEnable; |
241 | 0 | if (!strcmp(funcName, "vkCmdSetDepthCompareOp")) return vkCmdSetDepthCompareOp; |
242 | 0 | if (!strcmp(funcName, "vkCmdSetDepthBoundsTestEnable")) return vkCmdSetDepthBoundsTestEnable; |
243 | 0 | if (!strcmp(funcName, "vkCmdSetStencilTestEnable")) return vkCmdSetStencilTestEnable; |
244 | 0 | if (!strcmp(funcName, "vkCmdSetStencilOp")) return vkCmdSetStencilOp; |
245 | 0 | if (!strcmp(funcName, "vkCmdSetRasterizerDiscardEnable")) return vkCmdSetRasterizerDiscardEnable; |
246 | 0 | if (!strcmp(funcName, "vkCmdSetDepthBiasEnable")) return vkCmdSetDepthBiasEnable; |
247 | 0 | if (!strcmp(funcName, "vkCmdSetPrimitiveRestartEnable")) return vkCmdSetPrimitiveRestartEnable; |
248 | 0 | if (!strcmp(funcName, "vkGetDeviceBufferMemoryRequirements")) return vkGetDeviceBufferMemoryRequirements; |
249 | 0 | if (!strcmp(funcName, "vkGetDeviceImageMemoryRequirements")) return vkGetDeviceImageMemoryRequirements; |
250 | 0 | if (!strcmp(funcName, "vkGetDeviceImageSparseMemoryRequirements")) return vkGetDeviceImageSparseMemoryRequirements; |
251 | | |
252 | | // Core 1.4 functions |
253 | 0 | if (!strcmp(funcName, "vkCmdSetLineStipple")) return vkCmdSetLineStipple; |
254 | 0 | if (!strcmp(funcName, "vkMapMemory2")) return vkMapMemory2; |
255 | 0 | if (!strcmp(funcName, "vkUnmapMemory2")) return vkUnmapMemory2; |
256 | 0 | if (!strcmp(funcName, "vkCmdBindIndexBuffer2")) return vkCmdBindIndexBuffer2; |
257 | 0 | if (!strcmp(funcName, "vkGetRenderingAreaGranularity")) return vkGetRenderingAreaGranularity; |
258 | 0 | if (!strcmp(funcName, "vkGetDeviceImageSubresourceLayout")) return vkGetDeviceImageSubresourceLayout; |
259 | 0 | if (!strcmp(funcName, "vkGetImageSubresourceLayout2")) return vkGetImageSubresourceLayout2; |
260 | 0 | if (!strcmp(funcName, "vkCmdPushDescriptorSet")) return vkCmdPushDescriptorSet; |
261 | 0 | if (!strcmp(funcName, "vkCmdPushDescriptorSetWithTemplate")) return vkCmdPushDescriptorSetWithTemplate; |
262 | 0 | if (!strcmp(funcName, "vkCmdSetRenderingAttachmentLocations")) return vkCmdSetRenderingAttachmentLocations; |
263 | 0 | if (!strcmp(funcName, "vkCmdSetRenderingInputAttachmentIndices")) return vkCmdSetRenderingInputAttachmentIndices; |
264 | 0 | if (!strcmp(funcName, "vkCmdBindDescriptorSets2")) return vkCmdBindDescriptorSets2; |
265 | 0 | if (!strcmp(funcName, "vkCmdPushConstants2")) return vkCmdPushConstants2; |
266 | 0 | if (!strcmp(funcName, "vkCmdPushDescriptorSet2")) return vkCmdPushDescriptorSet2; |
267 | 0 | if (!strcmp(funcName, "vkCmdPushDescriptorSetWithTemplate2")) return vkCmdPushDescriptorSetWithTemplate2; |
268 | 0 | if (!strcmp(funcName, "vkCopyMemoryToImage")) return vkCopyMemoryToImage; |
269 | 0 | if (!strcmp(funcName, "vkCopyImageToMemory")) return vkCopyImageToMemory; |
270 | 0 | if (!strcmp(funcName, "vkCopyImageToImage")) return vkCopyImageToImage; |
271 | 0 | if (!strcmp(funcName, "vkTransitionImageLayout")) return vkTransitionImageLayout; |
272 | | |
273 | | // Instance extensions |
274 | 0 | void *addr; |
275 | 0 | if (debug_extensions_InstanceGpa(inst, funcName, &addr)) return addr; |
276 | | |
277 | 0 | if (wsi_swapchain_instance_gpa(inst, funcName, &addr)) return addr; |
278 | | |
279 | 0 | if (extension_instance_gpa(inst, funcName, &addr)) return addr; |
280 | | |
281 | | // Unknown physical device extensions |
282 | 0 | addr = loader_phys_dev_ext_gpa_tramp(inst, funcName); |
283 | 0 | if (NULL != addr) return addr; |
284 | | |
285 | | // Unknown device extensions |
286 | 0 | addr = loader_dev_ext_gpa_tramp(inst, funcName); |
287 | 0 | return addr; |
288 | 0 | } |
289 | | |
290 | 0 | void *globalGetProcAddr(const char *name) { |
291 | 0 | if (!name || name[0] != 'v' || name[1] != 'k') return NULL; |
292 | | |
293 | 0 | name += 2; |
294 | 0 | if (!strcmp(name, "CreateInstance")) return vkCreateInstance; |
295 | 0 | if (!strcmp(name, "EnumerateInstanceExtensionProperties")) return vkEnumerateInstanceExtensionProperties; |
296 | 0 | if (!strcmp(name, "EnumerateInstanceLayerProperties")) return vkEnumerateInstanceLayerProperties; |
297 | 0 | if (!strcmp(name, "EnumerateInstanceVersion")) return vkEnumerateInstanceVersion; |
298 | | |
299 | 0 | return NULL; |
300 | 0 | } |