/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 */
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateInstanceFunc)													(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyInstanceFunc)													(VkInstance instance, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EnumeratePhysicalDevicesFunc)											(VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceFeaturesFunc)											(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceFormatPropertiesFunc)									(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceImageFormatPropertiesFunc)							(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDevicePropertiesFunc)										(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceQueueFamilyPropertiesFunc)							(VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceMemoryPropertiesFunc)									(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
typedef VKAPI_ATTR PFN_vkVoidFunction	(VKAPI_CALL* GetInstanceProcAddrFunc)												(VkInstance instance, const char* pName);
typedef VKAPI_ATTR PFN_vkVoidFunction	(VKAPI_CALL* GetDeviceProcAddrFunc)													(VkDevice device, const char* pName);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateDeviceFunc)														(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyDeviceFunc)														(VkDevice device, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EnumerateInstanceExtensionPropertiesFunc)								(const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EnumerateDeviceExtensionPropertiesFunc)								(VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EnumerateInstanceLayerPropertiesFunc)									(deUint32* pPropertyCount, VkLayerProperties* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EnumerateDeviceLayerPropertiesFunc)									(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetDeviceQueueFunc)													(VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* QueueSubmitFunc)														(VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* QueueWaitIdleFunc)														(VkQueue queue);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* DeviceWaitIdleFunc)													(VkDevice device);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* AllocateMemoryFunc)													(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
typedef VKAPI_ATTR void					(VKAPI_CALL* FreeMemoryFunc)														(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* MapMemoryFunc)															(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
typedef VKAPI_ATTR void					(VKAPI_CALL* UnmapMemoryFunc)														(VkDevice device, VkDeviceMemory memory);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* FlushMappedMemoryRangesFunc)											(VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* InvalidateMappedMemoryRangesFunc)										(VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetDeviceMemoryCommitmentFunc)											(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* BindBufferMemoryFunc)													(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* BindImageMemoryFunc)													(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetBufferMemoryRequirementsFunc)										(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetImageMemoryRequirementsFunc)										(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetImageSparseMemoryRequirementsFunc)									(VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceSparseImageFormatPropertiesFunc)						(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* QueueBindSparseFunc)													(VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateFenceFunc)														(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyFenceFunc)														(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ResetFencesFunc)														(VkDevice device, deUint32 fenceCount, const VkFence* pFences);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetFenceStatusFunc)													(VkDevice device, VkFence fence);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* WaitForFencesFunc)														(VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateSemaphoreFunc)													(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroySemaphoreFunc)													(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateEventFunc)														(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyEventFunc)														(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetEventStatusFunc)													(VkDevice device, VkEvent event);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* SetEventFunc)															(VkDevice device, VkEvent event);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ResetEventFunc)														(VkDevice device, VkEvent event);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateQueryPoolFunc)													(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyQueryPoolFunc)													(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetQueryPoolResultsFunc)												(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateBufferFunc)														(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyBufferFunc)														(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateBufferViewFunc)													(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyBufferViewFunc)													(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateImageFunc)														(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyImageFunc)														(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetImageSubresourceLayoutFunc)											(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateImageViewFunc)													(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyImageViewFunc)													(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateShaderModuleFunc)												(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyShaderModuleFunc)												(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreatePipelineCacheFunc)												(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyPipelineCacheFunc)												(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPipelineCacheDataFunc)												(VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* MergePipelineCachesFunc)												(VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateGraphicsPipelinesFunc)											(VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateComputePipelinesFunc)											(VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyPipelineFunc)													(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreatePipelineLayoutFunc)												(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyPipelineLayoutFunc)												(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateSamplerFunc)														(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroySamplerFunc)													(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateDescriptorSetLayoutFunc)											(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyDescriptorSetLayoutFunc)										(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateDescriptorPoolFunc)												(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyDescriptorPoolFunc)												(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ResetDescriptorPoolFunc)												(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* AllocateDescriptorSetsFunc)											(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* FreeDescriptorSetsFunc)												(VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
typedef VKAPI_ATTR void					(VKAPI_CALL* UpdateDescriptorSetsFunc)												(VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateFramebufferFunc)													(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyFramebufferFunc)												(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateRenderPassFunc)													(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyRenderPassFunc)													(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetRenderAreaGranularityFunc)											(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateCommandPoolFunc)													(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyCommandPoolFunc)												(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ResetCommandPoolFunc)													(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* AllocateCommandBuffersFunc)											(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
typedef VKAPI_ATTR void					(VKAPI_CALL* FreeCommandBuffersFunc)												(VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* BeginCommandBufferFunc)												(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EndCommandBufferFunc)													(VkCommandBuffer commandBuffer);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ResetCommandBufferFunc)												(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBindPipelineFunc)													(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetViewportFunc)													(VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetScissorFunc)														(VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetLineWidthFunc)													(VkCommandBuffer commandBuffer, float lineWidth);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetDepthBiasFunc)													(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetBlendConstantsFunc)												(VkCommandBuffer commandBuffer, const float blendConstants[4]);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetDepthBoundsFunc)													(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetStencilCompareMaskFunc)											(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetStencilWriteMaskFunc)											(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetStencilReferenceFunc)											(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBindDescriptorSetsFunc)												(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBindIndexBufferFunc)												(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBindVertexBuffersFunc)												(VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawFunc)															(VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndexedFunc)													(VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndirectFunc)													(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndexedIndirectFunc)											(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDispatchFunc)														(VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDispatchIndirectFunc)												(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdCopyBufferFunc)														(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdCopyImageFunc)														(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBlitImageFunc)														(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdCopyBufferToImageFunc)												(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdCopyImageToBufferFunc)												(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdUpdateBufferFunc)													(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdFillBufferFunc)														(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdClearColorImageFunc)												(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdClearDepthStencilImageFunc)											(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdClearAttachmentsFunc)												(VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdResolveImageFunc)													(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetEventFunc)														(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdResetEventFunc)														(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdWaitEventsFunc)														(VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdPipelineBarrierFunc)												(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBeginQueryFunc)														(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdEndQueryFunc)														(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdResetQueryPoolFunc)													(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdWriteTimestampFunc)													(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdCopyQueryPoolResultsFunc)											(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdPushConstantsFunc)													(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBeginRenderPassFunc)												(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdNextSubpassFunc)													(VkCommandBuffer commandBuffer, VkSubpassContents contents);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdEndRenderPassFunc)													(VkCommandBuffer commandBuffer);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdExecuteCommandsFunc)												(VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EnumerateInstanceVersionFunc)											(deUint32* pApiVersion);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* BindBufferMemory2Func)													(VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* BindImageMemory2Func)													(VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetDeviceGroupPeerMemoryFeaturesFunc)									(VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetDeviceMaskFunc)													(VkCommandBuffer commandBuffer, deUint32 deviceMask);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDispatchBaseFunc)													(VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EnumeratePhysicalDeviceGroupsFunc)										(VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetImageMemoryRequirements2Func)										(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetBufferMemoryRequirements2Func)										(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetImageSparseMemoryRequirements2Func)									(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceFeatures2Func)										(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceProperties2Func)										(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceFormatProperties2Func)								(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2Func)							(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2Func)							(VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceMemoryProperties2Func)								(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceSparseImageFormatProperties2Func)						(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* TrimCommandPoolFunc)													(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetDeviceQueue2Func)													(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateSamplerYcbcrConversionFunc)										(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroySamplerYcbcrConversionFunc)										(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateDescriptorUpdateTemplateFunc)									(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyDescriptorUpdateTemplateFunc)									(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR void					(VKAPI_CALL* UpdateDescriptorSetWithTemplateFunc)									(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceExternalBufferPropertiesFunc)							(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesFunc)							(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceExternalSemaphorePropertiesFunc)						(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetDescriptorSetLayoutSupportFunc)										(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndirectCountFunc)												(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndexedIndirectCountFunc)										(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateRenderPass2Func)													(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBeginRenderPass2Func)												(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdNextSubpass2Func)													(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdEndRenderPass2Func)													(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* ResetQueryPoolFunc)													(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetSemaphoreCounterValueFunc)											(VkDevice device, VkSemaphore semaphore, deUint64* pValue);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* WaitSemaphoresFunc)													(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* SignalSemaphoreFunc)													(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
typedef VKAPI_ATTR VkDeviceAddress		(VKAPI_CALL* GetBufferDeviceAddressFunc)											(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
typedef VKAPI_ATTR uint64_t				(VKAPI_CALL* GetBufferOpaqueCaptureAddressFunc)										(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
typedef VKAPI_ATTR uint64_t				(VKAPI_CALL* GetDeviceMemoryOpaqueCaptureAddressFunc)								(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroySurfaceKHRFunc)													(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceSurfaceSupportKHRFunc)								(VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilitiesKHRFunc)							(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceSurfaceFormatsKHRFunc)								(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceSurfacePresentModesKHRFunc)							(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateSwapchainKHRFunc)												(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroySwapchainKHRFunc)												(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetSwapchainImagesKHRFunc)												(VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* AcquireNextImageKHRFunc)												(VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* QueuePresentKHRFunc)													(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetDeviceGroupPresentCapabilitiesKHRFunc)								(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetDeviceGroupSurfacePresentModesKHRFunc)								(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDevicePresentRectanglesKHRFunc)								(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* AcquireNextImage2KHRFunc)												(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceDisplayPropertiesKHRFunc)								(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)						(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetDisplayPlaneSupportedDisplaysKHRFunc)								(VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetDisplayModePropertiesKHRFunc)										(VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateDisplayModeKHRFunc)												(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetDisplayPlaneCapabilitiesKHRFunc)									(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateDisplayPlaneSurfaceKHRFunc)										(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateSharedSwapchainsKHRFunc)											(VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceFeatures2KHRFunc)										(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceProperties2KHRFunc)									(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceFormatProperties2KHRFunc)								(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2KHRFunc)						(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2KHRFunc)						(VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceMemoryProperties2KHRFunc)								(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)					(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetDeviceGroupPeerMemoryFeaturesKHRFunc)								(VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetDeviceMaskKHRFunc)												(VkCommandBuffer commandBuffer, deUint32 deviceMask);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDispatchBaseKHRFunc)												(VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
typedef VKAPI_ATTR void					(VKAPI_CALL* TrimCommandPoolKHRFunc)												(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EnumeratePhysicalDeviceGroupsKHRFunc)									(VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceExternalBufferPropertiesKHRFunc)						(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetMemoryFdKHRFunc)													(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetMemoryFdPropertiesKHRFunc)											(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc)					(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ImportSemaphoreFdKHRFunc)												(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetSemaphoreFdKHRFunc)													(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdPushDescriptorSetKHRFunc)											(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdPushDescriptorSetWithTemplateKHRFunc)								(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateDescriptorUpdateTemplateKHRFunc)									(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyDescriptorUpdateTemplateKHRFunc)								(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR void					(VKAPI_CALL* UpdateDescriptorSetWithTemplateKHRFunc)								(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateRenderPass2KHRFunc)												(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBeginRenderPass2KHRFunc)											(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdNextSubpass2KHRFunc)												(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdEndRenderPass2KHRFunc)												(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetSwapchainStatusKHRFunc)												(VkDevice device, VkSwapchainKHR swapchain);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesKHRFunc)						(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ImportFenceFdKHRFunc)													(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetFenceFdKHRFunc)														(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRFunc)		(VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRFunc)				(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* AcquireProfilingLockKHRFunc)											(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* ReleaseProfilingLockKHRFunc)											(VkDevice device);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2KHRFunc)							(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceSurfaceFormats2KHRFunc)								(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceDisplayProperties2KHRFunc)							(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceDisplayPlaneProperties2KHRFunc)						(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetDisplayModeProperties2KHRFunc)										(VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetDisplayPlaneCapabilities2KHRFunc)									(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetImageMemoryRequirements2KHRFunc)									(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetBufferMemoryRequirements2KHRFunc)									(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetImageSparseMemoryRequirements2KHRFunc)								(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateSamplerYcbcrConversionKHRFunc)									(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroySamplerYcbcrConversionKHRFunc)									(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* BindBufferMemory2KHRFunc)												(VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* BindImageMemory2KHRFunc)												(VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetDescriptorSetLayoutSupportKHRFunc)									(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndirectCountKHRFunc)											(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndexedIndirectCountKHRFunc)									(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetSemaphoreCounterValueKHRFunc)										(VkDevice device, VkSemaphore semaphore, deUint64* pValue);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* WaitSemaphoresKHRFunc)													(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, deUint64 timeout);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* SignalSemaphoreKHRFunc)												(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
typedef VKAPI_ATTR VkDeviceAddress		(VKAPI_CALL* GetBufferDeviceAddressKHRFunc)											(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
typedef VKAPI_ATTR uint64_t				(VKAPI_CALL* GetBufferOpaqueCaptureAddressKHRFunc)									(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
typedef VKAPI_ATTR uint64_t				(VKAPI_CALL* GetDeviceMemoryOpaqueCaptureAddressKHRFunc)							(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPipelineExecutablePropertiesKHRFunc)								(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, deUint32* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPipelineExecutableStatisticsKHRFunc)								(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPipelineExecutableInternalRepresentationsKHRFunc)					(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, deUint32* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateDebugReportCallbackEXTFunc)										(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyDebugReportCallbackEXTFunc)										(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR void					(VKAPI_CALL* DebugReportMessageEXTFunc)												(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* DebugMarkerSetObjectTagEXTFunc)										(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* DebugMarkerSetObjectNameEXTFunc)										(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDebugMarkerBeginEXTFunc)											(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDebugMarkerEndEXTFunc)												(VkCommandBuffer commandBuffer);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDebugMarkerInsertEXTFunc)											(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBindTransformFeedbackBuffersEXTFunc)								(VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBeginTransformFeedbackEXTFunc)										(VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdEndTransformFeedbackEXTFunc)										(VkCommandBuffer commandBuffer, deUint32 firstCounterBuffer, deUint32 counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBeginQueryIndexedEXTFunc)											(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags, deUint32 index);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdEndQueryIndexedEXTFunc)												(VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, deUint32 index);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndirectByteCountEXTFunc)										(VkCommandBuffer commandBuffer, deUint32 instanceCount, deUint32 firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, deUint32 counterOffset, deUint32 vertexStride);
typedef VKAPI_ATTR uint32_t				(VKAPI_CALL* GetImageViewHandleNVXFunc)												(VkDevice device, const VkImageViewHandleInfoNVX* pInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndirectCountAMDFunc)											(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawIndexedIndirectCountAMDFunc)									(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetShaderInfoAMDFunc)													(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, deUintptr* pInfoSize, void* pInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceExternalImageFormatPropertiesNVFunc)					(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBeginConditionalRenderingEXTFunc)									(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdEndConditionalRenderingEXTFunc)										(VkCommandBuffer commandBuffer);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdProcessCommandsNVXFunc)												(VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdReserveSpaceForCommandsNVXFunc)										(VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateIndirectCommandsLayoutNVXFunc)									(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyIndirectCommandsLayoutNVXFunc)									(VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateObjectTableNVXFunc)												(VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyObjectTableNVXFunc)												(VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* RegisterObjectsNVXFunc)												(VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const deUint32* pObjectIndices);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* UnregisterObjectsNVXFunc)												(VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const deUint32* pObjectIndices);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceGeneratedCommandsPropertiesNVXFunc)					(VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetViewportWScalingNVFunc)											(VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ReleaseDisplayEXTFunc)													(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2EXTFunc)							(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* DisplayPowerControlEXTFunc)											(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* RegisterDeviceEventEXTFunc)											(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* RegisterDisplayEventEXTFunc)											(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetSwapchainCounterEXTFunc)											(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetRefreshCycleDurationGOOGLEFunc)										(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPastPresentationTimingGOOGLEFunc)									(VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetDiscardRectangleEXTFunc)											(VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles);
typedef VKAPI_ATTR void					(VKAPI_CALL* SetHdrMetadataEXTFunc)													(VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* SetDebugUtilsObjectNameEXTFunc)										(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* SetDebugUtilsObjectTagEXTFunc)											(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* QueueBeginDebugUtilsLabelEXTFunc)										(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* QueueEndDebugUtilsLabelEXTFunc)										(VkQueue queue);
typedef VKAPI_ATTR void					(VKAPI_CALL* QueueInsertDebugUtilsLabelEXTFunc)										(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBeginDebugUtilsLabelEXTFunc)										(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdEndDebugUtilsLabelEXTFunc)											(VkCommandBuffer commandBuffer);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdInsertDebugUtilsLabelEXTFunc)										(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateDebugUtilsMessengerEXTFunc)										(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyDebugUtilsMessengerEXTFunc)										(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR void					(VKAPI_CALL* SubmitDebugUtilsMessageEXTFunc)										(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetSampleLocationsEXTFunc)											(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetPhysicalDeviceMultisamplePropertiesEXTFunc)							(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetImageDrmFormatModifierPropertiesEXTFunc)							(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateValidationCacheEXTFunc)											(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyValidationCacheEXTFunc)											(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* MergeValidationCachesEXTFunc)											(VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetValidationCacheDataEXTFunc)											(VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBindShadingRateImageNVFunc)											(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetViewportShadingRatePaletteNVFunc)								(VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetCoarseSampleOrderNVFunc)											(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, deUint32 customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateAccelerationStructureNVFunc)										(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure);
typedef VKAPI_ATTR void					(VKAPI_CALL* DestroyAccelerationStructureNVFunc)									(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetAccelerationStructureMemoryRequirementsNVFunc)						(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* BindAccelerationStructureMemoryNVFunc)									(VkDevice device, deUint32 bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdBuildAccelerationStructureNVFunc)									(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdCopyAccelerationStructureNVFunc)									(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeNV mode);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdTraceRaysNVFunc)													(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, deUint32 width, deUint32 height, deUint32 depth);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateRayTracingPipelinesNVFunc)										(VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetRayTracingShaderGroupHandlesNVFunc)									(VkDevice device, VkPipeline pipeline, deUint32 firstGroup, deUint32 groupCount, deUintptr dataSize, void* pData);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetAccelerationStructureHandleNVFunc)									(VkDevice device, VkAccelerationStructureNV accelerationStructure, deUintptr dataSize, void* pData);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdWriteAccelerationStructuresPropertiesNVFunc)						(VkCommandBuffer commandBuffer, deUint32 accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, deUint32 firstQuery);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CompileDeferredNVFunc)													(VkDevice device, VkPipeline pipeline, deUint32 shader);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetMemoryHostPointerPropertiesEXTFunc)									(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdWriteBufferMarkerAMDFunc)											(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, deUint32 marker);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceCalibrateableTimeDomainsEXTFunc)						(VkPhysicalDevice physicalDevice, deUint32* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetCalibratedTimestampsEXTFunc)										(VkDevice device, deUint32 timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, deUint64* pTimestamps, deUint64* pMaxDeviation);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawMeshTasksNVFunc)												(VkCommandBuffer commandBuffer, deUint32 taskCount, deUint32 firstTask);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawMeshTasksIndirectNVFunc)										(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdDrawMeshTasksIndirectCountNVFunc)									(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetExclusiveScissorNVFunc)											(VkCommandBuffer commandBuffer, deUint32 firstExclusiveScissor, deUint32 exclusiveScissorCount, const VkRect2D* pExclusiveScissors);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetCheckpointNVFunc)												(VkCommandBuffer commandBuffer, const void* pCheckpointMarker);
typedef VKAPI_ATTR void					(VKAPI_CALL* GetQueueCheckpointDataNVFunc)											(VkQueue queue, deUint32* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* InitializePerformanceApiINTELFunc)										(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo);
typedef VKAPI_ATTR void					(VKAPI_CALL* UninitializePerformanceApiINTELFunc)									(VkDevice device);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CmdSetPerformanceMarkerINTELFunc)										(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CmdSetPerformanceStreamMarkerINTELFunc)								(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CmdSetPerformanceOverrideINTELFunc)									(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* AcquirePerformanceConfigurationINTELFunc)								(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ReleasePerformanceConfigurationINTELFunc)								(VkDevice device, VkPerformanceConfigurationINTEL configuration);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* QueueSetPerformanceConfigurationINTELFunc)								(VkQueue queue, VkPerformanceConfigurationINTEL configuration);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPerformanceParameterINTELFunc)										(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue);
typedef VKAPI_ATTR void					(VKAPI_CALL* SetLocalDimmingAMDFunc)												(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable);
typedef VKAPI_ATTR VkDeviceAddress		(VKAPI_CALL* GetBufferDeviceAddressEXTFunc)											(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceToolPropertiesEXTFunc)								(VkPhysicalDevice physicalDevice, deUint32* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc)					(VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNVFunc)	(VkPhysicalDevice physicalDevice, deUint32* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateHeadlessSurfaceEXTFunc)											(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR void					(VKAPI_CALL* CmdSetLineStippleEXTFunc)												(VkCommandBuffer commandBuffer, deUint32 lineStippleFactor, deUint16 lineStipplePattern);
typedef VKAPI_ATTR void					(VKAPI_CALL* ResetQueryPoolEXTFunc)													(VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateAndroidSurfaceKHRFunc)											(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetAndroidHardwareBufferPropertiesANDROIDFunc)							(VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetMemoryAndroidHardwareBufferANDROIDFunc)								(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateImagePipeSurfaceFUCHSIAFunc)										(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateStreamDescriptorSurfaceGGPFunc)									(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateIOSSurfaceMVKFunc)												(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateMacOSSurfaceMVKFunc)												(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateMetalSurfaceEXTFunc)												(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateViSurfaceNNFunc)													(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateWaylandSurfaceKHRFunc)											(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkBool32				(VKAPI_CALL* GetPhysicalDeviceWaylandPresentationSupportKHRFunc)					(VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateWin32SurfaceKHRFunc)												(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkBool32				(VKAPI_CALL* GetPhysicalDeviceWin32PresentationSupportKHRFunc)						(VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetMemoryWin32HandleKHRFunc)											(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetMemoryWin32HandlePropertiesKHRFunc)									(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ImportSemaphoreWin32HandleKHRFunc)										(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetSemaphoreWin32HandleKHRFunc)										(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ImportFenceWin32HandleKHRFunc)											(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetFenceWin32HandleKHRFunc)											(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetMemoryWin32HandleNVFunc)											(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetPhysicalDeviceSurfacePresentModes2EXTFunc)							(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* AcquireFullScreenExclusiveModeEXTFunc)									(VkDevice device, VkSwapchainKHR swapchain);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* ReleaseFullScreenExclusiveModeEXTFunc)									(VkDevice device, VkSwapchainKHR swapchain);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetDeviceGroupSurfacePresentModes2EXTFunc)								(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateXcbSurfaceKHRFunc)												(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkBool32				(VKAPI_CALL* GetPhysicalDeviceXcbPresentationSupportKHRFunc)						(VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* CreateXlibSurfaceKHRFunc)												(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VKAPI_ATTR VkBool32				(VKAPI_CALL* GetPhysicalDeviceXlibPresentationSupportKHRFunc)						(VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* AcquireXlibDisplayEXTFunc)												(VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display);
typedef VKAPI_ATTR VkResult				(VKAPI_CALL* GetRandROutputDisplayEXTFunc)											(VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay);
