1 // Copyright (C) 2018 The Android Open Source Project
2 // Copyright (C) 2018 Google Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 // Autogenerated module VkEncoder
17 // (header) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18 // Please do not modify directly;
19 // re-run android/scripts/generate-vulkan-sources.sh,
20 // or directly from Python by defining:
21 // VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
23 // python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24 
25 #pragma once
26 
27 #include <vulkan/vulkan.h>
28 
29 
30 #include "goldfish_vk_private_defs.h"
31 #include <memory>
32 class IOStream;
33 
34 
35 namespace goldfish_vk {
36 
37 
38 class VkEncoder {
39 public:
40     VkEncoder(IOStream* stream);
41     ~VkEncoder();
42 
43     void flush();
44     void lock();
45     void unlock();
46 #ifdef VK_VERSION_1_0
47     VkResult vkCreateInstance(
48     const VkInstanceCreateInfo* pCreateInfo,
49         const VkAllocationCallbacks* pAllocator,
50         VkInstance* pInstance);
51     void vkDestroyInstance(
52     VkInstance instance,
53         const VkAllocationCallbacks* pAllocator);
54     VkResult vkEnumeratePhysicalDevices(
55     VkInstance instance,
56         uint32_t* pPhysicalDeviceCount,
57         VkPhysicalDevice* pPhysicalDevices);
58     void vkGetPhysicalDeviceFeatures(
59     VkPhysicalDevice physicalDevice,
60         VkPhysicalDeviceFeatures* pFeatures);
61     void vkGetPhysicalDeviceFormatProperties(
62     VkPhysicalDevice physicalDevice,
63         VkFormat format,
64         VkFormatProperties* pFormatProperties);
65     VkResult vkGetPhysicalDeviceImageFormatProperties(
66     VkPhysicalDevice physicalDevice,
67         VkFormat format,
68         VkImageType type,
69         VkImageTiling tiling,
70         VkImageUsageFlags usage,
71         VkImageCreateFlags flags,
72         VkImageFormatProperties* pImageFormatProperties);
73     void vkGetPhysicalDeviceProperties(
74     VkPhysicalDevice physicalDevice,
75         VkPhysicalDeviceProperties* pProperties);
76     void vkGetPhysicalDeviceQueueFamilyProperties(
77     VkPhysicalDevice physicalDevice,
78         uint32_t* pQueueFamilyPropertyCount,
79         VkQueueFamilyProperties* pQueueFamilyProperties);
80     void vkGetPhysicalDeviceMemoryProperties(
81     VkPhysicalDevice physicalDevice,
82         VkPhysicalDeviceMemoryProperties* pMemoryProperties);
83     PFN_vkVoidFunction vkGetInstanceProcAddr(
84     VkInstance instance,
85         const char* pName);
86     PFN_vkVoidFunction vkGetDeviceProcAddr(
87     VkDevice device,
88         const char* pName);
89     VkResult vkCreateDevice(
90     VkPhysicalDevice physicalDevice,
91         const VkDeviceCreateInfo* pCreateInfo,
92         const VkAllocationCallbacks* pAllocator,
93         VkDevice* pDevice);
94     void vkDestroyDevice(
95     VkDevice device,
96         const VkAllocationCallbacks* pAllocator);
97     VkResult vkEnumerateInstanceExtensionProperties(
98     const char* pLayerName,
99         uint32_t* pPropertyCount,
100         VkExtensionProperties* pProperties);
101     VkResult vkEnumerateDeviceExtensionProperties(
102     VkPhysicalDevice physicalDevice,
103         const char* pLayerName,
104         uint32_t* pPropertyCount,
105         VkExtensionProperties* pProperties);
106     VkResult vkEnumerateInstanceLayerProperties(
107     uint32_t* pPropertyCount,
108         VkLayerProperties* pProperties);
109     VkResult vkEnumerateDeviceLayerProperties(
110     VkPhysicalDevice physicalDevice,
111         uint32_t* pPropertyCount,
112         VkLayerProperties* pProperties);
113     void vkGetDeviceQueue(
114     VkDevice device,
115         uint32_t queueFamilyIndex,
116         uint32_t queueIndex,
117         VkQueue* pQueue);
118     VkResult vkQueueSubmit(
119     VkQueue queue,
120         uint32_t submitCount,
121         const VkSubmitInfo* pSubmits,
122         VkFence fence);
123     VkResult vkQueueWaitIdle(
124     VkQueue queue);
125     VkResult vkDeviceWaitIdle(
126     VkDevice device);
127     VkResult vkAllocateMemory(
128     VkDevice device,
129         const VkMemoryAllocateInfo* pAllocateInfo,
130         const VkAllocationCallbacks* pAllocator,
131         VkDeviceMemory* pMemory);
132     void vkFreeMemory(
133     VkDevice device,
134         VkDeviceMemory memory,
135         const VkAllocationCallbacks* pAllocator);
136     VkResult vkMapMemory(
137     VkDevice device,
138         VkDeviceMemory memory,
139         VkDeviceSize offset,
140         VkDeviceSize size,
141         VkMemoryMapFlags flags,
142         void** ppData);
143     void vkUnmapMemory(
144     VkDevice device,
145         VkDeviceMemory memory);
146     VkResult vkFlushMappedMemoryRanges(
147     VkDevice device,
148         uint32_t memoryRangeCount,
149         const VkMappedMemoryRange* pMemoryRanges);
150     VkResult vkInvalidateMappedMemoryRanges(
151     VkDevice device,
152         uint32_t memoryRangeCount,
153         const VkMappedMemoryRange* pMemoryRanges);
154     void vkGetDeviceMemoryCommitment(
155     VkDevice device,
156         VkDeviceMemory memory,
157         VkDeviceSize* pCommittedMemoryInBytes);
158     VkResult vkBindBufferMemory(
159     VkDevice device,
160         VkBuffer buffer,
161         VkDeviceMemory memory,
162         VkDeviceSize memoryOffset);
163     VkResult vkBindImageMemory(
164     VkDevice device,
165         VkImage image,
166         VkDeviceMemory memory,
167         VkDeviceSize memoryOffset);
168     void vkGetBufferMemoryRequirements(
169     VkDevice device,
170         VkBuffer buffer,
171         VkMemoryRequirements* pMemoryRequirements);
172     void vkGetImageMemoryRequirements(
173     VkDevice device,
174         VkImage image,
175         VkMemoryRequirements* pMemoryRequirements);
176     void vkGetImageSparseMemoryRequirements(
177     VkDevice device,
178         VkImage image,
179         uint32_t* pSparseMemoryRequirementCount,
180         VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
181     void vkGetPhysicalDeviceSparseImageFormatProperties(
182     VkPhysicalDevice physicalDevice,
183         VkFormat format,
184         VkImageType type,
185         VkSampleCountFlagBits samples,
186         VkImageUsageFlags usage,
187         VkImageTiling tiling,
188         uint32_t* pPropertyCount,
189         VkSparseImageFormatProperties* pProperties);
190     VkResult vkQueueBindSparse(
191     VkQueue queue,
192         uint32_t bindInfoCount,
193         const VkBindSparseInfo* pBindInfo,
194         VkFence fence);
195     VkResult vkCreateFence(
196     VkDevice device,
197         const VkFenceCreateInfo* pCreateInfo,
198         const VkAllocationCallbacks* pAllocator,
199         VkFence* pFence);
200     void vkDestroyFence(
201     VkDevice device,
202         VkFence fence,
203         const VkAllocationCallbacks* pAllocator);
204     VkResult vkResetFences(
205     VkDevice device,
206         uint32_t fenceCount,
207         const VkFence* pFences);
208     VkResult vkGetFenceStatus(
209     VkDevice device,
210         VkFence fence);
211     VkResult vkWaitForFences(
212     VkDevice device,
213         uint32_t fenceCount,
214         const VkFence* pFences,
215         VkBool32 waitAll,
216         uint64_t timeout);
217     VkResult vkCreateSemaphore(
218     VkDevice device,
219         const VkSemaphoreCreateInfo* pCreateInfo,
220         const VkAllocationCallbacks* pAllocator,
221         VkSemaphore* pSemaphore);
222     void vkDestroySemaphore(
223     VkDevice device,
224         VkSemaphore semaphore,
225         const VkAllocationCallbacks* pAllocator);
226     VkResult vkCreateEvent(
227     VkDevice device,
228         const VkEventCreateInfo* pCreateInfo,
229         const VkAllocationCallbacks* pAllocator,
230         VkEvent* pEvent);
231     void vkDestroyEvent(
232     VkDevice device,
233         VkEvent event,
234         const VkAllocationCallbacks* pAllocator);
235     VkResult vkGetEventStatus(
236     VkDevice device,
237         VkEvent event);
238     VkResult vkSetEvent(
239     VkDevice device,
240         VkEvent event);
241     VkResult vkResetEvent(
242     VkDevice device,
243         VkEvent event);
244     VkResult vkCreateQueryPool(
245     VkDevice device,
246         const VkQueryPoolCreateInfo* pCreateInfo,
247         const VkAllocationCallbacks* pAllocator,
248         VkQueryPool* pQueryPool);
249     void vkDestroyQueryPool(
250     VkDevice device,
251         VkQueryPool queryPool,
252         const VkAllocationCallbacks* pAllocator);
253     VkResult vkGetQueryPoolResults(
254     VkDevice device,
255         VkQueryPool queryPool,
256         uint32_t firstQuery,
257         uint32_t queryCount,
258         size_t dataSize,
259         void* pData,
260         VkDeviceSize stride,
261         VkQueryResultFlags flags);
262     VkResult vkCreateBuffer(
263     VkDevice device,
264         const VkBufferCreateInfo* pCreateInfo,
265         const VkAllocationCallbacks* pAllocator,
266         VkBuffer* pBuffer);
267     void vkDestroyBuffer(
268     VkDevice device,
269         VkBuffer buffer,
270         const VkAllocationCallbacks* pAllocator);
271     VkResult vkCreateBufferView(
272     VkDevice device,
273         const VkBufferViewCreateInfo* pCreateInfo,
274         const VkAllocationCallbacks* pAllocator,
275         VkBufferView* pView);
276     void vkDestroyBufferView(
277     VkDevice device,
278         VkBufferView bufferView,
279         const VkAllocationCallbacks* pAllocator);
280     VkResult vkCreateImage(
281     VkDevice device,
282         const VkImageCreateInfo* pCreateInfo,
283         const VkAllocationCallbacks* pAllocator,
284         VkImage* pImage);
285     void vkDestroyImage(
286     VkDevice device,
287         VkImage image,
288         const VkAllocationCallbacks* pAllocator);
289     void vkGetImageSubresourceLayout(
290     VkDevice device,
291         VkImage image,
292         const VkImageSubresource* pSubresource,
293         VkSubresourceLayout* pLayout);
294     VkResult vkCreateImageView(
295     VkDevice device,
296         const VkImageViewCreateInfo* pCreateInfo,
297         const VkAllocationCallbacks* pAllocator,
298         VkImageView* pView);
299     void vkDestroyImageView(
300     VkDevice device,
301         VkImageView imageView,
302         const VkAllocationCallbacks* pAllocator);
303     VkResult vkCreateShaderModule(
304     VkDevice device,
305         const VkShaderModuleCreateInfo* pCreateInfo,
306         const VkAllocationCallbacks* pAllocator,
307         VkShaderModule* pShaderModule);
308     void vkDestroyShaderModule(
309     VkDevice device,
310         VkShaderModule shaderModule,
311         const VkAllocationCallbacks* pAllocator);
312     VkResult vkCreatePipelineCache(
313     VkDevice device,
314         const VkPipelineCacheCreateInfo* pCreateInfo,
315         const VkAllocationCallbacks* pAllocator,
316         VkPipelineCache* pPipelineCache);
317     void vkDestroyPipelineCache(
318     VkDevice device,
319         VkPipelineCache pipelineCache,
320         const VkAllocationCallbacks* pAllocator);
321     VkResult vkGetPipelineCacheData(
322     VkDevice device,
323         VkPipelineCache pipelineCache,
324         size_t* pDataSize,
325         void* pData);
326     VkResult vkMergePipelineCaches(
327     VkDevice device,
328         VkPipelineCache dstCache,
329         uint32_t srcCacheCount,
330         const VkPipelineCache* pSrcCaches);
331     VkResult vkCreateGraphicsPipelines(
332     VkDevice device,
333         VkPipelineCache pipelineCache,
334         uint32_t createInfoCount,
335         const VkGraphicsPipelineCreateInfo* pCreateInfos,
336         const VkAllocationCallbacks* pAllocator,
337         VkPipeline* pPipelines);
338     VkResult vkCreateComputePipelines(
339     VkDevice device,
340         VkPipelineCache pipelineCache,
341         uint32_t createInfoCount,
342         const VkComputePipelineCreateInfo* pCreateInfos,
343         const VkAllocationCallbacks* pAllocator,
344         VkPipeline* pPipelines);
345     void vkDestroyPipeline(
346     VkDevice device,
347         VkPipeline pipeline,
348         const VkAllocationCallbacks* pAllocator);
349     VkResult vkCreatePipelineLayout(
350     VkDevice device,
351         const VkPipelineLayoutCreateInfo* pCreateInfo,
352         const VkAllocationCallbacks* pAllocator,
353         VkPipelineLayout* pPipelineLayout);
354     void vkDestroyPipelineLayout(
355     VkDevice device,
356         VkPipelineLayout pipelineLayout,
357         const VkAllocationCallbacks* pAllocator);
358     VkResult vkCreateSampler(
359     VkDevice device,
360         const VkSamplerCreateInfo* pCreateInfo,
361         const VkAllocationCallbacks* pAllocator,
362         VkSampler* pSampler);
363     void vkDestroySampler(
364     VkDevice device,
365         VkSampler sampler,
366         const VkAllocationCallbacks* pAllocator);
367     VkResult vkCreateDescriptorSetLayout(
368     VkDevice device,
369         const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
370         const VkAllocationCallbacks* pAllocator,
371         VkDescriptorSetLayout* pSetLayout);
372     void vkDestroyDescriptorSetLayout(
373     VkDevice device,
374         VkDescriptorSetLayout descriptorSetLayout,
375         const VkAllocationCallbacks* pAllocator);
376     VkResult vkCreateDescriptorPool(
377     VkDevice device,
378         const VkDescriptorPoolCreateInfo* pCreateInfo,
379         const VkAllocationCallbacks* pAllocator,
380         VkDescriptorPool* pDescriptorPool);
381     void vkDestroyDescriptorPool(
382     VkDevice device,
383         VkDescriptorPool descriptorPool,
384         const VkAllocationCallbacks* pAllocator);
385     VkResult vkResetDescriptorPool(
386     VkDevice device,
387         VkDescriptorPool descriptorPool,
388         VkDescriptorPoolResetFlags flags);
389     VkResult vkAllocateDescriptorSets(
390     VkDevice device,
391         const VkDescriptorSetAllocateInfo* pAllocateInfo,
392         VkDescriptorSet* pDescriptorSets);
393     VkResult vkFreeDescriptorSets(
394     VkDevice device,
395         VkDescriptorPool descriptorPool,
396         uint32_t descriptorSetCount,
397         const VkDescriptorSet* pDescriptorSets);
398     void vkUpdateDescriptorSets(
399     VkDevice device,
400         uint32_t descriptorWriteCount,
401         const VkWriteDescriptorSet* pDescriptorWrites,
402         uint32_t descriptorCopyCount,
403         const VkCopyDescriptorSet* pDescriptorCopies);
404     VkResult vkCreateFramebuffer(
405     VkDevice device,
406         const VkFramebufferCreateInfo* pCreateInfo,
407         const VkAllocationCallbacks* pAllocator,
408         VkFramebuffer* pFramebuffer);
409     void vkDestroyFramebuffer(
410     VkDevice device,
411         VkFramebuffer framebuffer,
412         const VkAllocationCallbacks* pAllocator);
413     VkResult vkCreateRenderPass(
414     VkDevice device,
415         const VkRenderPassCreateInfo* pCreateInfo,
416         const VkAllocationCallbacks* pAllocator,
417         VkRenderPass* pRenderPass);
418     void vkDestroyRenderPass(
419     VkDevice device,
420         VkRenderPass renderPass,
421         const VkAllocationCallbacks* pAllocator);
422     void vkGetRenderAreaGranularity(
423     VkDevice device,
424         VkRenderPass renderPass,
425         VkExtent2D* pGranularity);
426     VkResult vkCreateCommandPool(
427     VkDevice device,
428         const VkCommandPoolCreateInfo* pCreateInfo,
429         const VkAllocationCallbacks* pAllocator,
430         VkCommandPool* pCommandPool);
431     void vkDestroyCommandPool(
432     VkDevice device,
433         VkCommandPool commandPool,
434         const VkAllocationCallbacks* pAllocator);
435     VkResult vkResetCommandPool(
436     VkDevice device,
437         VkCommandPool commandPool,
438         VkCommandPoolResetFlags flags);
439     VkResult vkAllocateCommandBuffers(
440     VkDevice device,
441         const VkCommandBufferAllocateInfo* pAllocateInfo,
442         VkCommandBuffer* pCommandBuffers);
443     void vkFreeCommandBuffers(
444     VkDevice device,
445         VkCommandPool commandPool,
446         uint32_t commandBufferCount,
447         const VkCommandBuffer* pCommandBuffers);
448     VkResult vkBeginCommandBuffer(
449     VkCommandBuffer commandBuffer,
450         const VkCommandBufferBeginInfo* pBeginInfo);
451     VkResult vkEndCommandBuffer(
452     VkCommandBuffer commandBuffer);
453     VkResult vkResetCommandBuffer(
454     VkCommandBuffer commandBuffer,
455         VkCommandBufferResetFlags flags);
456     void vkCmdBindPipeline(
457     VkCommandBuffer commandBuffer,
458         VkPipelineBindPoint pipelineBindPoint,
459         VkPipeline pipeline);
460     void vkCmdSetViewport(
461     VkCommandBuffer commandBuffer,
462         uint32_t firstViewport,
463         uint32_t viewportCount,
464         const VkViewport* pViewports);
465     void vkCmdSetScissor(
466     VkCommandBuffer commandBuffer,
467         uint32_t firstScissor,
468         uint32_t scissorCount,
469         const VkRect2D* pScissors);
470     void vkCmdSetLineWidth(
471     VkCommandBuffer commandBuffer,
472         float lineWidth);
473     void vkCmdSetDepthBias(
474     VkCommandBuffer commandBuffer,
475         float depthBiasConstantFactor,
476         float depthBiasClamp,
477         float depthBiasSlopeFactor);
478     void vkCmdSetBlendConstants(
479     VkCommandBuffer commandBuffer,
480         const float blendConstants[4]);
481     void vkCmdSetDepthBounds(
482     VkCommandBuffer commandBuffer,
483         float minDepthBounds,
484         float maxDepthBounds);
485     void vkCmdSetStencilCompareMask(
486     VkCommandBuffer commandBuffer,
487         VkStencilFaceFlags faceMask,
488         uint32_t compareMask);
489     void vkCmdSetStencilWriteMask(
490     VkCommandBuffer commandBuffer,
491         VkStencilFaceFlags faceMask,
492         uint32_t writeMask);
493     void vkCmdSetStencilReference(
494     VkCommandBuffer commandBuffer,
495         VkStencilFaceFlags faceMask,
496         uint32_t reference);
497     void vkCmdBindDescriptorSets(
498     VkCommandBuffer commandBuffer,
499         VkPipelineBindPoint pipelineBindPoint,
500         VkPipelineLayout layout,
501         uint32_t firstSet,
502         uint32_t descriptorSetCount,
503         const VkDescriptorSet* pDescriptorSets,
504         uint32_t dynamicOffsetCount,
505         const uint32_t* pDynamicOffsets);
506     void vkCmdBindIndexBuffer(
507     VkCommandBuffer commandBuffer,
508         VkBuffer buffer,
509         VkDeviceSize offset,
510         VkIndexType indexType);
511     void vkCmdBindVertexBuffers(
512     VkCommandBuffer commandBuffer,
513         uint32_t firstBinding,
514         uint32_t bindingCount,
515         const VkBuffer* pBuffers,
516         const VkDeviceSize* pOffsets);
517     void vkCmdDraw(
518     VkCommandBuffer commandBuffer,
519         uint32_t vertexCount,
520         uint32_t instanceCount,
521         uint32_t firstVertex,
522         uint32_t firstInstance);
523     void vkCmdDrawIndexed(
524     VkCommandBuffer commandBuffer,
525         uint32_t indexCount,
526         uint32_t instanceCount,
527         uint32_t firstIndex,
528         int32_t vertexOffset,
529         uint32_t firstInstance);
530     void vkCmdDrawIndirect(
531     VkCommandBuffer commandBuffer,
532         VkBuffer buffer,
533         VkDeviceSize offset,
534         uint32_t drawCount,
535         uint32_t stride);
536     void vkCmdDrawIndexedIndirect(
537     VkCommandBuffer commandBuffer,
538         VkBuffer buffer,
539         VkDeviceSize offset,
540         uint32_t drawCount,
541         uint32_t stride);
542     void vkCmdDispatch(
543     VkCommandBuffer commandBuffer,
544         uint32_t groupCountX,
545         uint32_t groupCountY,
546         uint32_t groupCountZ);
547     void vkCmdDispatchIndirect(
548     VkCommandBuffer commandBuffer,
549         VkBuffer buffer,
550         VkDeviceSize offset);
551     void vkCmdCopyBuffer(
552     VkCommandBuffer commandBuffer,
553         VkBuffer srcBuffer,
554         VkBuffer dstBuffer,
555         uint32_t regionCount,
556         const VkBufferCopy* pRegions);
557     void vkCmdCopyImage(
558     VkCommandBuffer commandBuffer,
559         VkImage srcImage,
560         VkImageLayout srcImageLayout,
561         VkImage dstImage,
562         VkImageLayout dstImageLayout,
563         uint32_t regionCount,
564         const VkImageCopy* pRegions);
565     void vkCmdBlitImage(
566     VkCommandBuffer commandBuffer,
567         VkImage srcImage,
568         VkImageLayout srcImageLayout,
569         VkImage dstImage,
570         VkImageLayout dstImageLayout,
571         uint32_t regionCount,
572         const VkImageBlit* pRegions,
573         VkFilter filter);
574     void vkCmdCopyBufferToImage(
575     VkCommandBuffer commandBuffer,
576         VkBuffer srcBuffer,
577         VkImage dstImage,
578         VkImageLayout dstImageLayout,
579         uint32_t regionCount,
580         const VkBufferImageCopy* pRegions);
581     void vkCmdCopyImageToBuffer(
582     VkCommandBuffer commandBuffer,
583         VkImage srcImage,
584         VkImageLayout srcImageLayout,
585         VkBuffer dstBuffer,
586         uint32_t regionCount,
587         const VkBufferImageCopy* pRegions);
588     void vkCmdUpdateBuffer(
589     VkCommandBuffer commandBuffer,
590         VkBuffer dstBuffer,
591         VkDeviceSize dstOffset,
592         VkDeviceSize dataSize,
593         const void* pData);
594     void vkCmdFillBuffer(
595     VkCommandBuffer commandBuffer,
596         VkBuffer dstBuffer,
597         VkDeviceSize dstOffset,
598         VkDeviceSize size,
599         uint32_t data);
600     void vkCmdClearColorImage(
601     VkCommandBuffer commandBuffer,
602         VkImage image,
603         VkImageLayout imageLayout,
604         const VkClearColorValue* pColor,
605         uint32_t rangeCount,
606         const VkImageSubresourceRange* pRanges);
607     void vkCmdClearDepthStencilImage(
608     VkCommandBuffer commandBuffer,
609         VkImage image,
610         VkImageLayout imageLayout,
611         const VkClearDepthStencilValue* pDepthStencil,
612         uint32_t rangeCount,
613         const VkImageSubresourceRange* pRanges);
614     void vkCmdClearAttachments(
615     VkCommandBuffer commandBuffer,
616         uint32_t attachmentCount,
617         const VkClearAttachment* pAttachments,
618         uint32_t rectCount,
619         const VkClearRect* pRects);
620     void vkCmdResolveImage(
621     VkCommandBuffer commandBuffer,
622         VkImage srcImage,
623         VkImageLayout srcImageLayout,
624         VkImage dstImage,
625         VkImageLayout dstImageLayout,
626         uint32_t regionCount,
627         const VkImageResolve* pRegions);
628     void vkCmdSetEvent(
629     VkCommandBuffer commandBuffer,
630         VkEvent event,
631         VkPipelineStageFlags stageMask);
632     void vkCmdResetEvent(
633     VkCommandBuffer commandBuffer,
634         VkEvent event,
635         VkPipelineStageFlags stageMask);
636     void vkCmdWaitEvents(
637     VkCommandBuffer commandBuffer,
638         uint32_t eventCount,
639         const VkEvent* pEvents,
640         VkPipelineStageFlags srcStageMask,
641         VkPipelineStageFlags dstStageMask,
642         uint32_t memoryBarrierCount,
643         const VkMemoryBarrier* pMemoryBarriers,
644         uint32_t bufferMemoryBarrierCount,
645         const VkBufferMemoryBarrier* pBufferMemoryBarriers,
646         uint32_t imageMemoryBarrierCount,
647         const VkImageMemoryBarrier* pImageMemoryBarriers);
648     void vkCmdPipelineBarrier(
649     VkCommandBuffer commandBuffer,
650         VkPipelineStageFlags srcStageMask,
651         VkPipelineStageFlags dstStageMask,
652         VkDependencyFlags dependencyFlags,
653         uint32_t memoryBarrierCount,
654         const VkMemoryBarrier* pMemoryBarriers,
655         uint32_t bufferMemoryBarrierCount,
656         const VkBufferMemoryBarrier* pBufferMemoryBarriers,
657         uint32_t imageMemoryBarrierCount,
658         const VkImageMemoryBarrier* pImageMemoryBarriers);
659     void vkCmdBeginQuery(
660     VkCommandBuffer commandBuffer,
661         VkQueryPool queryPool,
662         uint32_t query,
663         VkQueryControlFlags flags);
664     void vkCmdEndQuery(
665     VkCommandBuffer commandBuffer,
666         VkQueryPool queryPool,
667         uint32_t query);
668     void vkCmdResetQueryPool(
669     VkCommandBuffer commandBuffer,
670         VkQueryPool queryPool,
671         uint32_t firstQuery,
672         uint32_t queryCount);
673     void vkCmdWriteTimestamp(
674     VkCommandBuffer commandBuffer,
675         VkPipelineStageFlagBits pipelineStage,
676         VkQueryPool queryPool,
677         uint32_t query);
678     void vkCmdCopyQueryPoolResults(
679     VkCommandBuffer commandBuffer,
680         VkQueryPool queryPool,
681         uint32_t firstQuery,
682         uint32_t queryCount,
683         VkBuffer dstBuffer,
684         VkDeviceSize dstOffset,
685         VkDeviceSize stride,
686         VkQueryResultFlags flags);
687     void vkCmdPushConstants(
688     VkCommandBuffer commandBuffer,
689         VkPipelineLayout layout,
690         VkShaderStageFlags stageFlags,
691         uint32_t offset,
692         uint32_t size,
693         const void* pValues);
694     void vkCmdBeginRenderPass(
695     VkCommandBuffer commandBuffer,
696         const VkRenderPassBeginInfo* pRenderPassBegin,
697         VkSubpassContents contents);
698     void vkCmdNextSubpass(
699     VkCommandBuffer commandBuffer,
700         VkSubpassContents contents);
701     void vkCmdEndRenderPass(
702     VkCommandBuffer commandBuffer);
703     void vkCmdExecuteCommands(
704     VkCommandBuffer commandBuffer,
705         uint32_t commandBufferCount,
706         const VkCommandBuffer* pCommandBuffers);
707 #endif
708 #ifdef VK_VERSION_1_1
709     VkResult vkEnumerateInstanceVersion(
710     uint32_t* pApiVersion);
711     VkResult vkBindBufferMemory2(
712     VkDevice device,
713         uint32_t bindInfoCount,
714         const VkBindBufferMemoryInfo* pBindInfos);
715     VkResult vkBindImageMemory2(
716     VkDevice device,
717         uint32_t bindInfoCount,
718         const VkBindImageMemoryInfo* pBindInfos);
719     void vkGetDeviceGroupPeerMemoryFeatures(
720     VkDevice device,
721         uint32_t heapIndex,
722         uint32_t localDeviceIndex,
723         uint32_t remoteDeviceIndex,
724         VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
725     void vkCmdSetDeviceMask(
726     VkCommandBuffer commandBuffer,
727         uint32_t deviceMask);
728     void vkCmdDispatchBase(
729     VkCommandBuffer commandBuffer,
730         uint32_t baseGroupX,
731         uint32_t baseGroupY,
732         uint32_t baseGroupZ,
733         uint32_t groupCountX,
734         uint32_t groupCountY,
735         uint32_t groupCountZ);
736     VkResult vkEnumeratePhysicalDeviceGroups(
737     VkInstance instance,
738         uint32_t* pPhysicalDeviceGroupCount,
739         VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
740     void vkGetImageMemoryRequirements2(
741     VkDevice device,
742         const VkImageMemoryRequirementsInfo2* pInfo,
743         VkMemoryRequirements2* pMemoryRequirements);
744     void vkGetBufferMemoryRequirements2(
745     VkDevice device,
746         const VkBufferMemoryRequirementsInfo2* pInfo,
747         VkMemoryRequirements2* pMemoryRequirements);
748     void vkGetImageSparseMemoryRequirements2(
749     VkDevice device,
750         const VkImageSparseMemoryRequirementsInfo2* pInfo,
751         uint32_t* pSparseMemoryRequirementCount,
752         VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
753     void vkGetPhysicalDeviceFeatures2(
754     VkPhysicalDevice physicalDevice,
755         VkPhysicalDeviceFeatures2* pFeatures);
756     void vkGetPhysicalDeviceProperties2(
757     VkPhysicalDevice physicalDevice,
758         VkPhysicalDeviceProperties2* pProperties);
759     void vkGetPhysicalDeviceFormatProperties2(
760     VkPhysicalDevice physicalDevice,
761         VkFormat format,
762         VkFormatProperties2* pFormatProperties);
763     VkResult vkGetPhysicalDeviceImageFormatProperties2(
764     VkPhysicalDevice physicalDevice,
765         const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
766         VkImageFormatProperties2* pImageFormatProperties);
767     void vkGetPhysicalDeviceQueueFamilyProperties2(
768     VkPhysicalDevice physicalDevice,
769         uint32_t* pQueueFamilyPropertyCount,
770         VkQueueFamilyProperties2* pQueueFamilyProperties);
771     void vkGetPhysicalDeviceMemoryProperties2(
772     VkPhysicalDevice physicalDevice,
773         VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
774     void vkGetPhysicalDeviceSparseImageFormatProperties2(
775     VkPhysicalDevice physicalDevice,
776         const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
777         uint32_t* pPropertyCount,
778         VkSparseImageFormatProperties2* pProperties);
779     void vkTrimCommandPool(
780     VkDevice device,
781         VkCommandPool commandPool,
782         VkCommandPoolTrimFlags flags);
783     void vkGetDeviceQueue2(
784     VkDevice device,
785         const VkDeviceQueueInfo2* pQueueInfo,
786         VkQueue* pQueue);
787     VkResult vkCreateSamplerYcbcrConversion(
788     VkDevice device,
789         const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
790         const VkAllocationCallbacks* pAllocator,
791         VkSamplerYcbcrConversion* pYcbcrConversion);
792     void vkDestroySamplerYcbcrConversion(
793     VkDevice device,
794         VkSamplerYcbcrConversion ycbcrConversion,
795         const VkAllocationCallbacks* pAllocator);
796     VkResult vkCreateDescriptorUpdateTemplate(
797     VkDevice device,
798         const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
799         const VkAllocationCallbacks* pAllocator,
800         VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
801     void vkDestroyDescriptorUpdateTemplate(
802     VkDevice device,
803         VkDescriptorUpdateTemplate descriptorUpdateTemplate,
804         const VkAllocationCallbacks* pAllocator);
805     void vkUpdateDescriptorSetWithTemplate(
806     VkDevice device,
807         VkDescriptorSet descriptorSet,
808         VkDescriptorUpdateTemplate descriptorUpdateTemplate,
809         const void* pData);
810     void vkGetPhysicalDeviceExternalBufferProperties(
811     VkPhysicalDevice physicalDevice,
812         const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
813         VkExternalBufferProperties* pExternalBufferProperties);
814     void vkGetPhysicalDeviceExternalFenceProperties(
815     VkPhysicalDevice physicalDevice,
816         const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
817         VkExternalFenceProperties* pExternalFenceProperties);
818     void vkGetPhysicalDeviceExternalSemaphoreProperties(
819     VkPhysicalDevice physicalDevice,
820         const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
821         VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
822     void vkGetDescriptorSetLayoutSupport(
823     VkDevice device,
824         const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
825         VkDescriptorSetLayoutSupport* pSupport);
826 #endif
827 #ifdef VK_KHR_surface
828     void vkDestroySurfaceKHR(
829     VkInstance instance,
830         VkSurfaceKHR surface,
831         const VkAllocationCallbacks* pAllocator);
832     VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
833     VkPhysicalDevice physicalDevice,
834         uint32_t queueFamilyIndex,
835         VkSurfaceKHR surface,
836         VkBool32* pSupported);
837     VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
838     VkPhysicalDevice physicalDevice,
839         VkSurfaceKHR surface,
840         VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
841     VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
842     VkPhysicalDevice physicalDevice,
843         VkSurfaceKHR surface,
844         uint32_t* pSurfaceFormatCount,
845         VkSurfaceFormatKHR* pSurfaceFormats);
846     VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
847     VkPhysicalDevice physicalDevice,
848         VkSurfaceKHR surface,
849         uint32_t* pPresentModeCount,
850         VkPresentModeKHR* pPresentModes);
851 #endif
852 #ifdef VK_KHR_swapchain
853     VkResult vkCreateSwapchainKHR(
854     VkDevice device,
855         const VkSwapchainCreateInfoKHR* pCreateInfo,
856         const VkAllocationCallbacks* pAllocator,
857         VkSwapchainKHR* pSwapchain);
858     void vkDestroySwapchainKHR(
859     VkDevice device,
860         VkSwapchainKHR swapchain,
861         const VkAllocationCallbacks* pAllocator);
862     VkResult vkGetSwapchainImagesKHR(
863     VkDevice device,
864         VkSwapchainKHR swapchain,
865         uint32_t* pSwapchainImageCount,
866         VkImage* pSwapchainImages);
867     VkResult vkAcquireNextImageKHR(
868     VkDevice device,
869         VkSwapchainKHR swapchain,
870         uint64_t timeout,
871         VkSemaphore semaphore,
872         VkFence fence,
873         uint32_t* pImageIndex);
874     VkResult vkQueuePresentKHR(
875     VkQueue queue,
876         const VkPresentInfoKHR* pPresentInfo);
877     VkResult vkGetDeviceGroupPresentCapabilitiesKHR(
878     VkDevice device,
879         VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
880     VkResult vkGetDeviceGroupSurfacePresentModesKHR(
881     VkDevice device,
882         VkSurfaceKHR surface,
883         VkDeviceGroupPresentModeFlagsKHR* pModes);
884     VkResult vkGetPhysicalDevicePresentRectanglesKHR(
885     VkPhysicalDevice physicalDevice,
886         VkSurfaceKHR surface,
887         uint32_t* pRectCount,
888         VkRect2D* pRects);
889     VkResult vkAcquireNextImage2KHR(
890     VkDevice device,
891         const VkAcquireNextImageInfoKHR* pAcquireInfo,
892         uint32_t* pImageIndex);
893 #endif
894 #ifdef VK_KHR_display
895     VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
896     VkPhysicalDevice physicalDevice,
897         uint32_t* pPropertyCount,
898         VkDisplayPropertiesKHR* pProperties);
899     VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
900     VkPhysicalDevice physicalDevice,
901         uint32_t* pPropertyCount,
902         VkDisplayPlanePropertiesKHR* pProperties);
903     VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
904     VkPhysicalDevice physicalDevice,
905         uint32_t planeIndex,
906         uint32_t* pDisplayCount,
907         VkDisplayKHR* pDisplays);
908     VkResult vkGetDisplayModePropertiesKHR(
909     VkPhysicalDevice physicalDevice,
910         VkDisplayKHR display,
911         uint32_t* pPropertyCount,
912         VkDisplayModePropertiesKHR* pProperties);
913     VkResult vkCreateDisplayModeKHR(
914     VkPhysicalDevice physicalDevice,
915         VkDisplayKHR display,
916         const VkDisplayModeCreateInfoKHR* pCreateInfo,
917         const VkAllocationCallbacks* pAllocator,
918         VkDisplayModeKHR* pMode);
919     VkResult vkGetDisplayPlaneCapabilitiesKHR(
920     VkPhysicalDevice physicalDevice,
921         VkDisplayModeKHR mode,
922         uint32_t planeIndex,
923         VkDisplayPlaneCapabilitiesKHR* pCapabilities);
924     VkResult vkCreateDisplayPlaneSurfaceKHR(
925     VkInstance instance,
926         const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
927         const VkAllocationCallbacks* pAllocator,
928         VkSurfaceKHR* pSurface);
929 #endif
930 #ifdef VK_KHR_display_swapchain
931     VkResult vkCreateSharedSwapchainsKHR(
932     VkDevice device,
933         uint32_t swapchainCount,
934         const VkSwapchainCreateInfoKHR* pCreateInfos,
935         const VkAllocationCallbacks* pAllocator,
936         VkSwapchainKHR* pSwapchains);
937 #endif
938 #ifdef VK_KHR_xlib_surface
939     VkResult vkCreateXlibSurfaceKHR(
940     VkInstance instance,
941         const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
942         const VkAllocationCallbacks* pAllocator,
943         VkSurfaceKHR* pSurface);
944     VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
945     VkPhysicalDevice physicalDevice,
946         uint32_t queueFamilyIndex,
947         Display* dpy,
948         VisualID visualID);
949 #endif
950 #ifdef VK_KHR_xcb_surface
951     VkResult vkCreateXcbSurfaceKHR(
952     VkInstance instance,
953         const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
954         const VkAllocationCallbacks* pAllocator,
955         VkSurfaceKHR* pSurface);
956     VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
957     VkPhysicalDevice physicalDevice,
958         uint32_t queueFamilyIndex,
959         xcb_connection_t* connection,
960         xcb_visualid_t visual_id);
961 #endif
962 #ifdef VK_KHR_wayland_surface
963     VkResult vkCreateWaylandSurfaceKHR(
964     VkInstance instance,
965         const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
966         const VkAllocationCallbacks* pAllocator,
967         VkSurfaceKHR* pSurface);
968     VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
969     VkPhysicalDevice physicalDevice,
970         uint32_t queueFamilyIndex,
971         wl_display* display);
972 #endif
973 #ifdef VK_KHR_mir_surface
974     VkResult vkCreateMirSurfaceKHR(
975     VkInstance instance,
976         const VkMirSurfaceCreateInfoKHR* pCreateInfo,
977         const VkAllocationCallbacks* pAllocator,
978         VkSurfaceKHR* pSurface);
979     VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
980     VkPhysicalDevice physicalDevice,
981         uint32_t queueFamilyIndex,
982         MirConnection* connection);
983 #endif
984 #ifdef VK_KHR_android_surface
985     VkResult vkCreateAndroidSurfaceKHR(
986     VkInstance instance,
987         const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
988         const VkAllocationCallbacks* pAllocator,
989         VkSurfaceKHR* pSurface);
990 #endif
991 #ifdef VK_KHR_win32_surface
992     VkResult vkCreateWin32SurfaceKHR(
993     VkInstance instance,
994         const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
995         const VkAllocationCallbacks* pAllocator,
996         VkSurfaceKHR* pSurface);
997     VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR(
998     VkPhysicalDevice physicalDevice,
999         uint32_t queueFamilyIndex);
1000 #endif
1001 #ifdef VK_KHR_sampler_mirror_clamp_to_edge
1002 #endif
1003 #ifdef VK_KHR_multiview
1004 #endif
1005 #ifdef VK_KHR_get_physical_device_properties2
1006     void vkGetPhysicalDeviceFeatures2KHR(
1007     VkPhysicalDevice physicalDevice,
1008         VkPhysicalDeviceFeatures2* pFeatures);
1009     void vkGetPhysicalDeviceProperties2KHR(
1010     VkPhysicalDevice physicalDevice,
1011         VkPhysicalDeviceProperties2* pProperties);
1012     void vkGetPhysicalDeviceFormatProperties2KHR(
1013     VkPhysicalDevice physicalDevice,
1014         VkFormat format,
1015         VkFormatProperties2* pFormatProperties);
1016     VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
1017     VkPhysicalDevice physicalDevice,
1018         const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1019         VkImageFormatProperties2* pImageFormatProperties);
1020     void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
1021     VkPhysicalDevice physicalDevice,
1022         uint32_t* pQueueFamilyPropertyCount,
1023         VkQueueFamilyProperties2* pQueueFamilyProperties);
1024     void vkGetPhysicalDeviceMemoryProperties2KHR(
1025     VkPhysicalDevice physicalDevice,
1026         VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
1027     void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
1028     VkPhysicalDevice physicalDevice,
1029         const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1030         uint32_t* pPropertyCount,
1031         VkSparseImageFormatProperties2* pProperties);
1032 #endif
1033 #ifdef VK_KHR_device_group
1034     void vkGetDeviceGroupPeerMemoryFeaturesKHR(
1035     VkDevice device,
1036         uint32_t heapIndex,
1037         uint32_t localDeviceIndex,
1038         uint32_t remoteDeviceIndex,
1039         VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
1040     void vkCmdSetDeviceMaskKHR(
1041     VkCommandBuffer commandBuffer,
1042         uint32_t deviceMask);
1043     void vkCmdDispatchBaseKHR(
1044     VkCommandBuffer commandBuffer,
1045         uint32_t baseGroupX,
1046         uint32_t baseGroupY,
1047         uint32_t baseGroupZ,
1048         uint32_t groupCountX,
1049         uint32_t groupCountY,
1050         uint32_t groupCountZ);
1051 #endif
1052 #ifdef VK_KHR_shader_draw_parameters
1053 #endif
1054 #ifdef VK_KHR_maintenance1
1055     void vkTrimCommandPoolKHR(
1056     VkDevice device,
1057         VkCommandPool commandPool,
1058         VkCommandPoolTrimFlags flags);
1059 #endif
1060 #ifdef VK_KHR_device_group_creation
1061     VkResult vkEnumeratePhysicalDeviceGroupsKHR(
1062     VkInstance instance,
1063         uint32_t* pPhysicalDeviceGroupCount,
1064         VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
1065 #endif
1066 #ifdef VK_KHR_external_memory_capabilities
1067     void vkGetPhysicalDeviceExternalBufferPropertiesKHR(
1068     VkPhysicalDevice physicalDevice,
1069         const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
1070         VkExternalBufferProperties* pExternalBufferProperties);
1071 #endif
1072 #ifdef VK_KHR_external_memory
1073 #endif
1074 #ifdef VK_KHR_external_memory_win32
1075     VkResult vkGetMemoryWin32HandleKHR(
1076     VkDevice device,
1077         const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
1078         HANDLE* pHandle);
1079     VkResult vkGetMemoryWin32HandlePropertiesKHR(
1080     VkDevice device,
1081         VkExternalMemoryHandleTypeFlagBits handleType,
1082         HANDLE handle,
1083         VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
1084 #endif
1085 #ifdef VK_KHR_external_memory_fd
1086     VkResult vkGetMemoryFdKHR(
1087     VkDevice device,
1088         const VkMemoryGetFdInfoKHR* pGetFdInfo,
1089         int* pFd);
1090     VkResult vkGetMemoryFdPropertiesKHR(
1091     VkDevice device,
1092         VkExternalMemoryHandleTypeFlagBits handleType,
1093         int fd,
1094         VkMemoryFdPropertiesKHR* pMemoryFdProperties);
1095 #endif
1096 #ifdef VK_KHR_win32_keyed_mutex
1097 #endif
1098 #ifdef VK_KHR_external_semaphore_capabilities
1099     void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
1100     VkPhysicalDevice physicalDevice,
1101         const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
1102         VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
1103 #endif
1104 #ifdef VK_KHR_external_semaphore
1105 #endif
1106 #ifdef VK_KHR_external_semaphore_win32
1107     VkResult vkImportSemaphoreWin32HandleKHR(
1108     VkDevice device,
1109         const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
1110     VkResult vkGetSemaphoreWin32HandleKHR(
1111     VkDevice device,
1112         const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
1113         HANDLE* pHandle);
1114 #endif
1115 #ifdef VK_KHR_external_semaphore_fd
1116     VkResult vkImportSemaphoreFdKHR(
1117     VkDevice device,
1118         const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
1119     VkResult vkGetSemaphoreFdKHR(
1120     VkDevice device,
1121         const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
1122         int* pFd);
1123 #endif
1124 #ifdef VK_KHR_push_descriptor
1125     void vkCmdPushDescriptorSetKHR(
1126     VkCommandBuffer commandBuffer,
1127         VkPipelineBindPoint pipelineBindPoint,
1128         VkPipelineLayout layout,
1129         uint32_t set,
1130         uint32_t descriptorWriteCount,
1131         const VkWriteDescriptorSet* pDescriptorWrites);
1132     void vkCmdPushDescriptorSetWithTemplateKHR(
1133     VkCommandBuffer commandBuffer,
1134         VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1135         VkPipelineLayout layout,
1136         uint32_t set,
1137         const void* pData);
1138 #endif
1139 #ifdef VK_KHR_16bit_storage
1140 #endif
1141 #ifdef VK_KHR_incremental_present
1142 #endif
1143 #ifdef VK_KHR_descriptor_update_template
1144     VkResult vkCreateDescriptorUpdateTemplateKHR(
1145     VkDevice device,
1146         const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1147         const VkAllocationCallbacks* pAllocator,
1148         VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
1149     void vkDestroyDescriptorUpdateTemplateKHR(
1150     VkDevice device,
1151         VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1152         const VkAllocationCallbacks* pAllocator);
1153     void vkUpdateDescriptorSetWithTemplateKHR(
1154     VkDevice device,
1155         VkDescriptorSet descriptorSet,
1156         VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1157         const void* pData);
1158 #endif
1159 #ifdef VK_KHR_create_renderpass2
1160     VkResult vkCreateRenderPass2KHR(
1161     VkDevice device,
1162         const VkRenderPassCreateInfo2KHR* pCreateInfo,
1163         const VkAllocationCallbacks* pAllocator,
1164         VkRenderPass* pRenderPass);
1165     void vkCmdBeginRenderPass2KHR(
1166     VkCommandBuffer commandBuffer,
1167         const VkRenderPassBeginInfo* pRenderPassBegin,
1168         const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
1169     void vkCmdNextSubpass2KHR(
1170     VkCommandBuffer commandBuffer,
1171         const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
1172         const VkSubpassEndInfoKHR* pSubpassEndInfo);
1173     void vkCmdEndRenderPass2KHR(
1174     VkCommandBuffer commandBuffer,
1175         const VkSubpassEndInfoKHR* pSubpassEndInfo);
1176 #endif
1177 #ifdef VK_KHR_shared_presentable_image
1178     VkResult vkGetSwapchainStatusKHR(
1179     VkDevice device,
1180         VkSwapchainKHR swapchain);
1181 #endif
1182 #ifdef VK_KHR_external_fence_capabilities
1183     void vkGetPhysicalDeviceExternalFencePropertiesKHR(
1184     VkPhysicalDevice physicalDevice,
1185         const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
1186         VkExternalFenceProperties* pExternalFenceProperties);
1187 #endif
1188 #ifdef VK_KHR_external_fence
1189 #endif
1190 #ifdef VK_KHR_external_fence_win32
1191     VkResult vkImportFenceWin32HandleKHR(
1192     VkDevice device,
1193         const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
1194     VkResult vkGetFenceWin32HandleKHR(
1195     VkDevice device,
1196         const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
1197         HANDLE* pHandle);
1198 #endif
1199 #ifdef VK_KHR_external_fence_fd
1200     VkResult vkImportFenceFdKHR(
1201     VkDevice device,
1202         const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
1203     VkResult vkGetFenceFdKHR(
1204     VkDevice device,
1205         const VkFenceGetFdInfoKHR* pGetFdInfo,
1206         int* pFd);
1207 #endif
1208 #ifdef VK_KHR_maintenance2
1209 #endif
1210 #ifdef VK_KHR_get_surface_capabilities2
1211     VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
1212     VkPhysicalDevice physicalDevice,
1213         const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
1214         VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
1215     VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
1216     VkPhysicalDevice physicalDevice,
1217         const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
1218         uint32_t* pSurfaceFormatCount,
1219         VkSurfaceFormat2KHR* pSurfaceFormats);
1220 #endif
1221 #ifdef VK_KHR_variable_pointers
1222 #endif
1223 #ifdef VK_KHR_get_display_properties2
1224     VkResult vkGetPhysicalDeviceDisplayProperties2KHR(
1225     VkPhysicalDevice physicalDevice,
1226         uint32_t* pPropertyCount,
1227         VkDisplayProperties2KHR* pProperties);
1228     VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
1229     VkPhysicalDevice physicalDevice,
1230         uint32_t* pPropertyCount,
1231         VkDisplayPlaneProperties2KHR* pProperties);
1232     VkResult vkGetDisplayModeProperties2KHR(
1233     VkPhysicalDevice physicalDevice,
1234         VkDisplayKHR display,
1235         uint32_t* pPropertyCount,
1236         VkDisplayModeProperties2KHR* pProperties);
1237     VkResult vkGetDisplayPlaneCapabilities2KHR(
1238     VkPhysicalDevice physicalDevice,
1239         const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
1240         VkDisplayPlaneCapabilities2KHR* pCapabilities);
1241 #endif
1242 #ifdef VK_KHR_dedicated_allocation
1243 #endif
1244 #ifdef VK_KHR_storage_buffer_storage_class
1245 #endif
1246 #ifdef VK_KHR_relaxed_block_layout
1247 #endif
1248 #ifdef VK_KHR_get_memory_requirements2
1249     void vkGetImageMemoryRequirements2KHR(
1250     VkDevice device,
1251         const VkImageMemoryRequirementsInfo2* pInfo,
1252         VkMemoryRequirements2* pMemoryRequirements);
1253     void vkGetBufferMemoryRequirements2KHR(
1254     VkDevice device,
1255         const VkBufferMemoryRequirementsInfo2* pInfo,
1256         VkMemoryRequirements2* pMemoryRequirements);
1257     void vkGetImageSparseMemoryRequirements2KHR(
1258     VkDevice device,
1259         const VkImageSparseMemoryRequirementsInfo2* pInfo,
1260         uint32_t* pSparseMemoryRequirementCount,
1261         VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
1262 #endif
1263 #ifdef VK_KHR_image_format_list
1264 #endif
1265 #ifdef VK_KHR_sampler_ycbcr_conversion
1266     VkResult vkCreateSamplerYcbcrConversionKHR(
1267     VkDevice device,
1268         const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1269         const VkAllocationCallbacks* pAllocator,
1270         VkSamplerYcbcrConversion* pYcbcrConversion);
1271     void vkDestroySamplerYcbcrConversionKHR(
1272     VkDevice device,
1273         VkSamplerYcbcrConversion ycbcrConversion,
1274         const VkAllocationCallbacks* pAllocator);
1275 #endif
1276 #ifdef VK_KHR_bind_memory2
1277     VkResult vkBindBufferMemory2KHR(
1278     VkDevice device,
1279         uint32_t bindInfoCount,
1280         const VkBindBufferMemoryInfo* pBindInfos);
1281     VkResult vkBindImageMemory2KHR(
1282     VkDevice device,
1283         uint32_t bindInfoCount,
1284         const VkBindImageMemoryInfo* pBindInfos);
1285 #endif
1286 #ifdef VK_KHR_maintenance3
1287     void vkGetDescriptorSetLayoutSupportKHR(
1288     VkDevice device,
1289         const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
1290         VkDescriptorSetLayoutSupport* pSupport);
1291 #endif
1292 #ifdef VK_KHR_draw_indirect_count
1293     void vkCmdDrawIndirectCountKHR(
1294     VkCommandBuffer commandBuffer,
1295         VkBuffer buffer,
1296         VkDeviceSize offset,
1297         VkBuffer countBuffer,
1298         VkDeviceSize countBufferOffset,
1299         uint32_t maxDrawCount,
1300         uint32_t stride);
1301     void vkCmdDrawIndexedIndirectCountKHR(
1302     VkCommandBuffer commandBuffer,
1303         VkBuffer buffer,
1304         VkDeviceSize offset,
1305         VkBuffer countBuffer,
1306         VkDeviceSize countBufferOffset,
1307         uint32_t maxDrawCount,
1308         uint32_t stride);
1309 #endif
1310 #ifdef VK_KHR_8bit_storage
1311 #endif
1312 #ifdef VK_KHR_shader_float16_int8
1313 #endif
1314 #ifdef VK_ANDROID_native_buffer
1315     VkResult vkGetSwapchainGrallocUsageANDROID(
1316     VkDevice device,
1317         VkFormat format,
1318         VkImageUsageFlags imageUsage,
1319         int* grallocUsage);
1320     VkResult vkAcquireImageANDROID(
1321     VkDevice device,
1322         VkImage image,
1323         int nativeFenceFd,
1324         VkSemaphore semaphore,
1325         VkFence fence);
1326     VkResult vkQueueSignalReleaseImageANDROID(
1327     VkQueue queue,
1328         uint32_t waitSemaphoreCount,
1329         const VkSemaphore* pWaitSemaphores,
1330         VkImage image,
1331         int* pNativeFenceFd);
1332 #endif
1333 #ifdef VK_EXT_debug_report
1334     VkResult vkCreateDebugReportCallbackEXT(
1335     VkInstance instance,
1336         const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
1337         const VkAllocationCallbacks* pAllocator,
1338         VkDebugReportCallbackEXT* pCallback);
1339     void vkDestroyDebugReportCallbackEXT(
1340     VkInstance instance,
1341         VkDebugReportCallbackEXT callback,
1342         const VkAllocationCallbacks* pAllocator);
1343     void vkDebugReportMessageEXT(
1344     VkInstance instance,
1345         VkDebugReportFlagsEXT flags,
1346         VkDebugReportObjectTypeEXT objectType,
1347         uint64_t object,
1348         size_t location,
1349         int32_t messageCode,
1350         const char* pLayerPrefix,
1351         const char* pMessage);
1352 #endif
1353 #ifdef VK_NV_glsl_shader
1354 #endif
1355 #ifdef VK_EXT_depth_range_unrestricted
1356 #endif
1357 #ifdef VK_IMG_filter_cubic
1358 #endif
1359 #ifdef VK_AMD_rasterization_order
1360 #endif
1361 #ifdef VK_AMD_shader_trinary_minmax
1362 #endif
1363 #ifdef VK_AMD_shader_explicit_vertex_parameter
1364 #endif
1365 #ifdef VK_EXT_debug_marker
1366     VkResult vkDebugMarkerSetObjectTagEXT(
1367     VkDevice device,
1368         const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
1369     VkResult vkDebugMarkerSetObjectNameEXT(
1370     VkDevice device,
1371         const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
1372     void vkCmdDebugMarkerBeginEXT(
1373     VkCommandBuffer commandBuffer,
1374         const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
1375     void vkCmdDebugMarkerEndEXT(
1376     VkCommandBuffer commandBuffer);
1377     void vkCmdDebugMarkerInsertEXT(
1378     VkCommandBuffer commandBuffer,
1379         const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
1380 #endif
1381 #ifdef VK_AMD_gcn_shader
1382 #endif
1383 #ifdef VK_NV_dedicated_allocation
1384 #endif
1385 #ifdef VK_AMD_draw_indirect_count
1386     void vkCmdDrawIndirectCountAMD(
1387     VkCommandBuffer commandBuffer,
1388         VkBuffer buffer,
1389         VkDeviceSize offset,
1390         VkBuffer countBuffer,
1391         VkDeviceSize countBufferOffset,
1392         uint32_t maxDrawCount,
1393         uint32_t stride);
1394     void vkCmdDrawIndexedIndirectCountAMD(
1395     VkCommandBuffer commandBuffer,
1396         VkBuffer buffer,
1397         VkDeviceSize offset,
1398         VkBuffer countBuffer,
1399         VkDeviceSize countBufferOffset,
1400         uint32_t maxDrawCount,
1401         uint32_t stride);
1402 #endif
1403 #ifdef VK_AMD_negative_viewport_height
1404 #endif
1405 #ifdef VK_AMD_gpu_shader_half_float
1406 #endif
1407 #ifdef VK_AMD_shader_ballot
1408 #endif
1409 #ifdef VK_AMD_texture_gather_bias_lod
1410 #endif
1411 #ifdef VK_AMD_shader_info
1412     VkResult vkGetShaderInfoAMD(
1413     VkDevice device,
1414         VkPipeline pipeline,
1415         VkShaderStageFlagBits shaderStage,
1416         VkShaderInfoTypeAMD infoType,
1417         size_t* pInfoSize,
1418         void* pInfo);
1419 #endif
1420 #ifdef VK_AMD_shader_image_load_store_lod
1421 #endif
1422 #ifdef VK_IMG_format_pvrtc
1423 #endif
1424 #ifdef VK_NV_external_memory_capabilities
1425     VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
1426     VkPhysicalDevice physicalDevice,
1427         VkFormat format,
1428         VkImageType type,
1429         VkImageTiling tiling,
1430         VkImageUsageFlags usage,
1431         VkImageCreateFlags flags,
1432         VkExternalMemoryHandleTypeFlagsNV externalHandleType,
1433         VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
1434 #endif
1435 #ifdef VK_NV_external_memory
1436 #endif
1437 #ifdef VK_NV_external_memory_win32
1438     VkResult vkGetMemoryWin32HandleNV(
1439     VkDevice device,
1440         VkDeviceMemory memory,
1441         VkExternalMemoryHandleTypeFlagsNV handleType,
1442         HANDLE* pHandle);
1443 #endif
1444 #ifdef VK_NV_win32_keyed_mutex
1445 #endif
1446 #ifdef VK_EXT_validation_flags
1447 #endif
1448 #ifdef VK_NN_vi_surface
1449     VkResult vkCreateViSurfaceNN(
1450     VkInstance instance,
1451         const VkViSurfaceCreateInfoNN* pCreateInfo,
1452         const VkAllocationCallbacks* pAllocator,
1453         VkSurfaceKHR* pSurface);
1454 #endif
1455 #ifdef VK_EXT_shader_subgroup_ballot
1456 #endif
1457 #ifdef VK_EXT_shader_subgroup_vote
1458 #endif
1459 #ifdef VK_EXT_conditional_rendering
1460     void vkCmdBeginConditionalRenderingEXT(
1461     VkCommandBuffer commandBuffer,
1462         const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
1463     void vkCmdEndConditionalRenderingEXT(
1464     VkCommandBuffer commandBuffer);
1465 #endif
1466 #ifdef VK_NVX_device_generated_commands
1467     void vkCmdProcessCommandsNVX(
1468     VkCommandBuffer commandBuffer,
1469         const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
1470     void vkCmdReserveSpaceForCommandsNVX(
1471     VkCommandBuffer commandBuffer,
1472         const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
1473     VkResult vkCreateIndirectCommandsLayoutNVX(
1474     VkDevice device,
1475         const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
1476         const VkAllocationCallbacks* pAllocator,
1477         VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
1478     void vkDestroyIndirectCommandsLayoutNVX(
1479     VkDevice device,
1480         VkIndirectCommandsLayoutNVX indirectCommandsLayout,
1481         const VkAllocationCallbacks* pAllocator);
1482     VkResult vkCreateObjectTableNVX(
1483     VkDevice device,
1484         const VkObjectTableCreateInfoNVX* pCreateInfo,
1485         const VkAllocationCallbacks* pAllocator,
1486         VkObjectTableNVX* pObjectTable);
1487     void vkDestroyObjectTableNVX(
1488     VkDevice device,
1489         VkObjectTableNVX objectTable,
1490         const VkAllocationCallbacks* pAllocator);
1491     VkResult vkRegisterObjectsNVX(
1492     VkDevice device,
1493         VkObjectTableNVX objectTable,
1494         uint32_t objectCount,
1495         const VkObjectTableEntryNVX* const* ppObjectTableEntries,
1496         const uint32_t* pObjectIndices);
1497     VkResult vkUnregisterObjectsNVX(
1498     VkDevice device,
1499         VkObjectTableNVX objectTable,
1500         uint32_t objectCount,
1501         const VkObjectEntryTypeNVX* pObjectEntryTypes,
1502         const uint32_t* pObjectIndices);
1503     void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
1504     VkPhysicalDevice physicalDevice,
1505         VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
1506         VkDeviceGeneratedCommandsLimitsNVX* pLimits);
1507 #endif
1508 #ifdef VK_NV_clip_space_w_scaling
1509     void vkCmdSetViewportWScalingNV(
1510     VkCommandBuffer commandBuffer,
1511         uint32_t firstViewport,
1512         uint32_t viewportCount,
1513         const VkViewportWScalingNV* pViewportWScalings);
1514 #endif
1515 #ifdef VK_EXT_direct_mode_display
1516     VkResult vkReleaseDisplayEXT(
1517     VkPhysicalDevice physicalDevice,
1518         VkDisplayKHR display);
1519 #endif
1520 #ifdef VK_EXT_acquire_xlib_display
1521     VkResult vkAcquireXlibDisplayEXT(
1522     VkPhysicalDevice physicalDevice,
1523         Display* dpy,
1524         VkDisplayKHR display);
1525     VkResult vkGetRandROutputDisplayEXT(
1526     VkPhysicalDevice physicalDevice,
1527         Display* dpy,
1528         RROutput rrOutput,
1529         VkDisplayKHR* pDisplay);
1530 #endif
1531 #ifdef VK_EXT_display_surface_counter
1532     VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
1533     VkPhysicalDevice physicalDevice,
1534         VkSurfaceKHR surface,
1535         VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
1536 #endif
1537 #ifdef VK_EXT_display_control
1538     VkResult vkDisplayPowerControlEXT(
1539     VkDevice device,
1540         VkDisplayKHR display,
1541         const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
1542     VkResult vkRegisterDeviceEventEXT(
1543     VkDevice device,
1544         const VkDeviceEventInfoEXT* pDeviceEventInfo,
1545         const VkAllocationCallbacks* pAllocator,
1546         VkFence* pFence);
1547     VkResult vkRegisterDisplayEventEXT(
1548     VkDevice device,
1549         VkDisplayKHR display,
1550         const VkDisplayEventInfoEXT* pDisplayEventInfo,
1551         const VkAllocationCallbacks* pAllocator,
1552         VkFence* pFence);
1553     VkResult vkGetSwapchainCounterEXT(
1554     VkDevice device,
1555         VkSwapchainKHR swapchain,
1556         VkSurfaceCounterFlagBitsEXT counter,
1557         uint64_t* pCounterValue);
1558 #endif
1559 #ifdef VK_GOOGLE_display_timing
1560     VkResult vkGetRefreshCycleDurationGOOGLE(
1561     VkDevice device,
1562         VkSwapchainKHR swapchain,
1563         VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
1564     VkResult vkGetPastPresentationTimingGOOGLE(
1565     VkDevice device,
1566         VkSwapchainKHR swapchain,
1567         uint32_t* pPresentationTimingCount,
1568         VkPastPresentationTimingGOOGLE* pPresentationTimings);
1569 #endif
1570 #ifdef VK_NV_sample_mask_override_coverage
1571 #endif
1572 #ifdef VK_NV_geometry_shader_passthrough
1573 #endif
1574 #ifdef VK_NV_viewport_array2
1575 #endif
1576 #ifdef VK_NVX_multiview_per_view_attributes
1577 #endif
1578 #ifdef VK_NV_viewport_swizzle
1579 #endif
1580 #ifdef VK_EXT_discard_rectangles
1581     void vkCmdSetDiscardRectangleEXT(
1582     VkCommandBuffer commandBuffer,
1583         uint32_t firstDiscardRectangle,
1584         uint32_t discardRectangleCount,
1585         const VkRect2D* pDiscardRectangles);
1586 #endif
1587 #ifdef VK_EXT_conservative_rasterization
1588 #endif
1589 #ifdef VK_EXT_swapchain_colorspace
1590 #endif
1591 #ifdef VK_EXT_hdr_metadata
1592     void vkSetHdrMetadataEXT(
1593     VkDevice device,
1594         uint32_t swapchainCount,
1595         const VkSwapchainKHR* pSwapchains,
1596         const VkHdrMetadataEXT* pMetadata);
1597 #endif
1598 #ifdef VK_MVK_ios_surface
1599     VkResult vkCreateIOSSurfaceMVK(
1600     VkInstance instance,
1601         const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
1602         const VkAllocationCallbacks* pAllocator,
1603         VkSurfaceKHR* pSurface);
1604 #endif
1605 #ifdef VK_MVK_macos_surface
1606     VkResult vkCreateMacOSSurfaceMVK(
1607     VkInstance instance,
1608         const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
1609         const VkAllocationCallbacks* pAllocator,
1610         VkSurfaceKHR* pSurface);
1611 #endif
1612 #ifdef VK_EXT_external_memory_dma_buf
1613 #endif
1614 #ifdef VK_EXT_queue_family_foreign
1615 #endif
1616 #ifdef VK_EXT_debug_utils
1617     VkResult vkSetDebugUtilsObjectNameEXT(
1618     VkDevice device,
1619         const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
1620     VkResult vkSetDebugUtilsObjectTagEXT(
1621     VkDevice device,
1622         const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
1623     void vkQueueBeginDebugUtilsLabelEXT(
1624     VkQueue queue,
1625         const VkDebugUtilsLabelEXT* pLabelInfo);
1626     void vkQueueEndDebugUtilsLabelEXT(
1627     VkQueue queue);
1628     void vkQueueInsertDebugUtilsLabelEXT(
1629     VkQueue queue,
1630         const VkDebugUtilsLabelEXT* pLabelInfo);
1631     void vkCmdBeginDebugUtilsLabelEXT(
1632     VkCommandBuffer commandBuffer,
1633         const VkDebugUtilsLabelEXT* pLabelInfo);
1634     void vkCmdEndDebugUtilsLabelEXT(
1635     VkCommandBuffer commandBuffer);
1636     void vkCmdInsertDebugUtilsLabelEXT(
1637     VkCommandBuffer commandBuffer,
1638         const VkDebugUtilsLabelEXT* pLabelInfo);
1639     VkResult vkCreateDebugUtilsMessengerEXT(
1640     VkInstance instance,
1641         const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
1642         const VkAllocationCallbacks* pAllocator,
1643         VkDebugUtilsMessengerEXT* pMessenger);
1644     void vkDestroyDebugUtilsMessengerEXT(
1645     VkInstance instance,
1646         VkDebugUtilsMessengerEXT messenger,
1647         const VkAllocationCallbacks* pAllocator);
1648     void vkSubmitDebugUtilsMessageEXT(
1649     VkInstance instance,
1650         VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
1651         VkDebugUtilsMessageTypeFlagsEXT messageTypes,
1652         const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
1653 #endif
1654 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
1655     VkResult vkGetAndroidHardwareBufferPropertiesANDROID(
1656     VkDevice device,
1657         const AHardwareBuffer* buffer,
1658         VkAndroidHardwareBufferPropertiesANDROID* pProperties);
1659     VkResult vkGetMemoryAndroidHardwareBufferANDROID(
1660     VkDevice device,
1661         const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
1662         AHardwareBuffer** pBuffer);
1663 #endif
1664 #ifdef VK_EXT_sampler_filter_minmax
1665 #endif
1666 #ifdef VK_AMD_gpu_shader_int16
1667 #endif
1668 #ifdef VK_AMD_mixed_attachment_samples
1669 #endif
1670 #ifdef VK_AMD_shader_fragment_mask
1671 #endif
1672 #ifdef VK_EXT_shader_stencil_export
1673 #endif
1674 #ifdef VK_EXT_sample_locations
1675     void vkCmdSetSampleLocationsEXT(
1676     VkCommandBuffer commandBuffer,
1677         const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
1678     void vkGetPhysicalDeviceMultisamplePropertiesEXT(
1679     VkPhysicalDevice physicalDevice,
1680         VkSampleCountFlagBits samples,
1681         VkMultisamplePropertiesEXT* pMultisampleProperties);
1682 #endif
1683 #ifdef VK_EXT_blend_operation_advanced
1684 #endif
1685 #ifdef VK_NV_fragment_coverage_to_color
1686 #endif
1687 #ifdef VK_NV_framebuffer_mixed_samples
1688 #endif
1689 #ifdef VK_NV_fill_rectangle
1690 #endif
1691 #ifdef VK_EXT_post_depth_coverage
1692 #endif
1693 #ifdef VK_EXT_validation_cache
1694     VkResult vkCreateValidationCacheEXT(
1695     VkDevice device,
1696         const VkValidationCacheCreateInfoEXT* pCreateInfo,
1697         const VkAllocationCallbacks* pAllocator,
1698         VkValidationCacheEXT* pValidationCache);
1699     void vkDestroyValidationCacheEXT(
1700     VkDevice device,
1701         VkValidationCacheEXT validationCache,
1702         const VkAllocationCallbacks* pAllocator);
1703     VkResult vkMergeValidationCachesEXT(
1704     VkDevice device,
1705         VkValidationCacheEXT dstCache,
1706         uint32_t srcCacheCount,
1707         const VkValidationCacheEXT* pSrcCaches);
1708     VkResult vkGetValidationCacheDataEXT(
1709     VkDevice device,
1710         VkValidationCacheEXT validationCache,
1711         size_t* pDataSize,
1712         void* pData);
1713 #endif
1714 #ifdef VK_EXT_descriptor_indexing
1715 #endif
1716 #ifdef VK_EXT_shader_viewport_index_layer
1717 #endif
1718 #ifdef VK_EXT_global_priority
1719 #endif
1720 #ifdef VK_EXT_external_memory_host
1721     VkResult vkGetMemoryHostPointerPropertiesEXT(
1722     VkDevice device,
1723         VkExternalMemoryHandleTypeFlagBits handleType,
1724         const void* pHostPointer,
1725         VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
1726 #endif
1727 #ifdef VK_AMD_buffer_marker
1728     void vkCmdWriteBufferMarkerAMD(
1729     VkCommandBuffer commandBuffer,
1730         VkPipelineStageFlagBits pipelineStage,
1731         VkBuffer dstBuffer,
1732         VkDeviceSize dstOffset,
1733         uint32_t marker);
1734 #endif
1735 #ifdef VK_AMD_shader_core_properties
1736 #endif
1737 #ifdef VK_EXT_vertex_attribute_divisor
1738 #endif
1739 #ifdef VK_NV_shader_subgroup_partitioned
1740 #endif
1741 #ifdef VK_NV_device_diagnostic_checkpoints
1742     void vkCmdSetCheckpointNV(
1743     VkCommandBuffer commandBuffer,
1744         const void* pCheckpointMarker);
1745     void vkGetQueueCheckpointDataNV(
1746     VkQueue queue,
1747         uint32_t* pCheckpointDataCount,
1748         VkCheckpointDataNV* pCheckpointData);
1749 #endif
1750 #ifdef VK_GOOGLE_address_space
1751     VkResult vkMapMemoryIntoAddressSpaceGOOGLE(
1752     VkDevice device,
1753         VkDeviceMemory memory,
1754         uint64_t* pAddress);
1755 #endif
1756 #ifdef VK_GOOGLE_color_buffer
1757     VkResult vkRegisterImageColorBufferGOOGLE(
1758     VkDevice device,
1759         VkImage image,
1760         uint32_t colorBuffer);
1761     VkResult vkRegisterBufferColorBufferGOOGLE(
1762     VkDevice device,
1763         VkBuffer buffer,
1764         uint32_t colorBuffer);
1765 #endif
1766 #ifdef VK_GOOGLE_sized_descriptor_update_template
1767     void vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
1768     VkDevice device,
1769         VkDescriptorSet descriptorSet,
1770         VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1771         uint32_t imageInfoCount,
1772         uint32_t bufferInfoCount,
1773         uint32_t bufferViewCount,
1774         const uint32_t* pImageInfoEntryIndices,
1775         const uint32_t* pBufferInfoEntryIndices,
1776         const uint32_t* pBufferViewEntryIndices,
1777         const VkDescriptorImageInfo* pImageInfos,
1778         const VkDescriptorBufferInfo* pBufferInfos,
1779         const VkBufferView* pBufferViews);
1780 #endif
1781 #ifdef VK_GOOGLE_async_command_buffers
1782     void vkBeginCommandBufferAsyncGOOGLE(
1783     VkCommandBuffer commandBuffer,
1784         const VkCommandBufferBeginInfo* pBeginInfo);
1785     void vkEndCommandBufferAsyncGOOGLE(
1786     VkCommandBuffer commandBuffer);
1787     void vkResetCommandBufferAsyncGOOGLE(
1788     VkCommandBuffer commandBuffer,
1789         VkCommandBufferResetFlags flags);
1790     void vkCommandBufferHostSyncGOOGLE(
1791     VkCommandBuffer commandBuffer,
1792         uint32_t needHostSync,
1793         uint32_t sequenceNumber);
1794 #endif
1795 #ifdef VK_GOOGLE_create_resources_with_requirements
1796     VkResult vkCreateImageWithRequirementsGOOGLE(
1797     VkDevice device,
1798         const VkImageCreateInfo* pCreateInfo,
1799         const VkAllocationCallbacks* pAllocator,
1800         VkImage* pImage,
1801         VkMemoryRequirements* pMemoryRequirements);
1802     VkResult vkCreateBufferWithRequirementsGOOGLE(
1803     VkDevice device,
1804         const VkBufferCreateInfo* pCreateInfo,
1805         const VkAllocationCallbacks* pAllocator,
1806         VkBuffer* pBuffer,
1807         VkMemoryRequirements* pMemoryRequirements);
1808 #endif
1809 #ifdef VK_GOOGLE_address_space_info
1810     VkResult vkGetMemoryHostAddressInfoGOOGLE(
1811     VkDevice device,
1812         VkDeviceMemory memory,
1813         uint64_t* pAddress,
1814         uint64_t* pSize,
1815         uint64_t* pHostmemId);
1816 #endif
1817 #ifdef VK_GOOGLE_free_memory_sync
1818     VkResult vkFreeMemorySyncGOOGLE(
1819     VkDevice device,
1820         VkDeviceMemory memory,
1821         const VkAllocationCallbacks* pAllocator);
1822 #endif
1823 #ifdef VK_GOOGLE_async_queue_submit
1824     void vkQueueHostSyncGOOGLE(
1825     VkQueue queue,
1826         uint32_t needHostSync,
1827         uint32_t sequenceNumber);
1828     void vkQueueSubmitAsyncGOOGLE(
1829     VkQueue queue,
1830         uint32_t submitCount,
1831         const VkSubmitInfo* pSubmits,
1832         VkFence fence);
1833     void vkQueueWaitIdleAsyncGOOGLE(
1834     VkQueue queue);
1835     void vkQueueBindSparseAsyncGOOGLE(
1836     VkQueue queue,
1837         uint32_t bindInfoCount,
1838         const VkBindSparseInfo* pBindInfo,
1839         VkFence fence);
1840 #endif
1841 
1842 private:
1843     class Impl;
1844     std::unique_ptr<Impl> mImpl;
1845 };
1846 
1847 } // namespace goldfish_vk
1848