/src/vulkan-loader/loader/gpa_helper.c
Line | Count | Source |
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 | | // Unlike the generated dispatch tables in loader/generated/vk_loader_extensions.c, this switch is |
32 | | // hand-maintained: there is no generator or check_no_hash_collisions() call guarding it, so a real hash |
33 | | // collision among the cases below would surface only as a bare "duplicate case value" compiler error naming |
34 | | // neither string. Every case still gates its return on strcmp(), so a wrong or stale hash constant can never |
35 | | // cause a wrong lookup - at worst the case silently never matches and the name falls through to the |
36 | | // extension/unknown-function handling below, returning NULL for what should have been a valid core function. |
37 | | // |
38 | | // To add a new core command: compute its hash with loader_hash_string() (loader/loader_common.h), e.g. |
39 | | // python3 -c " |
40 | | // h = 2166136261 |
41 | | // for c in b'vkNewFunc': |
42 | | // h ^= c; h = (h * 16777619) & 0xFFFFFFFF |
43 | | // print(hex(h))" |
44 | | // and also add the name to kGpaHelperCoreInstanceNames in tests/loader_get_proc_addr_tests.cpp, which |
45 | | // exhaustively calls every name here and fails loudly if this switch and that list ever drift apart. |
46 | 0 | void *trampoline_get_proc_addr(struct loader_instance *inst, const char *funcName) { |
47 | 0 | const uint32_t name_hash = loader_hash_string(funcName); |
48 | | // Don't include or check global functions |
49 | 0 | switch (name_hash) { |
50 | 0 | case 0x9d4599a6u: |
51 | 0 | if (!strcmp(funcName, "vkGetInstanceProcAddr")) return vkGetInstanceProcAddr; |
52 | 0 | break; |
53 | 0 | case 0xa64dcfc3u: |
54 | 0 | if (!strcmp(funcName, "vkDestroyInstance")) return vkDestroyInstance; |
55 | 0 | break; |
56 | 0 | case 0x09612094u: |
57 | 0 | if (!strcmp(funcName, "vkEnumeratePhysicalDevices")) return vkEnumeratePhysicalDevices; |
58 | 0 | break; |
59 | 0 | case 0x3407e5aau: |
60 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures")) return vkGetPhysicalDeviceFeatures; |
61 | 0 | break; |
62 | 0 | case 0xf571955fu: |
63 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties")) return vkGetPhysicalDeviceFormatProperties; |
64 | 0 | break; |
65 | 0 | case 0x8bfced20u: |
66 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceImageFormatProperties")) return vkGetPhysicalDeviceImageFormatProperties; |
67 | 0 | break; |
68 | 0 | case 0x763c38a0u: |
69 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties")) |
70 | 0 | return vkGetPhysicalDeviceSparseImageFormatProperties; |
71 | 0 | break; |
72 | 0 | case 0x89b3ebbcu: |
73 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceProperties")) return vkGetPhysicalDeviceProperties; |
74 | 0 | break; |
75 | 0 | case 0x3d926eedu: |
76 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties")) return vkGetPhysicalDeviceQueueFamilyProperties; |
77 | 0 | break; |
78 | 0 | case 0x278fa9bbu: |
79 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties")) return vkGetPhysicalDeviceMemoryProperties; |
80 | 0 | break; |
81 | 0 | case 0xa37d674au: |
82 | 0 | if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties")) return vkEnumerateDeviceLayerProperties; |
83 | 0 | break; |
84 | 0 | case 0x53cd225eu: |
85 | 0 | if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties")) return vkEnumerateDeviceExtensionProperties; |
86 | 0 | break; |
87 | 0 | case 0x87b9b4e4u: |
88 | 0 | if (!strcmp(funcName, "vkCreateDevice")) return vkCreateDevice; |
89 | 0 | break; |
90 | 0 | case 0x228d66e7u: |
91 | 0 | if (!strcmp(funcName, "vkGetDeviceProcAddr")) return vkGetDeviceProcAddr; |
92 | 0 | break; |
93 | 0 | case 0x76ce3712u: |
94 | 0 | if (!strcmp(funcName, "vkDestroyDevice")) return vkDestroyDevice; |
95 | 0 | break; |
96 | 0 | case 0x0ef70c2bu: |
97 | 0 | if (!strcmp(funcName, "vkGetDeviceQueue")) return vkGetDeviceQueue; |
98 | 0 | break; |
99 | 0 | case 0xa702ecf9u: |
100 | 0 | if (!strcmp(funcName, "vkQueueSubmit")) return vkQueueSubmit; |
101 | 0 | break; |
102 | 0 | case 0x33b1f316u: |
103 | 0 | if (!strcmp(funcName, "vkQueueWaitIdle")) return vkQueueWaitIdle; |
104 | 0 | break; |
105 | 0 | case 0xd8f8605fu: |
106 | 0 | if (!strcmp(funcName, "vkDeviceWaitIdle")) return vkDeviceWaitIdle; |
107 | 0 | break; |
108 | 0 | case 0x8fd182beu: |
109 | 0 | if (!strcmp(funcName, "vkAllocateMemory")) return vkAllocateMemory; |
110 | 0 | break; |
111 | 0 | case 0x3486e387u: |
112 | 0 | if (!strcmp(funcName, "vkFreeMemory")) return vkFreeMemory; |
113 | 0 | break; |
114 | 0 | case 0xeade61a3u: |
115 | 0 | if (!strcmp(funcName, "vkMapMemory")) return vkMapMemory; |
116 | 0 | break; |
117 | 0 | case 0x45ae8caau: |
118 | 0 | if (!strcmp(funcName, "vkUnmapMemory")) return vkUnmapMemory; |
119 | 0 | break; |
120 | 0 | case 0xd4cde7deu: |
121 | 0 | if (!strcmp(funcName, "vkFlushMappedMemoryRanges")) return vkFlushMappedMemoryRanges; |
122 | 0 | break; |
123 | 0 | case 0x242f4435u: |
124 | 0 | if (!strcmp(funcName, "vkInvalidateMappedMemoryRanges")) return vkInvalidateMappedMemoryRanges; |
125 | 0 | break; |
126 | 0 | case 0x7edaff3eu: |
127 | 0 | if (!strcmp(funcName, "vkGetDeviceMemoryCommitment")) return vkGetDeviceMemoryCommitment; |
128 | 0 | break; |
129 | 0 | case 0x0f6505a4u: |
130 | 0 | if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements")) return vkGetImageSparseMemoryRequirements; |
131 | 0 | break; |
132 | 0 | case 0x5b923818u: |
133 | 0 | if (!strcmp(funcName, "vkGetImageMemoryRequirements")) return vkGetImageMemoryRequirements; |
134 | 0 | break; |
135 | 0 | case 0x5f571cdbu: |
136 | 0 | if (!strcmp(funcName, "vkGetBufferMemoryRequirements")) return vkGetBufferMemoryRequirements; |
137 | 0 | break; |
138 | 0 | case 0xb59c1405u: |
139 | 0 | if (!strcmp(funcName, "vkBindImageMemory")) return vkBindImageMemory; |
140 | 0 | break; |
141 | 0 | case 0x8fcb92d4u: |
142 | 0 | if (!strcmp(funcName, "vkBindBufferMemory")) return vkBindBufferMemory; |
143 | 0 | break; |
144 | 0 | case 0xe4d99d8eu: |
145 | 0 | if (!strcmp(funcName, "vkQueueBindSparse")) return vkQueueBindSparse; |
146 | 0 | break; |
147 | 0 | case 0xb758c6a3u: |
148 | 0 | if (!strcmp(funcName, "vkCreateFence")) return vkCreateFence; |
149 | 0 | break; |
150 | 0 | case 0x60073b51u: |
151 | 0 | if (!strcmp(funcName, "vkDestroyFence")) return vkDestroyFence; |
152 | 0 | break; |
153 | 0 | case 0xd870b975u: |
154 | 0 | if (!strcmp(funcName, "vkGetFenceStatus")) return vkGetFenceStatus; |
155 | 0 | break; |
156 | 0 | case 0xdbb395d3u: |
157 | 0 | if (!strcmp(funcName, "vkResetFences")) return vkResetFences; |
158 | 0 | break; |
159 | 0 | case 0xe7c2c7dcu: |
160 | 0 | if (!strcmp(funcName, "vkWaitForFences")) return vkWaitForFences; |
161 | 0 | break; |
162 | 0 | case 0xd9b8366cu: |
163 | 0 | if (!strcmp(funcName, "vkCreateSemaphore")) return vkCreateSemaphore; |
164 | 0 | break; |
165 | 0 | case 0xaf0834d2u: |
166 | 0 | if (!strcmp(funcName, "vkDestroySemaphore")) return vkDestroySemaphore; |
167 | 0 | break; |
168 | 0 | case 0x42b3f55eu: |
169 | 0 | if (!strcmp(funcName, "vkCreateEvent")) return vkCreateEvent; |
170 | 0 | break; |
171 | 0 | case 0x624815e0u: |
172 | 0 | if (!strcmp(funcName, "vkDestroyEvent")) return vkDestroyEvent; |
173 | 0 | break; |
174 | 0 | case 0x66007620u: |
175 | 0 | if (!strcmp(funcName, "vkGetEventStatus")) return vkGetEventStatus; |
176 | 0 | break; |
177 | 0 | case 0xa73c166au: |
178 | 0 | if (!strcmp(funcName, "vkSetEvent")) return vkSetEvent; |
179 | 0 | break; |
180 | 0 | case 0x7de046a3u: |
181 | 0 | if (!strcmp(funcName, "vkResetEvent")) return vkResetEvent; |
182 | 0 | break; |
183 | 0 | case 0x0a03b3a4u: |
184 | 0 | if (!strcmp(funcName, "vkCreateQueryPool")) return vkCreateQueryPool; |
185 | 0 | break; |
186 | 0 | case 0xfc8c9742u: |
187 | 0 | if (!strcmp(funcName, "vkDestroyQueryPool")) return vkDestroyQueryPool; |
188 | 0 | break; |
189 | 0 | case 0x300fc14au: |
190 | 0 | if (!strcmp(funcName, "vkGetQueryPoolResults")) return vkGetQueryPoolResults; |
191 | 0 | break; |
192 | 0 | case 0x507f87ecu: |
193 | 0 | if (!strcmp(funcName, "vkCreateBuffer")) return vkCreateBuffer; |
194 | 0 | break; |
195 | 0 | case 0x8b9013b2u: |
196 | 0 | if (!strcmp(funcName, "vkDestroyBuffer")) return vkDestroyBuffer; |
197 | 0 | break; |
198 | 0 | case 0x11b7e8d5u: |
199 | 0 | if (!strcmp(funcName, "vkCreateBufferView")) return vkCreateBufferView; |
200 | 0 | break; |
201 | 0 | case 0x827878bbu: |
202 | 0 | if (!strcmp(funcName, "vkDestroyBufferView")) return vkDestroyBufferView; |
203 | 0 | break; |
204 | 0 | case 0x29aa0da7u: |
205 | 0 | if (!strcmp(funcName, "vkCreateImage")) return vkCreateImage; |
206 | 0 | break; |
207 | 0 | case 0x2d239345u: |
208 | 0 | if (!strcmp(funcName, "vkDestroyImage")) return vkDestroyImage; |
209 | 0 | break; |
210 | 0 | case 0x3bb2e87du: |
211 | 0 | if (!strcmp(funcName, "vkGetImageSubresourceLayout")) return vkGetImageSubresourceLayout; |
212 | 0 | break; |
213 | 0 | case 0xb838b382u: |
214 | 0 | if (!strcmp(funcName, "vkCreateImageView")) return vkCreateImageView; |
215 | 0 | break; |
216 | 0 | case 0xb32c7798u: |
217 | 0 | if (!strcmp(funcName, "vkDestroyImageView")) return vkDestroyImageView; |
218 | 0 | break; |
219 | 0 | case 0x6f596ac7u: |
220 | 0 | if (!strcmp(funcName, "vkCreateShaderModule")) return vkCreateShaderModule; |
221 | 0 | break; |
222 | 0 | case 0x6892d8b1u: |
223 | 0 | if (!strcmp(funcName, "vkDestroyShaderModule")) return vkDestroyShaderModule; |
224 | 0 | break; |
225 | 0 | case 0x3e71c4c6u: |
226 | 0 | if (!strcmp(funcName, "vkCreatePipelineCache")) return vkCreatePipelineCache; |
227 | 0 | break; |
228 | 0 | case 0x396c2a34u: |
229 | 0 | if (!strcmp(funcName, "vkDestroyPipelineCache")) return vkDestroyPipelineCache; |
230 | 0 | break; |
231 | 0 | case 0x6855c1a6u: |
232 | 0 | if (!strcmp(funcName, "vkGetPipelineCacheData")) return vkGetPipelineCacheData; |
233 | 0 | break; |
234 | 0 | case 0xc71137ebu: |
235 | 0 | if (!strcmp(funcName, "vkMergePipelineCaches")) return vkMergePipelineCaches; |
236 | 0 | break; |
237 | 0 | case 0xffdc1506u: |
238 | 0 | if (!strcmp(funcName, "vkCreateGraphicsPipelines")) return vkCreateGraphicsPipelines; |
239 | 0 | break; |
240 | 0 | case 0xc45193c6u: |
241 | 0 | if (!strcmp(funcName, "vkCreateComputePipelines")) return vkCreateComputePipelines; |
242 | 0 | break; |
243 | 0 | case 0x84481076u: |
244 | 0 | if (!strcmp(funcName, "vkDestroyPipeline")) return vkDestroyPipeline; |
245 | 0 | break; |
246 | 0 | case 0xaffa89a2u: |
247 | 0 | if (!strcmp(funcName, "vkCreatePipelineLayout")) return vkCreatePipelineLayout; |
248 | 0 | break; |
249 | 0 | case 0xe5b1e1d0u: |
250 | 0 | if (!strcmp(funcName, "vkDestroyPipelineLayout")) return vkDestroyPipelineLayout; |
251 | 0 | break; |
252 | 0 | case 0x5d12d31eu: |
253 | 0 | if (!strcmp(funcName, "vkCreateSampler")) return vkCreateSampler; |
254 | 0 | break; |
255 | 0 | case 0x2842f278u: |
256 | 0 | if (!strcmp(funcName, "vkDestroySampler")) return vkDestroySampler; |
257 | 0 | break; |
258 | 0 | case 0x452f43a7u: |
259 | 0 | if (!strcmp(funcName, "vkCreateDescriptorSetLayout")) return vkCreateDescriptorSetLayout; |
260 | 0 | break; |
261 | 0 | case 0x123433f5u: |
262 | 0 | if (!strcmp(funcName, "vkDestroyDescriptorSetLayout")) return vkDestroyDescriptorSetLayout; |
263 | 0 | break; |
264 | 0 | case 0x6392b8cdu: |
265 | 0 | if (!strcmp(funcName, "vkCreateDescriptorPool")) return vkCreateDescriptorPool; |
266 | 0 | break; |
267 | 0 | case 0x752f3e6fu: |
268 | 0 | if (!strcmp(funcName, "vkDestroyDescriptorPool")) return vkDestroyDescriptorPool; |
269 | 0 | break; |
270 | 0 | case 0x19c5052au: |
271 | 0 | if (!strcmp(funcName, "vkResetDescriptorPool")) return vkResetDescriptorPool; |
272 | 0 | break; |
273 | 0 | case 0x14a3b709u: |
274 | 0 | if (!strcmp(funcName, "vkAllocateDescriptorSets")) return vkAllocateDescriptorSets; |
275 | 0 | break; |
276 | 0 | case 0x2d791f80u: |
277 | 0 | if (!strcmp(funcName, "vkFreeDescriptorSets")) return vkFreeDescriptorSets; |
278 | 0 | break; |
279 | 0 | case 0x13d7722fu: |
280 | 0 | if (!strcmp(funcName, "vkUpdateDescriptorSets")) return vkUpdateDescriptorSets; |
281 | 0 | break; |
282 | 0 | case 0x8c0b3c69u: |
283 | 0 | if (!strcmp(funcName, "vkCreateFramebuffer")) return vkCreateFramebuffer; |
284 | 0 | break; |
285 | 0 | case 0xf60843dbu: |
286 | 0 | if (!strcmp(funcName, "vkDestroyFramebuffer")) return vkDestroyFramebuffer; |
287 | 0 | break; |
288 | 0 | case 0xe75b2217u: |
289 | 0 | if (!strcmp(funcName, "vkCreateRenderPass")) return vkCreateRenderPass; |
290 | 0 | break; |
291 | 0 | case 0x235b7d71u: |
292 | 0 | if (!strcmp(funcName, "vkDestroyRenderPass")) return vkDestroyRenderPass; |
293 | 0 | break; |
294 | 0 | case 0x0984abf1u: |
295 | 0 | if (!strcmp(funcName, "vkGetRenderAreaGranularity")) return vkGetRenderAreaGranularity; |
296 | 0 | break; |
297 | 0 | case 0x1d0cde71u: |
298 | 0 | if (!strcmp(funcName, "vkCreateCommandPool")) return vkCreateCommandPool; |
299 | 0 | break; |
300 | 0 | case 0x46d07137u: |
301 | 0 | if (!strcmp(funcName, "vkDestroyCommandPool")) return vkDestroyCommandPool; |
302 | 0 | break; |
303 | 0 | case 0x32d3032cu: |
304 | 0 | if (!strcmp(funcName, "vkResetCommandPool")) return vkResetCommandPool; |
305 | 0 | break; |
306 | 0 | case 0x9b476eedu: |
307 | 0 | if (!strcmp(funcName, "vkAllocateCommandBuffers")) return vkAllocateCommandBuffers; |
308 | 0 | break; |
309 | 0 | case 0x60cb1fd0u: |
310 | 0 | if (!strcmp(funcName, "vkFreeCommandBuffers")) return vkFreeCommandBuffers; |
311 | 0 | break; |
312 | 0 | case 0x38f0e672u: |
313 | 0 | if (!strcmp(funcName, "vkBeginCommandBuffer")) return vkBeginCommandBuffer; |
314 | 0 | break; |
315 | 0 | case 0xcf8708eau: |
316 | 0 | if (!strcmp(funcName, "vkEndCommandBuffer")) return vkEndCommandBuffer; |
317 | 0 | break; |
318 | 0 | case 0x6ee4b1d0u: |
319 | 0 | if (!strcmp(funcName, "vkResetCommandBuffer")) return vkResetCommandBuffer; |
320 | 0 | break; |
321 | 0 | case 0x3306d993u: |
322 | 0 | if (!strcmp(funcName, "vkCmdBindPipeline")) return vkCmdBindPipeline; |
323 | 0 | break; |
324 | 0 | case 0x4f8ac889u: |
325 | 0 | if (!strcmp(funcName, "vkCmdBindDescriptorSets")) return vkCmdBindDescriptorSets; |
326 | 0 | break; |
327 | 0 | case 0xadd4e8dau: |
328 | 0 | if (!strcmp(funcName, "vkCmdBindVertexBuffers")) return vkCmdBindVertexBuffers; |
329 | 0 | break; |
330 | 0 | case 0xf1ac7a71u: |
331 | 0 | if (!strcmp(funcName, "vkCmdBindIndexBuffer")) return vkCmdBindIndexBuffer; |
332 | 0 | break; |
333 | 0 | case 0x64e0e218u: |
334 | 0 | if (!strcmp(funcName, "vkCmdSetViewport")) return vkCmdSetViewport; |
335 | 0 | break; |
336 | 0 | case 0xbcc3cad4u: |
337 | 0 | if (!strcmp(funcName, "vkCmdSetScissor")) return vkCmdSetScissor; |
338 | 0 | break; |
339 | 0 | case 0x89505460u: |
340 | 0 | if (!strcmp(funcName, "vkCmdSetLineWidth")) return vkCmdSetLineWidth; |
341 | 0 | break; |
342 | 0 | case 0x9da9f23eu: |
343 | 0 | if (!strcmp(funcName, "vkCmdSetDepthBias")) return vkCmdSetDepthBias; |
344 | 0 | break; |
345 | 0 | case 0xb11418dau: |
346 | 0 | if (!strcmp(funcName, "vkCmdSetBlendConstants")) return vkCmdSetBlendConstants; |
347 | 0 | break; |
348 | 0 | case 0x8aad23c2u: |
349 | 0 | if (!strcmp(funcName, "vkCmdSetDepthBounds")) return vkCmdSetDepthBounds; |
350 | 0 | break; |
351 | 0 | case 0xb6ee9565u: |
352 | 0 | if (!strcmp(funcName, "vkCmdSetStencilCompareMask")) return vkCmdSetStencilCompareMask; |
353 | 0 | break; |
354 | 0 | case 0xe559d0e1u: |
355 | 0 | if (!strcmp(funcName, "vkCmdSetStencilWriteMask")) return vkCmdSetStencilWriteMask; |
356 | 0 | break; |
357 | 0 | case 0x1d031387u: |
358 | 0 | if (!strcmp(funcName, "vkCmdSetStencilReference")) return vkCmdSetStencilReference; |
359 | 0 | break; |
360 | 0 | case 0xa9fdc2c0u: |
361 | 0 | if (!strcmp(funcName, "vkCmdDraw")) return vkCmdDraw; |
362 | 0 | break; |
363 | 0 | case 0x44b84ecdu: |
364 | 0 | if (!strcmp(funcName, "vkCmdDrawIndexed")) return vkCmdDrawIndexed; |
365 | 0 | break; |
366 | 0 | case 0x570978d6u: |
367 | 0 | if (!strcmp(funcName, "vkCmdDrawIndirect")) return vkCmdDrawIndirect; |
368 | 0 | break; |
369 | 0 | case 0xa2dd69bfu: |
370 | 0 | if (!strcmp(funcName, "vkCmdDrawIndexedIndirect")) return vkCmdDrawIndexedIndirect; |
371 | 0 | break; |
372 | 0 | case 0x1f28c0e0u: |
373 | 0 | if (!strcmp(funcName, "vkCmdDispatch")) return vkCmdDispatch; |
374 | 0 | break; |
375 | 0 | case 0x6d599ab6u: |
376 | 0 | if (!strcmp(funcName, "vkCmdDispatchIndirect")) return vkCmdDispatchIndirect; |
377 | 0 | break; |
378 | 0 | case 0x54db4621u: |
379 | 0 | if (!strcmp(funcName, "vkCmdCopyBuffer")) return vkCmdCopyBuffer; |
380 | 0 | break; |
381 | 0 | case 0x7bf994f0u: |
382 | 0 | if (!strcmp(funcName, "vkCmdCopyImage")) return vkCmdCopyImage; |
383 | 0 | break; |
384 | 0 | case 0xef654202u: |
385 | 0 | if (!strcmp(funcName, "vkCmdBlitImage")) return vkCmdBlitImage; |
386 | 0 | break; |
387 | 0 | case 0xb0b1777du: |
388 | 0 | if (!strcmp(funcName, "vkCmdCopyBufferToImage")) return vkCmdCopyBufferToImage; |
389 | 0 | break; |
390 | 0 | case 0x0220566fu: |
391 | 0 | if (!strcmp(funcName, "vkCmdCopyImageToBuffer")) return vkCmdCopyImageToBuffer; |
392 | 0 | break; |
393 | 0 | case 0x4cafab95u: |
394 | 0 | if (!strcmp(funcName, "vkCmdUpdateBuffer")) return vkCmdUpdateBuffer; |
395 | 0 | break; |
396 | 0 | case 0xe2498171u: |
397 | 0 | if (!strcmp(funcName, "vkCmdFillBuffer")) return vkCmdFillBuffer; |
398 | 0 | break; |
399 | 0 | case 0x146f399bu: |
400 | 0 | if (!strcmp(funcName, "vkCmdClearColorImage")) return vkCmdClearColorImage; |
401 | 0 | break; |
402 | 0 | case 0x13bc9e59u: |
403 | 0 | if (!strcmp(funcName, "vkCmdClearDepthStencilImage")) return vkCmdClearDepthStencilImage; |
404 | 0 | break; |
405 | 0 | case 0x049d5213u: |
406 | 0 | if (!strcmp(funcName, "vkCmdClearAttachments")) return vkCmdClearAttachments; |
407 | 0 | break; |
408 | 0 | case 0xd84ff14bu: |
409 | 0 | if (!strcmp(funcName, "vkCmdResolveImage")) return vkCmdResolveImage; |
410 | 0 | break; |
411 | 0 | case 0x797f43fau: |
412 | 0 | if (!strcmp(funcName, "vkCmdSetEvent")) return vkCmdSetEvent; |
413 | 0 | break; |
414 | 0 | case 0x7231a513u: |
415 | 0 | if (!strcmp(funcName, "vkCmdResetEvent")) return vkCmdResetEvent; |
416 | 0 | break; |
417 | 0 | case 0x18acad2eu: |
418 | 0 | if (!strcmp(funcName, "vkCmdWaitEvents")) return vkCmdWaitEvents; |
419 | 0 | break; |
420 | 0 | case 0x0223af53u: |
421 | 0 | if (!strcmp(funcName, "vkCmdPipelineBarrier")) return vkCmdPipelineBarrier; |
422 | 0 | break; |
423 | 0 | case 0x976db859u: |
424 | 0 | if (!strcmp(funcName, "vkCmdBeginQuery")) return vkCmdBeginQuery; |
425 | 0 | break; |
426 | 0 | case 0xb93efb21u: |
427 | 0 | if (!strcmp(funcName, "vkCmdEndQuery")) return vkCmdEndQuery; |
428 | 0 | break; |
429 | 0 | case 0x21657da5u: |
430 | 0 | if (!strcmp(funcName, "vkCmdResetQueryPool")) return vkCmdResetQueryPool; |
431 | 0 | break; |
432 | 0 | case 0xf4fa04efu: |
433 | 0 | if (!strcmp(funcName, "vkCmdWriteTimestamp")) return vkCmdWriteTimestamp; |
434 | 0 | break; |
435 | 0 | case 0xb2cd2b3fu: |
436 | 0 | if (!strcmp(funcName, "vkCmdCopyQueryPoolResults")) return vkCmdCopyQueryPoolResults; |
437 | 0 | break; |
438 | 0 | case 0xd617972fu: |
439 | 0 | if (!strcmp(funcName, "vkCmdPushConstants")) return vkCmdPushConstants; |
440 | 0 | break; |
441 | 0 | case 0x79052222u: |
442 | 0 | if (!strcmp(funcName, "vkCmdBeginRenderPass")) return vkCmdBeginRenderPass; |
443 | 0 | break; |
444 | 0 | case 0x94036722u: |
445 | 0 | if (!strcmp(funcName, "vkCmdNextSubpass")) return vkCmdNextSubpass; |
446 | 0 | break; |
447 | 0 | case 0xeb0917fau: |
448 | 0 | if (!strcmp(funcName, "vkCmdEndRenderPass")) return vkCmdEndRenderPass; |
449 | 0 | break; |
450 | 0 | case 0xf5f7e073u: |
451 | 0 | if (!strcmp(funcName, "vkCmdExecuteCommands")) return vkCmdExecuteCommands; |
452 | 0 | break; |
453 | | |
454 | | // Core 1.1 functions |
455 | 0 | case 0x297b509fu: |
456 | 0 | if (!strcmp(funcName, "vkEnumeratePhysicalDeviceGroups")) return vkEnumeratePhysicalDeviceGroups; |
457 | 0 | break; |
458 | 0 | case 0x806e6e48u: |
459 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceFeatures2")) return vkGetPhysicalDeviceFeatures2; |
460 | 0 | break; |
461 | 0 | case 0x543bd08au: |
462 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceProperties2")) return vkGetPhysicalDeviceProperties2; |
463 | 0 | break; |
464 | 0 | case 0xcece3a97u: |
465 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceFormatProperties2")) return vkGetPhysicalDeviceFormatProperties2; |
466 | 0 | break; |
467 | 0 | case 0x71293356u: |
468 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceImageFormatProperties2")) return vkGetPhysicalDeviceImageFormatProperties2; |
469 | 0 | break; |
470 | 0 | case 0xcc84890du: |
471 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceQueueFamilyProperties2")) return vkGetPhysicalDeviceQueueFamilyProperties2; |
472 | 0 | break; |
473 | 0 | case 0xd027e2abu: |
474 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceMemoryProperties2")) return vkGetPhysicalDeviceMemoryProperties2; |
475 | 0 | break; |
476 | 0 | case 0xb2cd0dd6u: |
477 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceSparseImageFormatProperties2")) |
478 | 0 | return vkGetPhysicalDeviceSparseImageFormatProperties2; |
479 | 0 | break; |
480 | 0 | case 0x0b1f96f9u: |
481 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceExternalBufferProperties")) |
482 | 0 | return vkGetPhysicalDeviceExternalBufferProperties; |
483 | 0 | break; |
484 | 0 | case 0xc98f5959u: |
485 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceExternalSemaphoreProperties")) |
486 | 0 | return vkGetPhysicalDeviceExternalSemaphoreProperties; |
487 | 0 | break; |
488 | 0 | case 0x9e415ee2u: |
489 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceExternalFenceProperties")) return vkGetPhysicalDeviceExternalFenceProperties; |
490 | 0 | break; |
491 | 0 | case 0x43784012u: |
492 | 0 | if (!strcmp(funcName, "vkBindBufferMemory2")) return vkBindBufferMemory2; |
493 | 0 | break; |
494 | 0 | case 0x1bb3d295u: |
495 | 0 | if (!strcmp(funcName, "vkBindImageMemory2")) return vkBindImageMemory2; |
496 | 0 | break; |
497 | 0 | case 0xf5a1feb7u: |
498 | 0 | if (!strcmp(funcName, "vkGetDeviceGroupPeerMemoryFeatures")) return vkGetDeviceGroupPeerMemoryFeatures; |
499 | 0 | break; |
500 | 0 | case 0xf0313ec8u: |
501 | 0 | if (!strcmp(funcName, "vkCmdSetDeviceMask")) return vkCmdSetDeviceMask; |
502 | 0 | break; |
503 | 0 | case 0x95d77705u: |
504 | 0 | if (!strcmp(funcName, "vkCmdDispatchBase")) return vkCmdDispatchBase; |
505 | 0 | break; |
506 | 0 | case 0x512e6a1eu: |
507 | 0 | if (!strcmp(funcName, "vkGetImageMemoryRequirements2")) return vkGetImageMemoryRequirements2; |
508 | 0 | break; |
509 | 0 | case 0x59c4eabdu: |
510 | 0 | if (!strcmp(funcName, "vkTrimCommandPool")) return vkTrimCommandPool; |
511 | 0 | break; |
512 | 0 | case 0xa7e80b5bu: |
513 | 0 | if (!strcmp(funcName, "vkGetDeviceQueue2")) return vkGetDeviceQueue2; |
514 | 0 | break; |
515 | 0 | case 0xf850dd41u: |
516 | 0 | if (!strcmp(funcName, "vkCreateSamplerYcbcrConversion")) return vkCreateSamplerYcbcrConversion; |
517 | 0 | break; |
518 | 0 | case 0x8b04a087u: |
519 | 0 | if (!strcmp(funcName, "vkDestroySamplerYcbcrConversion")) return vkDestroySamplerYcbcrConversion; |
520 | 0 | break; |
521 | 0 | case 0xfd510f82u: |
522 | 0 | if (!strcmp(funcName, "vkGetDescriptorSetLayoutSupport")) return vkGetDescriptorSetLayoutSupport; |
523 | 0 | break; |
524 | 0 | case 0xdde2a868u: |
525 | 0 | if (!strcmp(funcName, "vkCreateDescriptorUpdateTemplate")) return vkCreateDescriptorUpdateTemplate; |
526 | 0 | break; |
527 | 0 | case 0x8769c7c2u: |
528 | 0 | if (!strcmp(funcName, "vkDestroyDescriptorUpdateTemplate")) return vkDestroyDescriptorUpdateTemplate; |
529 | 0 | break; |
530 | 0 | case 0xe9650ec4u: |
531 | 0 | if (!strcmp(funcName, "vkUpdateDescriptorSetWithTemplate")) return vkUpdateDescriptorSetWithTemplate; |
532 | 0 | break; |
533 | 0 | case 0xd207cb22u: |
534 | 0 | if (!strcmp(funcName, "vkGetImageSparseMemoryRequirements2")) return vkGetImageSparseMemoryRequirements2; |
535 | 0 | break; |
536 | 0 | case 0xff2282cbu: |
537 | 0 | if (!strcmp(funcName, "vkGetBufferMemoryRequirements2")) return vkGetBufferMemoryRequirements2; |
538 | 0 | break; |
539 | | |
540 | | // Core 1.2 functions |
541 | 0 | case 0x5976c03fu: |
542 | 0 | if (!strcmp(funcName, "vkCreateRenderPass2")) return vkCreateRenderPass2; |
543 | 0 | break; |
544 | 0 | case 0x93149f30u: |
545 | 0 | if (!strcmp(funcName, "vkCmdBeginRenderPass2")) return vkCmdBeginRenderPass2; |
546 | 0 | break; |
547 | 0 | case 0x115b3e30u: |
548 | 0 | if (!strcmp(funcName, "vkCmdNextSubpass2")) return vkCmdNextSubpass2; |
549 | 0 | break; |
550 | 0 | case 0xc7506fd8u: |
551 | 0 | if (!strcmp(funcName, "vkCmdEndRenderPass2")) return vkCmdEndRenderPass2; |
552 | 0 | break; |
553 | 0 | case 0x772b9685u: |
554 | 0 | if (!strcmp(funcName, "vkCmdDrawIndirectCount")) return vkCmdDrawIndirectCount; |
555 | 0 | break; |
556 | 0 | case 0x570f1d66u: |
557 | 0 | if (!strcmp(funcName, "vkCmdDrawIndexedIndirectCount")) return vkCmdDrawIndexedIndirectCount; |
558 | 0 | break; |
559 | 0 | case 0x036431c1u: |
560 | 0 | if (!strcmp(funcName, "vkGetSemaphoreCounterValue")) return vkGetSemaphoreCounterValue; |
561 | 0 | break; |
562 | 0 | case 0xc2aca738u: |
563 | 0 | if (!strcmp(funcName, "vkWaitSemaphores")) return vkWaitSemaphores; |
564 | 0 | break; |
565 | 0 | case 0x307d1a20u: |
566 | 0 | if (!strcmp(funcName, "vkSignalSemaphore")) return vkSignalSemaphore; |
567 | 0 | break; |
568 | 0 | case 0x5a76a96eu: |
569 | 0 | if (!strcmp(funcName, "vkGetBufferDeviceAddress")) return vkGetBufferDeviceAddress; |
570 | 0 | break; |
571 | 0 | case 0x7e52a54du: |
572 | 0 | if (!strcmp(funcName, "vkGetBufferOpaqueCaptureAddress")) return vkGetBufferOpaqueCaptureAddress; |
573 | 0 | break; |
574 | 0 | case 0xcf71e086u: |
575 | 0 | if (!strcmp(funcName, "vkGetDeviceMemoryOpaqueCaptureAddress")) return vkGetDeviceMemoryOpaqueCaptureAddress; |
576 | 0 | break; |
577 | 0 | case 0x4f91a755u: |
578 | 0 | if (!strcmp(funcName, "vkResetQueryPool")) return vkResetQueryPool; |
579 | 0 | break; |
580 | | |
581 | | // Core 1.3 functions |
582 | 0 | case 0x2191b19eu: |
583 | 0 | if (!strcmp(funcName, "vkGetPhysicalDeviceToolProperties")) return vkGetPhysicalDeviceToolProperties; |
584 | 0 | break; |
585 | 0 | case 0x26afd535u: |
586 | 0 | if (!strcmp(funcName, "vkCreatePrivateDataSlot")) return vkCreatePrivateDataSlot; |
587 | 0 | break; |
588 | 0 | case 0xd5976337u: |
589 | 0 | if (!strcmp(funcName, "vkDestroyPrivateDataSlot")) return vkDestroyPrivateDataSlot; |
590 | 0 | break; |
591 | 0 | case 0x8ea4745du: |
592 | 0 | if (!strcmp(funcName, "vkSetPrivateData")) return vkSetPrivateData; |
593 | 0 | break; |
594 | 0 | case 0xe9a91971u: |
595 | 0 | if (!strcmp(funcName, "vkGetPrivateData")) return vkGetPrivateData; |
596 | 0 | break; |
597 | 0 | case 0x0b57b3d8u: |
598 | 0 | if (!strcmp(funcName, "vkCmdSetEvent2")) return vkCmdSetEvent2; |
599 | 0 | break; |
600 | 0 | case 0xe526f2f3u: |
601 | 0 | if (!strcmp(funcName, "vkCmdResetEvent2")) return vkCmdResetEvent2; |
602 | 0 | break; |
603 | 0 | case 0xf3d48314u: |
604 | 0 | if (!strcmp(funcName, "vkCmdWaitEvents2")) return vkCmdWaitEvents2; |
605 | 0 | break; |
606 | 0 | case 0xbf2d15b3u: |
607 | 0 | if (!strcmp(funcName, "vkCmdPipelineBarrier2")) return vkCmdPipelineBarrier2; |
608 | 0 | break; |
609 | 0 | case 0x8295a7e7u: |
610 | 0 | if (!strcmp(funcName, "vkCmdWriteTimestamp2")) return vkCmdWriteTimestamp2; |
611 | 0 | break; |
612 | 0 | case 0xb49ac391u: |
613 | 0 | if (!strcmp(funcName, "vkQueueSubmit2")) return vkQueueSubmit2; |
614 | 0 | break; |
615 | 0 | case 0xa82f4fe9u: |
616 | 0 | if (!strcmp(funcName, "vkCmdCopyBuffer2")) return vkCmdCopyBuffer2; |
617 | 0 | break; |
618 | 0 | case 0xebe52d66u: |
619 | 0 | if (!strcmp(funcName, "vkCmdCopyImage2")) return vkCmdCopyImage2; |
620 | 0 | break; |
621 | 0 | case 0x765ed15du: |
622 | 0 | if (!strcmp(funcName, "vkCmdCopyBufferToImage2")) return vkCmdCopyBufferToImage2; |
623 | 0 | break; |
624 | 0 | case 0xb5e7f467u: |
625 | 0 | if (!strcmp(funcName, "vkCmdCopyImageToBuffer2")) return vkCmdCopyImageToBuffer2; |
626 | 0 | break; |
627 | 0 | case 0x0c673190u: |
628 | 0 | if (!strcmp(funcName, "vkCmdBlitImage2")) return vkCmdBlitImage2; |
629 | 0 | break; |
630 | 0 | case 0xfed9217bu: |
631 | 0 | if (!strcmp(funcName, "vkCmdResolveImage2")) return vkCmdResolveImage2; |
632 | 0 | break; |
633 | 0 | case 0xc23aecb9u: |
634 | 0 | if (!strcmp(funcName, "vkCmdBeginRendering")) return vkCmdBeginRendering; |
635 | 0 | break; |
636 | 0 | case 0x504cb441u: |
637 | 0 | if (!strcmp(funcName, "vkCmdEndRendering")) return vkCmdEndRendering; |
638 | 0 | break; |
639 | 0 | case 0xbb1fdbfdu: |
640 | 0 | if (!strcmp(funcName, "vkCmdSetCullMode")) return vkCmdSetCullMode; |
641 | 0 | break; |
642 | 0 | case 0xec690b60u: |
643 | 0 | if (!strcmp(funcName, "vkCmdSetFrontFace")) return vkCmdSetFrontFace; |
644 | 0 | break; |
645 | 0 | case 0xb4387882u: |
646 | 0 | if (!strcmp(funcName, "vkCmdSetPrimitiveTopology")) return vkCmdSetPrimitiveTopology; |
647 | 0 | break; |
648 | 0 | case 0xa0611d7fu: |
649 | 0 | if (!strcmp(funcName, "vkCmdSetViewportWithCount")) return vkCmdSetViewportWithCount; |
650 | 0 | break; |
651 | 0 | case 0xfc5a2533u: |
652 | 0 | if (!strcmp(funcName, "vkCmdSetScissorWithCount")) return vkCmdSetScissorWithCount; |
653 | 0 | break; |
654 | 0 | case 0x8e2aa538u: |
655 | 0 | if (!strcmp(funcName, "vkCmdBindVertexBuffers2")) return vkCmdBindVertexBuffers2; |
656 | 0 | break; |
657 | 0 | case 0x4874399cu: |
658 | 0 | if (!strcmp(funcName, "vkCmdSetDepthTestEnable")) return vkCmdSetDepthTestEnable; |
659 | 0 | break; |
660 | 0 | case 0x48a8eb79u: |
661 | 0 | if (!strcmp(funcName, "vkCmdSetDepthWriteEnable")) return vkCmdSetDepthWriteEnable; |
662 | 0 | break; |
663 | 0 | case 0xeee7ee11u: |
664 | 0 | if (!strcmp(funcName, "vkCmdSetDepthCompareOp")) return vkCmdSetDepthCompareOp; |
665 | 0 | break; |
666 | 0 | case 0x47579071u: |
667 | 0 | if (!strcmp(funcName, "vkCmdSetDepthBoundsTestEnable")) return vkCmdSetDepthBoundsTestEnable; |
668 | 0 | break; |
669 | 0 | case 0xb486d021u: |
670 | 0 | if (!strcmp(funcName, "vkCmdSetStencilTestEnable")) return vkCmdSetStencilTestEnable; |
671 | 0 | break; |
672 | 0 | case 0x4d91cb75u: |
673 | 0 | if (!strcmp(funcName, "vkCmdSetStencilOp")) return vkCmdSetStencilOp; |
674 | 0 | break; |
675 | 0 | case 0x3fb78c34u: |
676 | 0 | if (!strcmp(funcName, "vkCmdSetRasterizerDiscardEnable")) return vkCmdSetRasterizerDiscardEnable; |
677 | 0 | break; |
678 | 0 | case 0x9b2a547du: |
679 | 0 | if (!strcmp(funcName, "vkCmdSetDepthBiasEnable")) return vkCmdSetDepthBiasEnable; |
680 | 0 | break; |
681 | 0 | case 0xd42a0ba9u: |
682 | 0 | if (!strcmp(funcName, "vkCmdSetPrimitiveRestartEnable")) return vkCmdSetPrimitiveRestartEnable; |
683 | 0 | break; |
684 | 0 | case 0xe338387du: |
685 | 0 | if (!strcmp(funcName, "vkGetDeviceBufferMemoryRequirements")) return vkGetDeviceBufferMemoryRequirements; |
686 | 0 | break; |
687 | 0 | case 0xb451de1au: |
688 | 0 | if (!strcmp(funcName, "vkGetDeviceImageMemoryRequirements")) return vkGetDeviceImageMemoryRequirements; |
689 | 0 | break; |
690 | 0 | case 0xbbff0df2u: |
691 | 0 | if (!strcmp(funcName, "vkGetDeviceImageSparseMemoryRequirements")) return vkGetDeviceImageSparseMemoryRequirements; |
692 | 0 | break; |
693 | | |
694 | | // Core 1.4 functions |
695 | 0 | case 0x84520929u: |
696 | 0 | if (!strcmp(funcName, "vkCmdSetLineStipple")) return vkCmdSetLineStipple; |
697 | 0 | break; |
698 | 0 | case 0x4d139743u: |
699 | 0 | if (!strcmp(funcName, "vkMapMemory2")) return vkMapMemory2; |
700 | 0 | break; |
701 | 0 | case 0x49c75348u: |
702 | 0 | if (!strcmp(funcName, "vkUnmapMemory2")) return vkUnmapMemory2; |
703 | 0 | break; |
704 | 0 | case 0xb5847779u: |
705 | 0 | if (!strcmp(funcName, "vkCmdBindIndexBuffer2")) return vkCmdBindIndexBuffer2; |
706 | 0 | break; |
707 | 0 | case 0x2154c31du: |
708 | 0 | if (!strcmp(funcName, "vkGetRenderingAreaGranularity")) return vkGetRenderingAreaGranularity; |
709 | 0 | break; |
710 | 0 | case 0xa108f16bu: |
711 | 0 | if (!strcmp(funcName, "vkGetDeviceImageSubresourceLayout")) return vkGetDeviceImageSubresourceLayout; |
712 | 0 | break; |
713 | 0 | case 0x49a3b45du: |
714 | 0 | if (!strcmp(funcName, "vkGetImageSubresourceLayout2")) return vkGetImageSubresourceLayout2; |
715 | 0 | break; |
716 | 0 | case 0x05d80881u: |
717 | 0 | if (!strcmp(funcName, "vkCmdPushDescriptorSet")) return vkCmdPushDescriptorSet; |
718 | 0 | break; |
719 | 0 | case 0xcb42dffbu: |
720 | 0 | if (!strcmp(funcName, "vkCmdPushDescriptorSetWithTemplate")) return vkCmdPushDescriptorSetWithTemplate; |
721 | 0 | break; |
722 | 0 | case 0x4c431a0du: |
723 | 0 | if (!strcmp(funcName, "vkCmdSetRenderingAttachmentLocations")) return vkCmdSetRenderingAttachmentLocations; |
724 | 0 | break; |
725 | 0 | case 0x9a656a9cu: |
726 | 0 | if (!strcmp(funcName, "vkCmdSetRenderingInputAttachmentIndices")) return vkCmdSetRenderingInputAttachmentIndices; |
727 | 0 | break; |
728 | 0 | case 0xf279fe61u: |
729 | 0 | if (!strcmp(funcName, "vkCmdBindDescriptorSets2")) return vkCmdBindDescriptorSets2; |
730 | 0 | break; |
731 | 0 | case 0x2422e2a7u: |
732 | 0 | if (!strcmp(funcName, "vkCmdPushConstants2")) return vkCmdPushConstants2; |
733 | 0 | break; |
734 | 0 | case 0xe615b1c9u: |
735 | 0 | if (!strcmp(funcName, "vkCmdPushDescriptorSet2")) return vkCmdPushDescriptorSet2; |
736 | 0 | break; |
737 | 0 | case 0xc346496bu: |
738 | 0 | if (!strcmp(funcName, "vkCmdPushDescriptorSetWithTemplate2")) return vkCmdPushDescriptorSetWithTemplate2; |
739 | 0 | break; |
740 | 0 | case 0x5fb583a2u: |
741 | 0 | if (!strcmp(funcName, "vkCopyMemoryToImage")) return vkCopyMemoryToImage; |
742 | 0 | break; |
743 | 0 | case 0x6e1e2502u: |
744 | 0 | if (!strcmp(funcName, "vkCopyImageToMemory")) return vkCopyImageToMemory; |
745 | 0 | break; |
746 | 0 | case 0x7118af0eu: |
747 | 0 | if (!strcmp(funcName, "vkCopyImageToImage")) return vkCopyImageToImage; |
748 | 0 | break; |
749 | 0 | case 0xe09b90fcu: |
750 | 0 | if (!strcmp(funcName, "vkTransitionImageLayout")) return vkTransitionImageLayout; |
751 | 0 | break; |
752 | 0 | default: |
753 | 0 | break; |
754 | 0 | } |
755 | | |
756 | | // Instance extensions |
757 | 0 | void *addr; |
758 | 0 | if (debug_extensions_InstanceGpa(inst, funcName, &addr)) return addr; |
759 | | |
760 | 0 | if (wsi_swapchain_instance_gpa(inst, funcName, &addr)) return addr; |
761 | | |
762 | 0 | if (extension_instance_gpa(inst, funcName, name_hash, &addr)) return addr; |
763 | | |
764 | | // Unknown physical device extensions |
765 | 0 | addr = loader_phys_dev_ext_gpa_tramp(inst, funcName); |
766 | 0 | if (NULL != addr) return addr; |
767 | | |
768 | | // Unknown device extensions |
769 | 0 | addr = loader_dev_ext_gpa_tramp(inst, funcName); |
770 | 0 | return addr; |
771 | 0 | } |
772 | | |
773 | 0 | void *globalGetProcAddr(const char *name) { |
774 | 0 | if (!name || name[0] != 'v' || name[1] != 'k') return NULL; |
775 | | |
776 | 0 | name += 2; |
777 | 0 | if (!strcmp(name, "CreateInstance")) return vkCreateInstance; |
778 | 0 | if (!strcmp(name, "EnumerateInstanceExtensionProperties")) return vkEnumerateInstanceExtensionProperties; |
779 | 0 | if (!strcmp(name, "EnumerateInstanceLayerProperties")) return vkEnumerateInstanceLayerProperties; |
780 | 0 | if (!strcmp(name, "EnumerateInstanceVersion")) return vkEnumerateInstanceVersion; |
781 | | |
782 | 0 | return NULL; |
783 | 0 | } |