Coverage Report

Created: 2025-07-11 06:48

/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
}