/*
** Copyright 2015-2023 The Khronos Group Inc.
**
** SPDX-License-Identifier: Apache-2.0
*/

/*
** This header is generated from the Khronos Vulkan XML API Registry.
**
*/

#pragma once
#ifdef VK_GFXSTREAM_STRUCTURE_TYPE_EXT
#include "vulkan_gfxstream_structure_type.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif


// VK_GOOGLE_gfxstream is a preprocessor guard. Do not pass it to API calls.
#define VK_GOOGLE_gfxstream 1
#define VK_GOOGLE_GFXSTREAM_SPEC_VERSION  0
#define VK_GOOGLE_GFXSTREAM_NUMBER        386
#define VK_GOOGLE_GFXSTREAM_EXTENSION_NAME "VK_GOOGLE_gfxstream"
typedef struct VkImportColorBufferGOOGLE {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           colorBuffer;
} VkImportColorBufferGOOGLE;

typedef struct VkImportBufferGOOGLE {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           buffer;
} VkImportBufferGOOGLE;

typedef struct VkCreateBlobGOOGLE {
    VkStructureType    sType;
    void*              pNext;
    uint32_t           blobMem;
    uint32_t           blobFlags;
    uint64_t           blobId;
} VkCreateBlobGOOGLE;

typedef VkResult (VKAPI_PTR *PFN_vkMapMemoryIntoAddressSpaceGOOGLE)(VkDevice device, VkDeviceMemory memory, uint64_t* pAddress);
typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateSizedGOOGLE)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount, uint32_t bufferInfoCount, uint32_t bufferViewCount, const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices, const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos, const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews);
typedef void (VKAPI_PTR *PFN_vkBeginCommandBufferAsyncGOOGLE)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
typedef void (VKAPI_PTR *PFN_vkEndCommandBufferAsyncGOOGLE)(VkCommandBuffer commandBuffer);
typedef void (VKAPI_PTR *PFN_vkResetCommandBufferAsyncGOOGLE)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
typedef void (VKAPI_PTR *PFN_vkCommandBufferHostSyncGOOGLE)(VkCommandBuffer commandBuffer, uint32_t needHostSync, uint32_t sequenceNumber);
typedef VkResult (VKAPI_PTR *PFN_vkCreateImageWithRequirementsGOOGLE)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage, VkMemoryRequirements* pMemoryRequirements);
typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferWithRequirementsGOOGLE)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer, VkMemoryRequirements* pMemoryRequirements);
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostAddressInfoGOOGLE)(VkDevice device, VkDeviceMemory memory, uint64_t* pAddress, uint64_t* pSize, uint64_t* pHostmemId);
typedef VkResult (VKAPI_PTR *PFN_vkFreeMemorySyncGOOGLE)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
typedef void (VKAPI_PTR *PFN_vkQueueHostSyncGOOGLE)(VkQueue queue, uint32_t needHostSync, uint32_t sequenceNumber);
typedef void (VKAPI_PTR *PFN_vkQueueSubmitAsyncGOOGLE)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
typedef void (VKAPI_PTR *PFN_vkQueueWaitIdleAsyncGOOGLE)(VkQueue queue);
typedef void (VKAPI_PTR *PFN_vkQueueBindSparseAsyncGOOGLE)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
typedef void (VKAPI_PTR *PFN_vkGetLinearImageLayoutGOOGLE)(VkDevice device, VkFormat format, VkDeviceSize* pOffset, VkDeviceSize* pRowPitchAlignment);
typedef void (VKAPI_PTR *PFN_vkGetLinearImageLayout2GOOGLE)(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkDeviceSize* pOffset, VkDeviceSize* pRowPitchAlignment);
typedef void (VKAPI_PTR *PFN_vkQueueFlushCommandsGOOGLE)(VkQueue queue, VkCommandBuffer commandBuffer, VkDeviceSize dataSize, const void* pData);
typedef void (VKAPI_PTR *PFN_vkQueueCommitDescriptorSetUpdatesGOOGLE)(VkQueue queue, uint32_t descriptorPoolCount, const VkDescriptorPool* pDescriptorPools, uint32_t descriptorSetCount, const VkDescriptorSetLayout* pSetLayouts, const uint64_t* pDescriptorSetPoolIds, const uint32_t* pDescriptorSetWhichPool, const uint32_t* pDescriptorSetPendingAllocation, const uint32_t* pDescriptorWriteStartingIndices, uint32_t pendingDescriptorWriteCount, const VkWriteDescriptorSet* pPendingDescriptorWrites);
typedef void (VKAPI_PTR *PFN_vkCollectDescriptorPoolIdsGOOGLE)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t* pPoolIdCount, uint64_t* pPoolIds);
typedef void (VKAPI_PTR *PFN_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE)(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image);
typedef void (VKAPI_PTR *PFN_vkQueueFlushCommandsFromAuxMemoryGOOGLE)(VkQueue queue, VkCommandBuffer commandBuffer, VkDeviceMemory deviceMemory, VkDeviceSize dataOffset, VkDeviceSize dataSize);
typedef VkResult (VKAPI_PTR *PFN_vkGetBlobGOOGLE)(VkDevice device, VkDeviceMemory memory);
typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateSized2GOOGLE)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount, uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount, const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices, const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos, const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews, const uint8_t* pInlineUniformBlockData);
typedef void (VKAPI_PTR *PFN_vkQueueSubmitAsync2GOOGLE)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence);
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreGOOGLE)(VkDevice device, VkSemaphore semaphore, uint64_t syncId);

VKAPI_ATTR VkResult VKAPI_CALL vkMapMemoryIntoAddressSpaceGOOGLE(
    VkDevice                                    device,
    VkDeviceMemory                              memory,
    uint64_t*                                   pAddress);

VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
    VkDevice                                    device,
    VkDescriptorSet                             descriptorSet,
    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
    uint32_t                                    imageInfoCount,
    uint32_t                                    bufferInfoCount,
    uint32_t                                    bufferViewCount,
    const uint32_t*                             pImageInfoEntryIndices,
    const uint32_t*                             pBufferInfoEntryIndices,
    const uint32_t*                             pBufferViewEntryIndices,
    const VkDescriptorImageInfo*                pImageInfos,
    const VkDescriptorBufferInfo*               pBufferInfos,
    const VkBufferView*                         pBufferViews);

VKAPI_ATTR void VKAPI_CALL vkBeginCommandBufferAsyncGOOGLE(
    VkCommandBuffer                             commandBuffer,
    const VkCommandBufferBeginInfo*             pBeginInfo);

VKAPI_ATTR void VKAPI_CALL vkEndCommandBufferAsyncGOOGLE(
    VkCommandBuffer                             commandBuffer);

VKAPI_ATTR void VKAPI_CALL vkResetCommandBufferAsyncGOOGLE(
    VkCommandBuffer                             commandBuffer,
    VkCommandBufferResetFlags                   flags);

VKAPI_ATTR void VKAPI_CALL vkCommandBufferHostSyncGOOGLE(
    VkCommandBuffer                             commandBuffer,
    uint32_t                                    needHostSync,
    uint32_t                                    sequenceNumber);

VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageWithRequirementsGOOGLE(
    VkDevice                                    device,
    const VkImageCreateInfo*                    pCreateInfo,
    const VkAllocationCallbacks*                pAllocator,
    VkImage*                                    pImage,
    VkMemoryRequirements*                       pMemoryRequirements);

VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferWithRequirementsGOOGLE(
    VkDevice                                    device,
    const VkBufferCreateInfo*                   pCreateInfo,
    const VkAllocationCallbacks*                pAllocator,
    VkBuffer*                                   pBuffer,
    VkMemoryRequirements*                       pMemoryRequirements);

VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostAddressInfoGOOGLE(
    VkDevice                                    device,
    VkDeviceMemory                              memory,
    uint64_t*                                   pAddress,
    uint64_t*                                   pSize,
    uint64_t*                                   pHostmemId);

VKAPI_ATTR VkResult VKAPI_CALL vkFreeMemorySyncGOOGLE(
    VkDevice                                    device,
    VkDeviceMemory                              memory,
    const VkAllocationCallbacks*                pAllocator);

VKAPI_ATTR void VKAPI_CALL vkQueueHostSyncGOOGLE(
    VkQueue                                     queue,
    uint32_t                                    needHostSync,
    uint32_t                                    sequenceNumber);

VKAPI_ATTR void VKAPI_CALL vkQueueSubmitAsyncGOOGLE(
    VkQueue                                     queue,
    uint32_t                                    submitCount,
    const VkSubmitInfo*                         pSubmits,
    VkFence                                     fence);

VKAPI_ATTR void VKAPI_CALL vkQueueWaitIdleAsyncGOOGLE(
    VkQueue                                     queue);

VKAPI_ATTR void VKAPI_CALL vkQueueBindSparseAsyncGOOGLE(
    VkQueue                                     queue,
    uint32_t                                    bindInfoCount,
    const VkBindSparseInfo*                     pBindInfo,
    VkFence                                     fence);

VKAPI_ATTR void VKAPI_CALL vkGetLinearImageLayoutGOOGLE(
    VkDevice                                    device,
    VkFormat                                    format,
    VkDeviceSize*                               pOffset,
    VkDeviceSize*                               pRowPitchAlignment);

VKAPI_ATTR void VKAPI_CALL vkGetLinearImageLayout2GOOGLE(
    VkDevice                                    device,
    const VkImageCreateInfo*                    pCreateInfo,
    VkDeviceSize*                               pOffset,
    VkDeviceSize*                               pRowPitchAlignment);

VKAPI_ATTR void VKAPI_CALL vkQueueFlushCommandsGOOGLE(
    VkQueue                                     queue,
    VkCommandBuffer                             commandBuffer,
    VkDeviceSize                                dataSize,
    const void*                                 pData);

VKAPI_ATTR void VKAPI_CALL vkQueueCommitDescriptorSetUpdatesGOOGLE(
    VkQueue                                     queue,
    uint32_t                                    descriptorPoolCount,
    const VkDescriptorPool*                     pDescriptorPools,
    uint32_t                                    descriptorSetCount,
    const VkDescriptorSetLayout*                pSetLayouts,
    const uint64_t*                             pDescriptorSetPoolIds,
    const uint32_t*                             pDescriptorSetWhichPool,
    const uint32_t*                             pDescriptorSetPendingAllocation,
    const uint32_t*                             pDescriptorWriteStartingIndices,
    uint32_t                                    pendingDescriptorWriteCount,
    const VkWriteDescriptorSet*                 pPendingDescriptorWrites);

VKAPI_ATTR void VKAPI_CALL vkCollectDescriptorPoolIdsGOOGLE(
    VkDevice                                    device,
    VkDescriptorPool                            descriptorPool,
    uint32_t*                                   pPoolIdCount,
    uint64_t*                                   pPoolIds);

VKAPI_ATTR void VKAPI_CALL vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
    VkQueue                                     queue,
    uint32_t                                    waitSemaphoreCount,
    const VkSemaphore*                          pWaitSemaphores,
    VkImage                                     image);

VKAPI_ATTR void VKAPI_CALL vkQueueFlushCommandsFromAuxMemoryGOOGLE(
    VkQueue                                     queue,
    VkCommandBuffer                             commandBuffer,
    VkDeviceMemory                              deviceMemory,
    VkDeviceSize                                dataOffset,
    VkDeviceSize                                dataSize);

VKAPI_ATTR VkResult VKAPI_CALL vkGetBlobGOOGLE(
    VkDevice                                    device,
    VkDeviceMemory                              memory);

VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
    VkDevice                                    device,
    VkDescriptorSet                             descriptorSet,
    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
    uint32_t                                    imageInfoCount,
    uint32_t                                    bufferInfoCount,
    uint32_t                                    bufferViewCount,
    uint32_t                                    inlineUniformBlockCount,
    const uint32_t*                             pImageInfoEntryIndices,
    const uint32_t*                             pBufferInfoEntryIndices,
    const uint32_t*                             pBufferViewEntryIndices,
    const VkDescriptorImageInfo*                pImageInfos,
    const VkDescriptorBufferInfo*               pBufferInfos,
    const VkBufferView*                         pBufferViews,
    const uint8_t*                              pInlineUniformBlockData);

VKAPI_ATTR void VKAPI_CALL vkQueueSubmitAsync2GOOGLE(
    VkQueue                                     queue,
    uint32_t                                    submitCount,
    const VkSubmitInfo2*                        pSubmits,
    VkFence                                     fence);

VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreGOOGLE(
    VkDevice                                    device,
    VkSemaphore                                 semaphore,
    uint64_t                                    syncId);

#ifdef __cplusplus
}
#endif
