// Copyright (C) 2018 The Android Open Source Project
// Copyright (C) 2018 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Autogenerated module VkEventHandler
// (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
// Please do not modify directly;
// re-run android/scripts/generate-vulkan-sources.sh,
// or directly from Python by defining:
// VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
// CEREAL_OUTPUT_DIR: Where to put the generated sources.
// python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR

#pragma once

#include <vulkan/vulkan.h>


#include "goldfish_vk_private_defs.h"


namespace goldfish_vk {


class VkEncoder;
class VkEventHandler {
public:
    VkEventHandler();
    virtual ~VkEventHandler();
#ifdef VK_VERSION_1_0
    virtual VkResult on_vkCreateInstance(
    void* context,
        VkResult input_result,
        const VkInstanceCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkInstance* pInstance);
    virtual void on_vkDestroyInstance(
    void* context,
        VkInstance instance,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkEnumeratePhysicalDevices(
    void* context,
        VkResult input_result,
        VkInstance instance,
        uint32_t* pPhysicalDeviceCount,
        VkPhysicalDevice* pPhysicalDevices);
    virtual void on_vkGetPhysicalDeviceFeatures(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkPhysicalDeviceFeatures* pFeatures);
    virtual void on_vkGetPhysicalDeviceFormatProperties(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkFormat format,
        VkFormatProperties* pFormatProperties);
    virtual VkResult on_vkGetPhysicalDeviceImageFormatProperties(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkFormat format,
        VkImageType type,
        VkImageTiling tiling,
        VkImageUsageFlags usage,
        VkImageCreateFlags flags,
        VkImageFormatProperties* pImageFormatProperties);
    virtual void on_vkGetPhysicalDeviceProperties(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkPhysicalDeviceProperties* pProperties);
    virtual void on_vkGetPhysicalDeviceQueueFamilyProperties(
    void* context,
        VkPhysicalDevice physicalDevice,
        uint32_t* pQueueFamilyPropertyCount,
        VkQueueFamilyProperties* pQueueFamilyProperties);
    virtual void on_vkGetPhysicalDeviceMemoryProperties(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkPhysicalDeviceMemoryProperties* pMemoryProperties);
    virtual PFN_vkVoidFunction on_vkGetInstanceProcAddr(
    void* context,
        PFN_vkVoidFunction input_result,
        VkInstance instance,
        const char* pName);
    virtual PFN_vkVoidFunction on_vkGetDeviceProcAddr(
    void* context,
        PFN_vkVoidFunction input_result,
        VkDevice device,
        const char* pName);
    virtual VkResult on_vkCreateDevice(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        const VkDeviceCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkDevice* pDevice);
    virtual void on_vkDestroyDevice(
    void* context,
        VkDevice device,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkEnumerateInstanceExtensionProperties(
    void* context,
        VkResult input_result,
        const char* pLayerName,
        uint32_t* pPropertyCount,
        VkExtensionProperties* pProperties);
    virtual VkResult on_vkEnumerateDeviceExtensionProperties(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        const char* pLayerName,
        uint32_t* pPropertyCount,
        VkExtensionProperties* pProperties);
    virtual VkResult on_vkEnumerateInstanceLayerProperties(
    void* context,
        VkResult input_result,
        uint32_t* pPropertyCount,
        VkLayerProperties* pProperties);
    virtual VkResult on_vkEnumerateDeviceLayerProperties(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t* pPropertyCount,
        VkLayerProperties* pProperties);
    virtual void on_vkGetDeviceQueue(
    void* context,
        VkDevice device,
        uint32_t queueFamilyIndex,
        uint32_t queueIndex,
        VkQueue* pQueue);
    virtual VkResult on_vkQueueSubmit(
    void* context,
        VkResult input_result,
        VkQueue queue,
        uint32_t submitCount,
        const VkSubmitInfo* pSubmits,
        VkFence fence);
    virtual VkResult on_vkQueueWaitIdle(
    void* context,
        VkResult input_result,
        VkQueue queue);
    virtual VkResult on_vkDeviceWaitIdle(
    void* context,
        VkResult input_result,
        VkDevice device);
    virtual VkResult on_vkAllocateMemory(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkMemoryAllocateInfo* pAllocateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkDeviceMemory* pMemory);
    virtual void on_vkFreeMemory(
    void* context,
        VkDevice device,
        VkDeviceMemory memory,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkMapMemory(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkDeviceMemory memory,
        VkDeviceSize offset,
        VkDeviceSize size,
        VkMemoryMapFlags flags,
        void** ppData);
    virtual void on_vkUnmapMemory(
    void* context,
        VkDevice device,
        VkDeviceMemory memory);
    virtual VkResult on_vkFlushMappedMemoryRanges(
    void* context,
        VkResult input_result,
        VkDevice device,
        uint32_t memoryRangeCount,
        const VkMappedMemoryRange* pMemoryRanges);
    virtual VkResult on_vkInvalidateMappedMemoryRanges(
    void* context,
        VkResult input_result,
        VkDevice device,
        uint32_t memoryRangeCount,
        const VkMappedMemoryRange* pMemoryRanges);
    virtual void on_vkGetDeviceMemoryCommitment(
    void* context,
        VkDevice device,
        VkDeviceMemory memory,
        VkDeviceSize* pCommittedMemoryInBytes);
    virtual VkResult on_vkBindBufferMemory(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkBuffer buffer,
        VkDeviceMemory memory,
        VkDeviceSize memoryOffset);
    virtual VkResult on_vkBindImageMemory(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkImage image,
        VkDeviceMemory memory,
        VkDeviceSize memoryOffset);
    virtual void on_vkGetBufferMemoryRequirements(
    void* context,
        VkDevice device,
        VkBuffer buffer,
        VkMemoryRequirements* pMemoryRequirements);
    virtual void on_vkGetImageMemoryRequirements(
    void* context,
        VkDevice device,
        VkImage image,
        VkMemoryRequirements* pMemoryRequirements);
    virtual void on_vkGetImageSparseMemoryRequirements(
    void* context,
        VkDevice device,
        VkImage image,
        uint32_t* pSparseMemoryRequirementCount,
        VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
    virtual void on_vkGetPhysicalDeviceSparseImageFormatProperties(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkFormat format,
        VkImageType type,
        VkSampleCountFlagBits samples,
        VkImageUsageFlags usage,
        VkImageTiling tiling,
        uint32_t* pPropertyCount,
        VkSparseImageFormatProperties* pProperties);
    virtual VkResult on_vkQueueBindSparse(
    void* context,
        VkResult input_result,
        VkQueue queue,
        uint32_t bindInfoCount,
        const VkBindSparseInfo* pBindInfo,
        VkFence fence);
    virtual VkResult on_vkCreateFence(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkFenceCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkFence* pFence);
    virtual void on_vkDestroyFence(
    void* context,
        VkDevice device,
        VkFence fence,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkResetFences(
    void* context,
        VkResult input_result,
        VkDevice device,
        uint32_t fenceCount,
        const VkFence* pFences);
    virtual VkResult on_vkGetFenceStatus(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkFence fence);
    virtual VkResult on_vkWaitForFences(
    void* context,
        VkResult input_result,
        VkDevice device,
        uint32_t fenceCount,
        const VkFence* pFences,
        VkBool32 waitAll,
        uint64_t timeout);
    virtual VkResult on_vkCreateSemaphore(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkSemaphoreCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSemaphore* pSemaphore);
    virtual void on_vkDestroySemaphore(
    void* context,
        VkDevice device,
        VkSemaphore semaphore,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateEvent(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkEventCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkEvent* pEvent);
    virtual void on_vkDestroyEvent(
    void* context,
        VkDevice device,
        VkEvent event,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkGetEventStatus(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkEvent event);
    virtual VkResult on_vkSetEvent(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkEvent event);
    virtual VkResult on_vkResetEvent(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkEvent event);
    virtual VkResult on_vkCreateQueryPool(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkQueryPoolCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkQueryPool* pQueryPool);
    virtual void on_vkDestroyQueryPool(
    void* context,
        VkDevice device,
        VkQueryPool queryPool,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkGetQueryPoolResults(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkQueryPool queryPool,
        uint32_t firstQuery,
        uint32_t queryCount,
        size_t dataSize,
        void* pData,
        VkDeviceSize stride,
        VkQueryResultFlags flags);
    virtual VkResult on_vkCreateBuffer(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkBufferCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkBuffer* pBuffer);
    virtual void on_vkDestroyBuffer(
    void* context,
        VkDevice device,
        VkBuffer buffer,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateBufferView(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkBufferViewCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkBufferView* pView);
    virtual void on_vkDestroyBufferView(
    void* context,
        VkDevice device,
        VkBufferView bufferView,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateImage(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkImageCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkImage* pImage);
    virtual void on_vkDestroyImage(
    void* context,
        VkDevice device,
        VkImage image,
        const VkAllocationCallbacks* pAllocator);
    virtual void on_vkGetImageSubresourceLayout(
    void* context,
        VkDevice device,
        VkImage image,
        const VkImageSubresource* pSubresource,
        VkSubresourceLayout* pLayout);
    virtual VkResult on_vkCreateImageView(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkImageViewCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkImageView* pView);
    virtual void on_vkDestroyImageView(
    void* context,
        VkDevice device,
        VkImageView imageView,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateShaderModule(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkShaderModuleCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkShaderModule* pShaderModule);
    virtual void on_vkDestroyShaderModule(
    void* context,
        VkDevice device,
        VkShaderModule shaderModule,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreatePipelineCache(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkPipelineCacheCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkPipelineCache* pPipelineCache);
    virtual void on_vkDestroyPipelineCache(
    void* context,
        VkDevice device,
        VkPipelineCache pipelineCache,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkGetPipelineCacheData(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkPipelineCache pipelineCache,
        size_t* pDataSize,
        void* pData);
    virtual VkResult on_vkMergePipelineCaches(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkPipelineCache dstCache,
        uint32_t srcCacheCount,
        const VkPipelineCache* pSrcCaches);
    virtual VkResult on_vkCreateGraphicsPipelines(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkPipelineCache pipelineCache,
        uint32_t createInfoCount,
        const VkGraphicsPipelineCreateInfo* pCreateInfos,
        const VkAllocationCallbacks* pAllocator,
        VkPipeline* pPipelines);
    virtual VkResult on_vkCreateComputePipelines(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkPipelineCache pipelineCache,
        uint32_t createInfoCount,
        const VkComputePipelineCreateInfo* pCreateInfos,
        const VkAllocationCallbacks* pAllocator,
        VkPipeline* pPipelines);
    virtual void on_vkDestroyPipeline(
    void* context,
        VkDevice device,
        VkPipeline pipeline,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreatePipelineLayout(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkPipelineLayoutCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkPipelineLayout* pPipelineLayout);
    virtual void on_vkDestroyPipelineLayout(
    void* context,
        VkDevice device,
        VkPipelineLayout pipelineLayout,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateSampler(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkSamplerCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSampler* pSampler);
    virtual void on_vkDestroySampler(
    void* context,
        VkDevice device,
        VkSampler sampler,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateDescriptorSetLayout(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkDescriptorSetLayout* pSetLayout);
    virtual void on_vkDestroyDescriptorSetLayout(
    void* context,
        VkDevice device,
        VkDescriptorSetLayout descriptorSetLayout,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateDescriptorPool(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDescriptorPoolCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkDescriptorPool* pDescriptorPool);
    virtual void on_vkDestroyDescriptorPool(
    void* context,
        VkDevice device,
        VkDescriptorPool descriptorPool,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkResetDescriptorPool(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkDescriptorPool descriptorPool,
        VkDescriptorPoolResetFlags flags);
    virtual VkResult on_vkAllocateDescriptorSets(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDescriptorSetAllocateInfo* pAllocateInfo,
        VkDescriptorSet* pDescriptorSets);
    virtual VkResult on_vkFreeDescriptorSets(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkDescriptorPool descriptorPool,
        uint32_t descriptorSetCount,
        const VkDescriptorSet* pDescriptorSets);
    virtual void on_vkUpdateDescriptorSets(
    void* context,
        VkDevice device,
        uint32_t descriptorWriteCount,
        const VkWriteDescriptorSet* pDescriptorWrites,
        uint32_t descriptorCopyCount,
        const VkCopyDescriptorSet* pDescriptorCopies);
    virtual VkResult on_vkCreateFramebuffer(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkFramebufferCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkFramebuffer* pFramebuffer);
    virtual void on_vkDestroyFramebuffer(
    void* context,
        VkDevice device,
        VkFramebuffer framebuffer,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateRenderPass(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkRenderPassCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkRenderPass* pRenderPass);
    virtual void on_vkDestroyRenderPass(
    void* context,
        VkDevice device,
        VkRenderPass renderPass,
        const VkAllocationCallbacks* pAllocator);
    virtual void on_vkGetRenderAreaGranularity(
    void* context,
        VkDevice device,
        VkRenderPass renderPass,
        VkExtent2D* pGranularity);
    virtual VkResult on_vkCreateCommandPool(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkCommandPoolCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkCommandPool* pCommandPool);
    virtual void on_vkDestroyCommandPool(
    void* context,
        VkDevice device,
        VkCommandPool commandPool,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkResetCommandPool(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkCommandPool commandPool,
        VkCommandPoolResetFlags flags);
    virtual VkResult on_vkAllocateCommandBuffers(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkCommandBufferAllocateInfo* pAllocateInfo,
        VkCommandBuffer* pCommandBuffers);
    virtual void on_vkFreeCommandBuffers(
    void* context,
        VkDevice device,
        VkCommandPool commandPool,
        uint32_t commandBufferCount,
        const VkCommandBuffer* pCommandBuffers);
    virtual VkResult on_vkBeginCommandBuffer(
    void* context,
        VkResult input_result,
        VkCommandBuffer commandBuffer,
        const VkCommandBufferBeginInfo* pBeginInfo);
    virtual VkResult on_vkEndCommandBuffer(
    void* context,
        VkResult input_result,
        VkCommandBuffer commandBuffer);
    virtual VkResult on_vkResetCommandBuffer(
    void* context,
        VkResult input_result,
        VkCommandBuffer commandBuffer,
        VkCommandBufferResetFlags flags);
    virtual void on_vkCmdBindPipeline(
    void* context,
        VkCommandBuffer commandBuffer,
        VkPipelineBindPoint pipelineBindPoint,
        VkPipeline pipeline);
    virtual void on_vkCmdSetViewport(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t firstViewport,
        uint32_t viewportCount,
        const VkViewport* pViewports);
    virtual void on_vkCmdSetScissor(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t firstScissor,
        uint32_t scissorCount,
        const VkRect2D* pScissors);
    virtual void on_vkCmdSetLineWidth(
    void* context,
        VkCommandBuffer commandBuffer,
        float lineWidth);
    virtual void on_vkCmdSetDepthBias(
    void* context,
        VkCommandBuffer commandBuffer,
        float depthBiasConstantFactor,
        float depthBiasClamp,
        float depthBiasSlopeFactor);
    virtual void on_vkCmdSetBlendConstants(
    void* context,
        VkCommandBuffer commandBuffer,
        const float blendConstants);
    virtual void on_vkCmdSetDepthBounds(
    void* context,
        VkCommandBuffer commandBuffer,
        float minDepthBounds,
        float maxDepthBounds);
    virtual void on_vkCmdSetStencilCompareMask(
    void* context,
        VkCommandBuffer commandBuffer,
        VkStencilFaceFlags faceMask,
        uint32_t compareMask);
    virtual void on_vkCmdSetStencilWriteMask(
    void* context,
        VkCommandBuffer commandBuffer,
        VkStencilFaceFlags faceMask,
        uint32_t writeMask);
    virtual void on_vkCmdSetStencilReference(
    void* context,
        VkCommandBuffer commandBuffer,
        VkStencilFaceFlags faceMask,
        uint32_t reference);
    virtual void on_vkCmdBindDescriptorSets(
    void* context,
        VkCommandBuffer commandBuffer,
        VkPipelineBindPoint pipelineBindPoint,
        VkPipelineLayout layout,
        uint32_t firstSet,
        uint32_t descriptorSetCount,
        const VkDescriptorSet* pDescriptorSets,
        uint32_t dynamicOffsetCount,
        const uint32_t* pDynamicOffsets);
    virtual void on_vkCmdBindIndexBuffer(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer buffer,
        VkDeviceSize offset,
        VkIndexType indexType);
    virtual void on_vkCmdBindVertexBuffers(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t firstBinding,
        uint32_t bindingCount,
        const VkBuffer* pBuffers,
        const VkDeviceSize* pOffsets);
    virtual void on_vkCmdDraw(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t vertexCount,
        uint32_t instanceCount,
        uint32_t firstVertex,
        uint32_t firstInstance);
    virtual void on_vkCmdDrawIndexed(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t indexCount,
        uint32_t instanceCount,
        uint32_t firstIndex,
        int32_t vertexOffset,
        uint32_t firstInstance);
    virtual void on_vkCmdDrawIndirect(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer buffer,
        VkDeviceSize offset,
        uint32_t drawCount,
        uint32_t stride);
    virtual void on_vkCmdDrawIndexedIndirect(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer buffer,
        VkDeviceSize offset,
        uint32_t drawCount,
        uint32_t stride);
    virtual void on_vkCmdDispatch(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t groupCountX,
        uint32_t groupCountY,
        uint32_t groupCountZ);
    virtual void on_vkCmdDispatchIndirect(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer buffer,
        VkDeviceSize offset);
    virtual void on_vkCmdCopyBuffer(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer srcBuffer,
        VkBuffer dstBuffer,
        uint32_t regionCount,
        const VkBufferCopy* pRegions);
    virtual void on_vkCmdCopyImage(
    void* context,
        VkCommandBuffer commandBuffer,
        VkImage srcImage,
        VkImageLayout srcImageLayout,
        VkImage dstImage,
        VkImageLayout dstImageLayout,
        uint32_t regionCount,
        const VkImageCopy* pRegions);
    virtual void on_vkCmdBlitImage(
    void* context,
        VkCommandBuffer commandBuffer,
        VkImage srcImage,
        VkImageLayout srcImageLayout,
        VkImage dstImage,
        VkImageLayout dstImageLayout,
        uint32_t regionCount,
        const VkImageBlit* pRegions,
        VkFilter filter);
    virtual void on_vkCmdCopyBufferToImage(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer srcBuffer,
        VkImage dstImage,
        VkImageLayout dstImageLayout,
        uint32_t regionCount,
        const VkBufferImageCopy* pRegions);
    virtual void on_vkCmdCopyImageToBuffer(
    void* context,
        VkCommandBuffer commandBuffer,
        VkImage srcImage,
        VkImageLayout srcImageLayout,
        VkBuffer dstBuffer,
        uint32_t regionCount,
        const VkBufferImageCopy* pRegions);
    virtual void on_vkCmdUpdateBuffer(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer dstBuffer,
        VkDeviceSize dstOffset,
        VkDeviceSize dataSize,
        const void* pData);
    virtual void on_vkCmdFillBuffer(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer dstBuffer,
        VkDeviceSize dstOffset,
        VkDeviceSize size,
        uint32_t data);
    virtual void on_vkCmdClearColorImage(
    void* context,
        VkCommandBuffer commandBuffer,
        VkImage image,
        VkImageLayout imageLayout,
        const VkClearColorValue* pColor,
        uint32_t rangeCount,
        const VkImageSubresourceRange* pRanges);
    virtual void on_vkCmdClearDepthStencilImage(
    void* context,
        VkCommandBuffer commandBuffer,
        VkImage image,
        VkImageLayout imageLayout,
        const VkClearDepthStencilValue* pDepthStencil,
        uint32_t rangeCount,
        const VkImageSubresourceRange* pRanges);
    virtual void on_vkCmdClearAttachments(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t attachmentCount,
        const VkClearAttachment* pAttachments,
        uint32_t rectCount,
        const VkClearRect* pRects);
    virtual void on_vkCmdResolveImage(
    void* context,
        VkCommandBuffer commandBuffer,
        VkImage srcImage,
        VkImageLayout srcImageLayout,
        VkImage dstImage,
        VkImageLayout dstImageLayout,
        uint32_t regionCount,
        const VkImageResolve* pRegions);
    virtual void on_vkCmdSetEvent(
    void* context,
        VkCommandBuffer commandBuffer,
        VkEvent event,
        VkPipelineStageFlags stageMask);
    virtual void on_vkCmdResetEvent(
    void* context,
        VkCommandBuffer commandBuffer,
        VkEvent event,
        VkPipelineStageFlags stageMask);
    virtual void on_vkCmdWaitEvents(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t eventCount,
        const VkEvent* pEvents,
        VkPipelineStageFlags srcStageMask,
        VkPipelineStageFlags dstStageMask,
        uint32_t memoryBarrierCount,
        const VkMemoryBarrier* pMemoryBarriers,
        uint32_t bufferMemoryBarrierCount,
        const VkBufferMemoryBarrier* pBufferMemoryBarriers,
        uint32_t imageMemoryBarrierCount,
        const VkImageMemoryBarrier* pImageMemoryBarriers);
    virtual void on_vkCmdPipelineBarrier(
    void* context,
        VkCommandBuffer commandBuffer,
        VkPipelineStageFlags srcStageMask,
        VkPipelineStageFlags dstStageMask,
        VkDependencyFlags dependencyFlags,
        uint32_t memoryBarrierCount,
        const VkMemoryBarrier* pMemoryBarriers,
        uint32_t bufferMemoryBarrierCount,
        const VkBufferMemoryBarrier* pBufferMemoryBarriers,
        uint32_t imageMemoryBarrierCount,
        const VkImageMemoryBarrier* pImageMemoryBarriers);
    virtual void on_vkCmdBeginQuery(
    void* context,
        VkCommandBuffer commandBuffer,
        VkQueryPool queryPool,
        uint32_t query,
        VkQueryControlFlags flags);
    virtual void on_vkCmdEndQuery(
    void* context,
        VkCommandBuffer commandBuffer,
        VkQueryPool queryPool,
        uint32_t query);
    virtual void on_vkCmdResetQueryPool(
    void* context,
        VkCommandBuffer commandBuffer,
        VkQueryPool queryPool,
        uint32_t firstQuery,
        uint32_t queryCount);
    virtual void on_vkCmdWriteTimestamp(
    void* context,
        VkCommandBuffer commandBuffer,
        VkPipelineStageFlagBits pipelineStage,
        VkQueryPool queryPool,
        uint32_t query);
    virtual void on_vkCmdCopyQueryPoolResults(
    void* context,
        VkCommandBuffer commandBuffer,
        VkQueryPool queryPool,
        uint32_t firstQuery,
        uint32_t queryCount,
        VkBuffer dstBuffer,
        VkDeviceSize dstOffset,
        VkDeviceSize stride,
        VkQueryResultFlags flags);
    virtual void on_vkCmdPushConstants(
    void* context,
        VkCommandBuffer commandBuffer,
        VkPipelineLayout layout,
        VkShaderStageFlags stageFlags,
        uint32_t offset,
        uint32_t size,
        const void* pValues);
    virtual void on_vkCmdBeginRenderPass(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkRenderPassBeginInfo* pRenderPassBegin,
        VkSubpassContents contents);
    virtual void on_vkCmdNextSubpass(
    void* context,
        VkCommandBuffer commandBuffer,
        VkSubpassContents contents);
    virtual void on_vkCmdEndRenderPass(
    void* context,
        VkCommandBuffer commandBuffer);
    virtual void on_vkCmdExecuteCommands(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t commandBufferCount,
        const VkCommandBuffer* pCommandBuffers);
#endif
#ifdef VK_VERSION_1_1
    virtual VkResult on_vkEnumerateInstanceVersion(
    void* context,
        VkResult input_result,
        uint32_t* pApiVersion);
    virtual VkResult on_vkBindBufferMemory2(
    void* context,
        VkResult input_result,
        VkDevice device,
        uint32_t bindInfoCount,
        const VkBindBufferMemoryInfo* pBindInfos);
    virtual VkResult on_vkBindImageMemory2(
    void* context,
        VkResult input_result,
        VkDevice device,
        uint32_t bindInfoCount,
        const VkBindImageMemoryInfo* pBindInfos);
    virtual void on_vkGetDeviceGroupPeerMemoryFeatures(
    void* context,
        VkDevice device,
        uint32_t heapIndex,
        uint32_t localDeviceIndex,
        uint32_t remoteDeviceIndex,
        VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
    virtual void on_vkCmdSetDeviceMask(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t deviceMask);
    virtual void on_vkCmdDispatchBase(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t baseGroupX,
        uint32_t baseGroupY,
        uint32_t baseGroupZ,
        uint32_t groupCountX,
        uint32_t groupCountY,
        uint32_t groupCountZ);
    virtual VkResult on_vkEnumeratePhysicalDeviceGroups(
    void* context,
        VkResult input_result,
        VkInstance instance,
        uint32_t* pPhysicalDeviceGroupCount,
        VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
    virtual void on_vkGetImageMemoryRequirements2(
    void* context,
        VkDevice device,
        const VkImageMemoryRequirementsInfo2* pInfo,
        VkMemoryRequirements2* pMemoryRequirements);
    virtual void on_vkGetBufferMemoryRequirements2(
    void* context,
        VkDevice device,
        const VkBufferMemoryRequirementsInfo2* pInfo,
        VkMemoryRequirements2* pMemoryRequirements);
    virtual void on_vkGetImageSparseMemoryRequirements2(
    void* context,
        VkDevice device,
        const VkImageSparseMemoryRequirementsInfo2* pInfo,
        uint32_t* pSparseMemoryRequirementCount,
        VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
    virtual void on_vkGetPhysicalDeviceFeatures2(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkPhysicalDeviceFeatures2* pFeatures);
    virtual void on_vkGetPhysicalDeviceProperties2(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkPhysicalDeviceProperties2* pProperties);
    virtual void on_vkGetPhysicalDeviceFormatProperties2(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkFormat format,
        VkFormatProperties2* pFormatProperties);
    virtual VkResult on_vkGetPhysicalDeviceImageFormatProperties2(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
        VkImageFormatProperties2* pImageFormatProperties);
    virtual void on_vkGetPhysicalDeviceQueueFamilyProperties2(
    void* context,
        VkPhysicalDevice physicalDevice,
        uint32_t* pQueueFamilyPropertyCount,
        VkQueueFamilyProperties2* pQueueFamilyProperties);
    virtual void on_vkGetPhysicalDeviceMemoryProperties2(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
    virtual void on_vkGetPhysicalDeviceSparseImageFormatProperties2(
    void* context,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
        uint32_t* pPropertyCount,
        VkSparseImageFormatProperties2* pProperties);
    virtual void on_vkTrimCommandPool(
    void* context,
        VkDevice device,
        VkCommandPool commandPool,
        VkCommandPoolTrimFlags flags);
    virtual void on_vkGetDeviceQueue2(
    void* context,
        VkDevice device,
        const VkDeviceQueueInfo2* pQueueInfo,
        VkQueue* pQueue);
    virtual VkResult on_vkCreateSamplerYcbcrConversion(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSamplerYcbcrConversion* pYcbcrConversion);
    virtual void on_vkDestroySamplerYcbcrConversion(
    void* context,
        VkDevice device,
        VkSamplerYcbcrConversion ycbcrConversion,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateDescriptorUpdateTemplate(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
    virtual void on_vkDestroyDescriptorUpdateTemplate(
    void* context,
        VkDevice device,
        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
        const VkAllocationCallbacks* pAllocator);
    virtual void on_vkUpdateDescriptorSetWithTemplate(
    void* context,
        VkDevice device,
        VkDescriptorSet descriptorSet,
        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
        const void* pData);
    virtual void on_vkGetPhysicalDeviceExternalBufferProperties(
    void* context,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
        VkExternalBufferProperties* pExternalBufferProperties);
    virtual void on_vkGetPhysicalDeviceExternalFenceProperties(
    void* context,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
        VkExternalFenceProperties* pExternalFenceProperties);
    virtual void on_vkGetPhysicalDeviceExternalSemaphoreProperties(
    void* context,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
        VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
    virtual void on_vkGetDescriptorSetLayoutSupport(
    void* context,
        VkDevice device,
        const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
        VkDescriptorSetLayoutSupport* pSupport);
#endif
#ifdef VK_KHR_surface
    virtual void on_vkDestroySurfaceKHR(
    void* context,
        VkInstance instance,
        VkSurfaceKHR surface,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkGetPhysicalDeviceSurfaceSupportKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t queueFamilyIndex,
        VkSurfaceKHR surface,
        VkBool32* pSupported);
    virtual VkResult on_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkSurfaceKHR surface,
        VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
    virtual VkResult on_vkGetPhysicalDeviceSurfaceFormatsKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkSurfaceKHR surface,
        uint32_t* pSurfaceFormatCount,
        VkSurfaceFormatKHR* pSurfaceFormats);
    virtual VkResult on_vkGetPhysicalDeviceSurfacePresentModesKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkSurfaceKHR surface,
        uint32_t* pPresentModeCount,
        VkPresentModeKHR* pPresentModes);
#endif
#ifdef VK_KHR_swapchain
    virtual VkResult on_vkCreateSwapchainKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkSwapchainCreateInfoKHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSwapchainKHR* pSwapchain);
    virtual void on_vkDestroySwapchainKHR(
    void* context,
        VkDevice device,
        VkSwapchainKHR swapchain,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkGetSwapchainImagesKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkSwapchainKHR swapchain,
        uint32_t* pSwapchainImageCount,
        VkImage* pSwapchainImages);
    virtual VkResult on_vkAcquireNextImageKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkSwapchainKHR swapchain,
        uint64_t timeout,
        VkSemaphore semaphore,
        VkFence fence,
        uint32_t* pImageIndex);
    virtual VkResult on_vkQueuePresentKHR(
    void* context,
        VkResult input_result,
        VkQueue queue,
        const VkPresentInfoKHR* pPresentInfo);
    virtual VkResult on_vkGetDeviceGroupPresentCapabilitiesKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
    virtual VkResult on_vkGetDeviceGroupSurfacePresentModesKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkSurfaceKHR surface,
        VkDeviceGroupPresentModeFlagsKHR* pModes);
    virtual VkResult on_vkGetPhysicalDevicePresentRectanglesKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkSurfaceKHR surface,
        uint32_t* pRectCount,
        VkRect2D* pRects);
    virtual VkResult on_vkAcquireNextImage2KHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkAcquireNextImageInfoKHR* pAcquireInfo,
        uint32_t* pImageIndex);
#endif
#ifdef VK_KHR_display
    virtual VkResult on_vkGetPhysicalDeviceDisplayPropertiesKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t* pPropertyCount,
        VkDisplayPropertiesKHR* pProperties);
    virtual VkResult on_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t* pPropertyCount,
        VkDisplayPlanePropertiesKHR* pProperties);
    virtual VkResult on_vkGetDisplayPlaneSupportedDisplaysKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t planeIndex,
        uint32_t* pDisplayCount,
        VkDisplayKHR* pDisplays);
    virtual VkResult on_vkGetDisplayModePropertiesKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkDisplayKHR display,
        uint32_t* pPropertyCount,
        VkDisplayModePropertiesKHR* pProperties);
    virtual VkResult on_vkCreateDisplayModeKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkDisplayKHR display,
        const VkDisplayModeCreateInfoKHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkDisplayModeKHR* pMode);
    virtual VkResult on_vkGetDisplayPlaneCapabilitiesKHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkDisplayModeKHR mode,
        uint32_t planeIndex,
        VkDisplayPlaneCapabilitiesKHR* pCapabilities);
    virtual VkResult on_vkCreateDisplayPlaneSurfaceKHR(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
#endif
#ifdef VK_KHR_display_swapchain
    virtual VkResult on_vkCreateSharedSwapchainsKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        uint32_t swapchainCount,
        const VkSwapchainCreateInfoKHR* pCreateInfos,
        const VkAllocationCallbacks* pAllocator,
        VkSwapchainKHR* pSwapchains);
#endif
#ifdef VK_KHR_xlib_surface
    virtual VkResult on_vkCreateXlibSurfaceKHR(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
    virtual VkBool32 on_vkGetPhysicalDeviceXlibPresentationSupportKHR(
    void* context,
        VkBool32 input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t queueFamilyIndex,
        Display* dpy,
        VisualID visualID);
#endif
#ifdef VK_KHR_xcb_surface
    virtual VkResult on_vkCreateXcbSurfaceKHR(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
    virtual VkBool32 on_vkGetPhysicalDeviceXcbPresentationSupportKHR(
    void* context,
        VkBool32 input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t queueFamilyIndex,
        xcb_connection_t* connection,
        xcb_visualid_t visual_id);
#endif
#ifdef VK_KHR_wayland_surface
    virtual VkResult on_vkCreateWaylandSurfaceKHR(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
    virtual VkBool32 on_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
    void* context,
        VkBool32 input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t queueFamilyIndex,
        wl_display* display);
#endif
#ifdef VK_KHR_mir_surface
    virtual VkResult on_vkCreateMirSurfaceKHR(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkMirSurfaceCreateInfoKHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
    virtual VkBool32 on_vkGetPhysicalDeviceMirPresentationSupportKHR(
    void* context,
        VkBool32 input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t queueFamilyIndex,
        MirConnection* connection);
#endif
#ifdef VK_KHR_android_surface
    virtual VkResult on_vkCreateAndroidSurfaceKHR(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
#endif
#ifdef VK_KHR_win32_surface
    virtual VkResult on_vkCreateWin32SurfaceKHR(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
    virtual VkBool32 on_vkGetPhysicalDeviceWin32PresentationSupportKHR(
    void* context,
        VkBool32 input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t queueFamilyIndex);
#endif
#ifdef VK_KHR_sampler_mirror_clamp_to_edge
#endif
#ifdef VK_KHR_multiview
#endif
#ifdef VK_KHR_get_physical_device_properties2
    virtual void on_vkGetPhysicalDeviceFeatures2KHR(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkPhysicalDeviceFeatures2* pFeatures);
    virtual void on_vkGetPhysicalDeviceProperties2KHR(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkPhysicalDeviceProperties2* pProperties);
    virtual void on_vkGetPhysicalDeviceFormatProperties2KHR(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkFormat format,
        VkFormatProperties2* pFormatProperties);
    virtual VkResult on_vkGetPhysicalDeviceImageFormatProperties2KHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
        VkImageFormatProperties2* pImageFormatProperties);
    virtual void on_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
    void* context,
        VkPhysicalDevice physicalDevice,
        uint32_t* pQueueFamilyPropertyCount,
        VkQueueFamilyProperties2* pQueueFamilyProperties);
    virtual void on_vkGetPhysicalDeviceMemoryProperties2KHR(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
    virtual void on_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
    void* context,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
        uint32_t* pPropertyCount,
        VkSparseImageFormatProperties2* pProperties);
#endif
#ifdef VK_KHR_device_group
    virtual void on_vkGetDeviceGroupPeerMemoryFeaturesKHR(
    void* context,
        VkDevice device,
        uint32_t heapIndex,
        uint32_t localDeviceIndex,
        uint32_t remoteDeviceIndex,
        VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
    virtual void on_vkCmdSetDeviceMaskKHR(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t deviceMask);
    virtual void on_vkCmdDispatchBaseKHR(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t baseGroupX,
        uint32_t baseGroupY,
        uint32_t baseGroupZ,
        uint32_t groupCountX,
        uint32_t groupCountY,
        uint32_t groupCountZ);
#endif
#ifdef VK_KHR_shader_draw_parameters
#endif
#ifdef VK_KHR_maintenance1
    virtual void on_vkTrimCommandPoolKHR(
    void* context,
        VkDevice device,
        VkCommandPool commandPool,
        VkCommandPoolTrimFlags flags);
#endif
#ifdef VK_KHR_device_group_creation
    virtual VkResult on_vkEnumeratePhysicalDeviceGroupsKHR(
    void* context,
        VkResult input_result,
        VkInstance instance,
        uint32_t* pPhysicalDeviceGroupCount,
        VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
#endif
#ifdef VK_KHR_external_memory_capabilities
    virtual void on_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
    void* context,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
        VkExternalBufferProperties* pExternalBufferProperties);
#endif
#ifdef VK_KHR_external_memory
#endif
#ifdef VK_KHR_external_memory_win32
    virtual VkResult on_vkGetMemoryWin32HandleKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
        HANDLE* pHandle);
    virtual VkResult on_vkGetMemoryWin32HandlePropertiesKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkExternalMemoryHandleTypeFlagBits handleType,
        HANDLE handle,
        VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
#endif
#ifdef VK_KHR_external_memory_fd
    virtual VkResult on_vkGetMemoryFdKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkMemoryGetFdInfoKHR* pGetFdInfo,
        int* pFd);
    virtual VkResult on_vkGetMemoryFdPropertiesKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkExternalMemoryHandleTypeFlagBits handleType,
        int fd,
        VkMemoryFdPropertiesKHR* pMemoryFdProperties);
#endif
#ifdef VK_KHR_win32_keyed_mutex
#endif
#ifdef VK_KHR_external_semaphore_capabilities
    virtual void on_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
    void* context,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
        VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
#endif
#ifdef VK_KHR_external_semaphore
#endif
#ifdef VK_KHR_external_semaphore_win32
    virtual VkResult on_vkImportSemaphoreWin32HandleKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
    virtual VkResult on_vkGetSemaphoreWin32HandleKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
        HANDLE* pHandle);
#endif
#ifdef VK_KHR_external_semaphore_fd
    virtual VkResult on_vkImportSemaphoreFdKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
    virtual VkResult on_vkGetSemaphoreFdKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
        int* pFd);
#endif
#ifdef VK_KHR_push_descriptor
    virtual void on_vkCmdPushDescriptorSetKHR(
    void* context,
        VkCommandBuffer commandBuffer,
        VkPipelineBindPoint pipelineBindPoint,
        VkPipelineLayout layout,
        uint32_t set,
        uint32_t descriptorWriteCount,
        const VkWriteDescriptorSet* pDescriptorWrites);
    virtual void on_vkCmdPushDescriptorSetWithTemplateKHR(
    void* context,
        VkCommandBuffer commandBuffer,
        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
        VkPipelineLayout layout,
        uint32_t set,
        const void* pData);
#endif
#ifdef VK_KHR_16bit_storage
#endif
#ifdef VK_KHR_incremental_present
#endif
#ifdef VK_KHR_descriptor_update_template
    virtual VkResult on_vkCreateDescriptorUpdateTemplateKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
    virtual void on_vkDestroyDescriptorUpdateTemplateKHR(
    void* context,
        VkDevice device,
        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
        const VkAllocationCallbacks* pAllocator);
    virtual void on_vkUpdateDescriptorSetWithTemplateKHR(
    void* context,
        VkDevice device,
        VkDescriptorSet descriptorSet,
        VkDescriptorUpdateTemplate descriptorUpdateTemplate,
        const void* pData);
#endif
#ifdef VK_KHR_create_renderpass2
    virtual VkResult on_vkCreateRenderPass2KHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkRenderPassCreateInfo2KHR* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkRenderPass* pRenderPass);
    virtual void on_vkCmdBeginRenderPass2KHR(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkRenderPassBeginInfo* pRenderPassBegin,
        const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
    virtual void on_vkCmdNextSubpass2KHR(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
        const VkSubpassEndInfoKHR* pSubpassEndInfo);
    virtual void on_vkCmdEndRenderPass2KHR(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkSubpassEndInfoKHR* pSubpassEndInfo);
#endif
#ifdef VK_KHR_shared_presentable_image
    virtual VkResult on_vkGetSwapchainStatusKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkSwapchainKHR swapchain);
#endif
#ifdef VK_KHR_external_fence_capabilities
    virtual void on_vkGetPhysicalDeviceExternalFencePropertiesKHR(
    void* context,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
        VkExternalFenceProperties* pExternalFenceProperties);
#endif
#ifdef VK_KHR_external_fence
#endif
#ifdef VK_KHR_external_fence_win32
    virtual VkResult on_vkImportFenceWin32HandleKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
    virtual VkResult on_vkGetFenceWin32HandleKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
        HANDLE* pHandle);
#endif
#ifdef VK_KHR_external_fence_fd
    virtual VkResult on_vkImportFenceFdKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
    virtual VkResult on_vkGetFenceFdKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkFenceGetFdInfoKHR* pGetFdInfo,
        int* pFd);
#endif
#ifdef VK_KHR_maintenance2
#endif
#ifdef VK_KHR_get_surface_capabilities2
    virtual VkResult on_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
        VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
    virtual VkResult on_vkGetPhysicalDeviceSurfaceFormats2KHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
        uint32_t* pSurfaceFormatCount,
        VkSurfaceFormat2KHR* pSurfaceFormats);
#endif
#ifdef VK_KHR_variable_pointers
#endif
#ifdef VK_KHR_get_display_properties2
    virtual VkResult on_vkGetPhysicalDeviceDisplayProperties2KHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t* pPropertyCount,
        VkDisplayProperties2KHR* pProperties);
    virtual VkResult on_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        uint32_t* pPropertyCount,
        VkDisplayPlaneProperties2KHR* pProperties);
    virtual VkResult on_vkGetDisplayModeProperties2KHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkDisplayKHR display,
        uint32_t* pPropertyCount,
        VkDisplayModeProperties2KHR* pProperties);
    virtual VkResult on_vkGetDisplayPlaneCapabilities2KHR(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
        VkDisplayPlaneCapabilities2KHR* pCapabilities);
#endif
#ifdef VK_KHR_dedicated_allocation
#endif
#ifdef VK_KHR_storage_buffer_storage_class
#endif
#ifdef VK_KHR_relaxed_block_layout
#endif
#ifdef VK_KHR_get_memory_requirements2
    virtual void on_vkGetImageMemoryRequirements2KHR(
    void* context,
        VkDevice device,
        const VkImageMemoryRequirementsInfo2* pInfo,
        VkMemoryRequirements2* pMemoryRequirements);
    virtual void on_vkGetBufferMemoryRequirements2KHR(
    void* context,
        VkDevice device,
        const VkBufferMemoryRequirementsInfo2* pInfo,
        VkMemoryRequirements2* pMemoryRequirements);
    virtual void on_vkGetImageSparseMemoryRequirements2KHR(
    void* context,
        VkDevice device,
        const VkImageSparseMemoryRequirementsInfo2* pInfo,
        uint32_t* pSparseMemoryRequirementCount,
        VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
#endif
#ifdef VK_KHR_image_format_list
#endif
#ifdef VK_KHR_sampler_ycbcr_conversion
    virtual VkResult on_vkCreateSamplerYcbcrConversionKHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSamplerYcbcrConversion* pYcbcrConversion);
    virtual void on_vkDestroySamplerYcbcrConversionKHR(
    void* context,
        VkDevice device,
        VkSamplerYcbcrConversion ycbcrConversion,
        const VkAllocationCallbacks* pAllocator);
#endif
#ifdef VK_KHR_bind_memory2
    virtual VkResult on_vkBindBufferMemory2KHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        uint32_t bindInfoCount,
        const VkBindBufferMemoryInfo* pBindInfos);
    virtual VkResult on_vkBindImageMemory2KHR(
    void* context,
        VkResult input_result,
        VkDevice device,
        uint32_t bindInfoCount,
        const VkBindImageMemoryInfo* pBindInfos);
#endif
#ifdef VK_KHR_maintenance3
    virtual void on_vkGetDescriptorSetLayoutSupportKHR(
    void* context,
        VkDevice device,
        const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
        VkDescriptorSetLayoutSupport* pSupport);
#endif
#ifdef VK_KHR_draw_indirect_count
    virtual void on_vkCmdDrawIndirectCountKHR(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer buffer,
        VkDeviceSize offset,
        VkBuffer countBuffer,
        VkDeviceSize countBufferOffset,
        uint32_t maxDrawCount,
        uint32_t stride);
    virtual void on_vkCmdDrawIndexedIndirectCountKHR(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer buffer,
        VkDeviceSize offset,
        VkBuffer countBuffer,
        VkDeviceSize countBufferOffset,
        uint32_t maxDrawCount,
        uint32_t stride);
#endif
#ifdef VK_KHR_8bit_storage
#endif
#ifdef VK_ANDROID_native_buffer
    virtual VkResult on_vkGetSwapchainGrallocUsageANDROID(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkFormat format,
        VkImageUsageFlags imageUsage,
        int* grallocUsage);
    virtual VkResult on_vkAcquireImageANDROID(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkImage image,
        int nativeFenceFd,
        VkSemaphore semaphore,
        VkFence fence);
    virtual VkResult on_vkQueueSignalReleaseImageANDROID(
    void* context,
        VkResult input_result,
        VkQueue queue,
        uint32_t waitSemaphoreCount,
        const VkSemaphore* pWaitSemaphores,
        VkImage image,
        int* pNativeFenceFd);
#endif
#ifdef VK_EXT_debug_report
    virtual VkResult on_vkCreateDebugReportCallbackEXT(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkDebugReportCallbackEXT* pCallback);
    virtual void on_vkDestroyDebugReportCallbackEXT(
    void* context,
        VkInstance instance,
        VkDebugReportCallbackEXT callback,
        const VkAllocationCallbacks* pAllocator);
    virtual void on_vkDebugReportMessageEXT(
    void* context,
        VkInstance instance,
        VkDebugReportFlagsEXT flags,
        VkDebugReportObjectTypeEXT objectType,
        uint64_t object,
        size_t location,
        int32_t messageCode,
        const char* pLayerPrefix,
        const char* pMessage);
#endif
#ifdef VK_NV_glsl_shader
#endif
#ifdef VK_EXT_depth_range_unrestricted
#endif
#ifdef VK_IMG_filter_cubic
#endif
#ifdef VK_AMD_rasterization_order
#endif
#ifdef VK_AMD_shader_trinary_minmax
#endif
#ifdef VK_AMD_shader_explicit_vertex_parameter
#endif
#ifdef VK_EXT_debug_marker
    virtual VkResult on_vkDebugMarkerSetObjectTagEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
    virtual VkResult on_vkDebugMarkerSetObjectNameEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
    virtual void on_vkCmdDebugMarkerBeginEXT(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
    virtual void on_vkCmdDebugMarkerEndEXT(
    void* context,
        VkCommandBuffer commandBuffer);
    virtual void on_vkCmdDebugMarkerInsertEXT(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
#endif
#ifdef VK_AMD_gcn_shader
#endif
#ifdef VK_NV_dedicated_allocation
#endif
#ifdef VK_AMD_draw_indirect_count
    virtual void on_vkCmdDrawIndirectCountAMD(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer buffer,
        VkDeviceSize offset,
        VkBuffer countBuffer,
        VkDeviceSize countBufferOffset,
        uint32_t maxDrawCount,
        uint32_t stride);
    virtual void on_vkCmdDrawIndexedIndirectCountAMD(
    void* context,
        VkCommandBuffer commandBuffer,
        VkBuffer buffer,
        VkDeviceSize offset,
        VkBuffer countBuffer,
        VkDeviceSize countBufferOffset,
        uint32_t maxDrawCount,
        uint32_t stride);
#endif
#ifdef VK_AMD_negative_viewport_height
#endif
#ifdef VK_AMD_gpu_shader_half_float
#endif
#ifdef VK_AMD_shader_ballot
#endif
#ifdef VK_AMD_texture_gather_bias_lod
#endif
#ifdef VK_AMD_shader_info
    virtual VkResult on_vkGetShaderInfoAMD(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkPipeline pipeline,
        VkShaderStageFlagBits shaderStage,
        VkShaderInfoTypeAMD infoType,
        size_t* pInfoSize,
        void* pInfo);
#endif
#ifdef VK_AMD_shader_image_load_store_lod
#endif
#ifdef VK_IMG_format_pvrtc
#endif
#ifdef VK_NV_external_memory_capabilities
    virtual VkResult on_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkFormat format,
        VkImageType type,
        VkImageTiling tiling,
        VkImageUsageFlags usage,
        VkImageCreateFlags flags,
        VkExternalMemoryHandleTypeFlagsNV externalHandleType,
        VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
#endif
#ifdef VK_NV_external_memory
#endif
#ifdef VK_NV_external_memory_win32
    virtual VkResult on_vkGetMemoryWin32HandleNV(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkDeviceMemory memory,
        VkExternalMemoryHandleTypeFlagsNV handleType,
        HANDLE* pHandle);
#endif
#ifdef VK_NV_win32_keyed_mutex
#endif
#ifdef VK_EXT_validation_flags
#endif
#ifdef VK_NN_vi_surface
    virtual VkResult on_vkCreateViSurfaceNN(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkViSurfaceCreateInfoNN* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
#endif
#ifdef VK_EXT_shader_subgroup_ballot
#endif
#ifdef VK_EXT_shader_subgroup_vote
#endif
#ifdef VK_EXT_conditional_rendering
    virtual void on_vkCmdBeginConditionalRenderingEXT(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
    virtual void on_vkCmdEndConditionalRenderingEXT(
    void* context,
        VkCommandBuffer commandBuffer);
#endif
#ifdef VK_NVX_device_generated_commands
    virtual void on_vkCmdProcessCommandsNVX(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
    virtual void on_vkCmdReserveSpaceForCommandsNVX(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
    virtual VkResult on_vkCreateIndirectCommandsLayoutNVX(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
    virtual void on_vkDestroyIndirectCommandsLayoutNVX(
    void* context,
        VkDevice device,
        VkIndirectCommandsLayoutNVX indirectCommandsLayout,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkCreateObjectTableNVX(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkObjectTableCreateInfoNVX* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkObjectTableNVX* pObjectTable);
    virtual void on_vkDestroyObjectTableNVX(
    void* context,
        VkDevice device,
        VkObjectTableNVX objectTable,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkRegisterObjectsNVX(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkObjectTableNVX objectTable,
        uint32_t objectCount,
        const VkObjectTableEntryNVX* const* ppObjectTableEntries,
        const uint32_t* pObjectIndices);
    virtual VkResult on_vkUnregisterObjectsNVX(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkObjectTableNVX objectTable,
        uint32_t objectCount,
        const VkObjectEntryTypeNVX* pObjectEntryTypes,
        const uint32_t* pObjectIndices);
    virtual void on_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
        VkDeviceGeneratedCommandsLimitsNVX* pLimits);
#endif
#ifdef VK_NV_clip_space_w_scaling
    virtual void on_vkCmdSetViewportWScalingNV(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t firstViewport,
        uint32_t viewportCount,
        const VkViewportWScalingNV* pViewportWScalings);
#endif
#ifdef VK_EXT_direct_mode_display
    virtual VkResult on_vkReleaseDisplayEXT(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkDisplayKHR display);
#endif
#ifdef VK_EXT_acquire_xlib_display
    virtual VkResult on_vkAcquireXlibDisplayEXT(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        Display* dpy,
        VkDisplayKHR display);
    virtual VkResult on_vkGetRandROutputDisplayEXT(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        Display* dpy,
        RROutput rrOutput,
        VkDisplayKHR* pDisplay);
#endif
#ifdef VK_EXT_display_surface_counter
    virtual VkResult on_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
    void* context,
        VkResult input_result,
        VkPhysicalDevice physicalDevice,
        VkSurfaceKHR surface,
        VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
#endif
#ifdef VK_EXT_display_control
    virtual VkResult on_vkDisplayPowerControlEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkDisplayKHR display,
        const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
    virtual VkResult on_vkRegisterDeviceEventEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDeviceEventInfoEXT* pDeviceEventInfo,
        const VkAllocationCallbacks* pAllocator,
        VkFence* pFence);
    virtual VkResult on_vkRegisterDisplayEventEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkDisplayKHR display,
        const VkDisplayEventInfoEXT* pDisplayEventInfo,
        const VkAllocationCallbacks* pAllocator,
        VkFence* pFence);
    virtual VkResult on_vkGetSwapchainCounterEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkSwapchainKHR swapchain,
        VkSurfaceCounterFlagBitsEXT counter,
        uint64_t* pCounterValue);
#endif
#ifdef VK_GOOGLE_display_timing
    virtual VkResult on_vkGetRefreshCycleDurationGOOGLE(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkSwapchainKHR swapchain,
        VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
    virtual VkResult on_vkGetPastPresentationTimingGOOGLE(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkSwapchainKHR swapchain,
        uint32_t* pPresentationTimingCount,
        VkPastPresentationTimingGOOGLE* pPresentationTimings);
#endif
#ifdef VK_NV_sample_mask_override_coverage
#endif
#ifdef VK_NV_geometry_shader_passthrough
#endif
#ifdef VK_NV_viewport_array2
#endif
#ifdef VK_NVX_multiview_per_view_attributes
#endif
#ifdef VK_NV_viewport_swizzle
#endif
#ifdef VK_EXT_discard_rectangles
    virtual void on_vkCmdSetDiscardRectangleEXT(
    void* context,
        VkCommandBuffer commandBuffer,
        uint32_t firstDiscardRectangle,
        uint32_t discardRectangleCount,
        const VkRect2D* pDiscardRectangles);
#endif
#ifdef VK_EXT_conservative_rasterization
#endif
#ifdef VK_EXT_swapchain_colorspace
#endif
#ifdef VK_EXT_hdr_metadata
    virtual void on_vkSetHdrMetadataEXT(
    void* context,
        VkDevice device,
        uint32_t swapchainCount,
        const VkSwapchainKHR* pSwapchains,
        const VkHdrMetadataEXT* pMetadata);
#endif
#ifdef VK_MVK_ios_surface
    virtual VkResult on_vkCreateIOSSurfaceMVK(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
#endif
#ifdef VK_MVK_macos_surface
    virtual VkResult on_vkCreateMacOSSurfaceMVK(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkSurfaceKHR* pSurface);
#endif
#ifdef VK_EXT_external_memory_dma_buf
#endif
#ifdef VK_EXT_queue_family_foreign
#endif
#ifdef VK_EXT_debug_utils
    virtual VkResult on_vkSetDebugUtilsObjectNameEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
    virtual VkResult on_vkSetDebugUtilsObjectTagEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
    virtual void on_vkQueueBeginDebugUtilsLabelEXT(
    void* context,
        VkQueue queue,
        const VkDebugUtilsLabelEXT* pLabelInfo);
    virtual void on_vkQueueEndDebugUtilsLabelEXT(
    void* context,
        VkQueue queue);
    virtual void on_vkQueueInsertDebugUtilsLabelEXT(
    void* context,
        VkQueue queue,
        const VkDebugUtilsLabelEXT* pLabelInfo);
    virtual void on_vkCmdBeginDebugUtilsLabelEXT(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkDebugUtilsLabelEXT* pLabelInfo);
    virtual void on_vkCmdEndDebugUtilsLabelEXT(
    void* context,
        VkCommandBuffer commandBuffer);
    virtual void on_vkCmdInsertDebugUtilsLabelEXT(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkDebugUtilsLabelEXT* pLabelInfo);
    virtual VkResult on_vkCreateDebugUtilsMessengerEXT(
    void* context,
        VkResult input_result,
        VkInstance instance,
        const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkDebugUtilsMessengerEXT* pMessenger);
    virtual void on_vkDestroyDebugUtilsMessengerEXT(
    void* context,
        VkInstance instance,
        VkDebugUtilsMessengerEXT messenger,
        const VkAllocationCallbacks* pAllocator);
    virtual void on_vkSubmitDebugUtilsMessageEXT(
    void* context,
        VkInstance instance,
        VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
        VkDebugUtilsMessageTypeFlagsEXT messageTypes,
        const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
#endif
#ifdef VK_ANDROID_external_memory_android_hardware_buffer
    virtual VkResult on_vkGetAndroidHardwareBufferPropertiesANDROID(
    void* context,
        VkResult input_result,
        VkDevice device,
        const AHardwareBuffer* buffer,
        VkAndroidHardwareBufferPropertiesANDROID* pProperties);
    virtual VkResult on_vkGetMemoryAndroidHardwareBufferANDROID(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
        AHardwareBuffer** pBuffer);
#endif
#ifdef VK_EXT_sampler_filter_minmax
#endif
#ifdef VK_AMD_gpu_shader_int16
#endif
#ifdef VK_AMD_mixed_attachment_samples
#endif
#ifdef VK_AMD_shader_fragment_mask
#endif
#ifdef VK_EXT_shader_stencil_export
#endif
#ifdef VK_EXT_sample_locations
    virtual void on_vkCmdSetSampleLocationsEXT(
    void* context,
        VkCommandBuffer commandBuffer,
        const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
    virtual void on_vkGetPhysicalDeviceMultisamplePropertiesEXT(
    void* context,
        VkPhysicalDevice physicalDevice,
        VkSampleCountFlagBits samples,
        VkMultisamplePropertiesEXT* pMultisampleProperties);
#endif
#ifdef VK_EXT_blend_operation_advanced
#endif
#ifdef VK_NV_fragment_coverage_to_color
#endif
#ifdef VK_NV_framebuffer_mixed_samples
#endif
#ifdef VK_NV_fill_rectangle
#endif
#ifdef VK_EXT_post_depth_coverage
#endif
#ifdef VK_EXT_validation_cache
    virtual VkResult on_vkCreateValidationCacheEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        const VkValidationCacheCreateInfoEXT* pCreateInfo,
        const VkAllocationCallbacks* pAllocator,
        VkValidationCacheEXT* pValidationCache);
    virtual void on_vkDestroyValidationCacheEXT(
    void* context,
        VkDevice device,
        VkValidationCacheEXT validationCache,
        const VkAllocationCallbacks* pAllocator);
    virtual VkResult on_vkMergeValidationCachesEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkValidationCacheEXT dstCache,
        uint32_t srcCacheCount,
        const VkValidationCacheEXT* pSrcCaches);
    virtual VkResult on_vkGetValidationCacheDataEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkValidationCacheEXT validationCache,
        size_t* pDataSize,
        void* pData);
#endif
#ifdef VK_EXT_descriptor_indexing
#endif
#ifdef VK_EXT_shader_viewport_index_layer
#endif
#ifdef VK_EXT_global_priority
#endif
#ifdef VK_EXT_external_memory_host
    virtual VkResult on_vkGetMemoryHostPointerPropertiesEXT(
    void* context,
        VkResult input_result,
        VkDevice device,
        VkExternalMemoryHandleTypeFlagBits handleType,
        const void* pHostPointer,
        VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
#endif
#ifdef VK_AMD_buffer_marker
    virtual void on_vkCmdWriteBufferMarkerAMD(
    void* context,
        VkCommandBuffer commandBuffer,
        VkPipelineStageFlagBits pipelineStage,
        VkBuffer dstBuffer,
        VkDeviceSize dstOffset,
        uint32_t marker);
#endif
#ifdef VK_AMD_shader_core_properties
#endif
#ifdef VK_EXT_vertex_attribute_divisor
#endif
#ifdef VK_NV_shader_subgroup_partitioned
#endif
#ifdef VK_NV_device_diagnostic_checkpoints
    virtual void on_vkCmdSetCheckpointNV(
    void* context,
        VkCommandBuffer commandBuffer,
        const void* pCheckpointMarker);
    virtual void on_vkGetQueueCheckpointDataNV(
    void* context,
        VkQueue queue,
        uint32_t* pCheckpointDataCount,
        VkCheckpointDataNV* pCheckpointData);
#endif

};

} // namespace goldfish_vk
