246 lines
10 KiB
C
246 lines
10 KiB
C
#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
|