blob: ed66d86d74d5e4ee4ba4528a9d9c4148a18a6aa3 [file] [log] [blame] [edit]
#ifndef VULKAN_SCI_H_
#define VULKAN_SCI_H_ 1
/*
** Copyright 2015-2021 The Khronos Group Inc.
**
** SPDX-License-Identifier: Apache-2.0
*/
/*
** This header is generated from the Khronos Vulkan XML API Registry.
**
*/
#ifdef __cplusplus
extern "C" {
#endif
#define VK_NV_external_sci_sync 1
#define VK_NV_EXTERNAL_SCI_SYNC_SPEC_VERSION 2
#define VK_NV_EXTERNAL_SCI_SYNC_EXTENSION_NAME "VK_NV_external_sci_sync"
typedef enum VkSciSyncClientTypeNV {
VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_NV = 0,
VK_SCI_SYNC_CLIENT_TYPE_WAITER_NV = 1,
VK_SCI_SYNC_CLIENT_TYPE_SIGNALER_WAITER_NV = 2,
VK_SCI_SYNC_CLIENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
} VkSciSyncClientTypeNV;
typedef enum VkSciSyncPrimitiveTypeNV {
VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV = 0,
VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV = 1,
VK_SCI_SYNC_PRIMITIVE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
} VkSciSyncPrimitiveTypeNV;
typedef struct VkExportFenceSciSyncInfoNV {
VkStructureType sType;
const void* pNext;
NvSciSyncAttrList pAttributes;
} VkExportFenceSciSyncInfoNV;
typedef struct VkImportFenceSciSyncInfoNV {
VkStructureType sType;
const void* pNext;
VkFence fence;
VkExternalFenceHandleTypeFlagBits handleType;
void* handle;
} VkImportFenceSciSyncInfoNV;
typedef struct VkFenceGetSciSyncInfoNV {
VkStructureType sType;
const void* pNext;
VkFence fence;
VkExternalFenceHandleTypeFlagBits handleType;
} VkFenceGetSciSyncInfoNV;
typedef struct VkSciSyncAttributesInfoNV {
VkStructureType sType;
const void* pNext;
VkSciSyncClientTypeNV clientType;
VkSciSyncPrimitiveTypeNV primitiveType;
} VkSciSyncAttributesInfoNV;
typedef struct VkExportSemaphoreSciSyncInfoNV {
VkStructureType sType;
const void* pNext;
NvSciSyncAttrList pAttributes;
} VkExportSemaphoreSciSyncInfoNV;
typedef struct VkImportSemaphoreSciSyncInfoNV {
VkStructureType sType;
const void* pNext;
VkSemaphore semaphore;
VkExternalSemaphoreHandleTypeFlagBits handleType;
void* handle;
} VkImportSemaphoreSciSyncInfoNV;
typedef struct VkSemaphoreGetSciSyncInfoNV {
VkStructureType sType;
const void* pNext;
VkSemaphore semaphore;
VkExternalSemaphoreHandleTypeFlagBits handleType;
} VkSemaphoreGetSciSyncInfoNV;
typedef struct VkPhysicalDeviceExternalSciSyncFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 sciSyncFence;
VkBool32 sciSyncSemaphore;
VkBool32 sciSyncImport;
VkBool32 sciSyncExport;
} VkPhysicalDeviceExternalSciSyncFeaturesNV;
typedef VkResult (VKAPI_PTR *PFN_vkGetFenceSciSyncFenceNV)(VkDevice device, const VkFenceGetSciSyncInfoNV* pGetSciSyncHandleInfo, void* pHandle);
typedef VkResult (VKAPI_PTR *PFN_vkGetFenceSciSyncObjNV)(VkDevice device, const VkFenceGetSciSyncInfoNV* pGetSciSyncHandleInfo, void* pHandle);
typedef VkResult (VKAPI_PTR *PFN_vkImportFenceSciSyncFenceNV)(VkDevice device, const VkImportFenceSciSyncInfoNV* pImportFenceSciSyncInfo);
typedef VkResult (VKAPI_PTR *PFN_vkImportFenceSciSyncObjNV)(VkDevice device, const VkImportFenceSciSyncInfoNV* pImportFenceSciSyncInfo);
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSciSyncAttributesNV)(VkPhysicalDevice physicalDevice, const VkSciSyncAttributesInfoNV* pSciSyncAttributesInfo, NvSciSyncAttrList pAttributes);
typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreSciSyncObjNV)(VkDevice device, const VkSemaphoreGetSciSyncInfoNV* pGetSciSyncInfo, void* pHandle);
typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreSciSyncObjNV)(VkDevice device, const VkImportSemaphoreSciSyncInfoNV* pImportSemaphoreSciSyncInfo);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceSciSyncFenceNV(
VkDevice device,
const VkFenceGetSciSyncInfoNV* pGetSciSyncHandleInfo,
void* pHandle);
VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceSciSyncObjNV(
VkDevice device,
const VkFenceGetSciSyncInfoNV* pGetSciSyncHandleInfo,
void* pHandle);
VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceSciSyncFenceNV(
VkDevice device,
const VkImportFenceSciSyncInfoNV* pImportFenceSciSyncInfo);
VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceSciSyncObjNV(
VkDevice device,
const VkImportFenceSciSyncInfoNV* pImportFenceSciSyncInfo);
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSciSyncAttributesNV(
VkPhysicalDevice physicalDevice,
const VkSciSyncAttributesInfoNV* pSciSyncAttributesInfo,
NvSciSyncAttrList pAttributes);
VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreSciSyncObjNV(
VkDevice device,
const VkSemaphoreGetSciSyncInfoNV* pGetSciSyncInfo,
void* pHandle);
VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreSciSyncObjNV(
VkDevice device,
const VkImportSemaphoreSciSyncInfoNV* pImportSemaphoreSciSyncInfo);
#endif
#define VK_NV_external_memory_sci_buf 1
#define VK_NV_EXTERNAL_MEMORY_SCI_BUF_SPEC_VERSION 2
#define VK_NV_EXTERNAL_MEMORY_SCI_BUF_EXTENSION_NAME "VK_NV_external_memory_sci_buf"
typedef struct VkExportMemorySciBufInfoNV {
VkStructureType sType;
const void* pNext;
NvSciBufAttrList pAttributes;
} VkExportMemorySciBufInfoNV;
typedef struct VkImportMemorySciBufInfoNV {
VkStructureType sType;
const void* pNext;
VkExternalMemoryHandleTypeFlagBits handleType;
NvSciBufObj handle;
} VkImportMemorySciBufInfoNV;
typedef struct VkMemoryGetSciBufInfoNV {
VkStructureType sType;
const void* pNext;
VkDeviceMemory memory;
VkExternalMemoryHandleTypeFlagBits handleType;
} VkMemoryGetSciBufInfoNV;
typedef struct VkMemorySciBufPropertiesNV {
VkStructureType sType;
const void* pNext;
uint32_t memoryTypeBits;
} VkMemorySciBufPropertiesNV;
typedef struct VkPhysicalDeviceExternalMemorySciBufFeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 sciBufImport;
VkBool32 sciBufExport;
} VkPhysicalDeviceExternalMemorySciBufFeaturesNV;
typedef VkPhysicalDeviceExternalMemorySciBufFeaturesNV VkPhysicalDeviceExternalSciBufFeaturesNV;
typedef VkResult (VKAPI_PTR *PFN_vkGetMemorySciBufNV)(VkDevice device, const VkMemoryGetSciBufInfoNV* pGetSciBufInfo, NvSciBufObj* pHandle);
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV)(VkPhysicalDevice physicalDevice, VkExternalMemoryHandleTypeFlagBits handleType, NvSciBufObj handle, VkMemorySciBufPropertiesNV* pMemorySciBufProperties);
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSciBufAttributesNV)(VkPhysicalDevice physicalDevice, NvSciBufAttrList pAttributes);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemorySciBufNV(
VkDevice device,
const VkMemoryGetSciBufInfoNV* pGetSciBufInfo,
NvSciBufObj* pHandle);
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV(
VkPhysicalDevice physicalDevice,
VkExternalMemoryHandleTypeFlagBits handleType,
NvSciBufObj handle,
VkMemorySciBufPropertiesNV* pMemorySciBufProperties);
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSciBufAttributesNV(
VkPhysicalDevice physicalDevice,
NvSciBufAttrList pAttributes);
#endif
#define VK_NV_external_sci_sync2 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphoreSciSyncPoolNV)
#define VK_NV_EXTERNAL_SCI_SYNC_2_SPEC_VERSION 1
#define VK_NV_EXTERNAL_SCI_SYNC_2_EXTENSION_NAME "VK_NV_external_sci_sync2"
typedef struct VkPhysicalDeviceExternalSciSync2FeaturesNV {
VkStructureType sType;
void* pNext;
VkBool32 sciSyncFence;
VkBool32 sciSyncSemaphore2;
VkBool32 sciSyncImport;
VkBool32 sciSyncExport;
} VkPhysicalDeviceExternalSciSync2FeaturesNV;
typedef struct VkSemaphoreSciSyncPoolCreateInfoNV {
VkStructureType sType;
const void* pNext;
NvSciSyncObj handle;
} VkSemaphoreSciSyncPoolCreateInfoNV;
typedef struct VkSemaphoreSciSyncCreateInfoNV {
VkStructureType sType;
const void* pNext;
VkSemaphoreSciSyncPoolNV semaphorePool;
const NvSciSyncFence* pFence;
} VkSemaphoreSciSyncCreateInfoNV;
typedef struct VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV {
VkStructureType sType;
const void* pNext;
uint32_t semaphoreSciSyncPoolRequestCount;
} VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV;
typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphoreSciSyncPoolNV)(VkDevice device, const VkSemaphoreSciSyncPoolCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphoreSciSyncPoolNV* pSemaphorePool);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphoreSciSyncPoolNV(
VkDevice device,
const VkSemaphoreSciSyncPoolCreateInfoNV* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSemaphoreSciSyncPoolNV* pSemaphorePool);
#endif
#ifdef __cplusplus
}
#endif
#endif