vulkan.h: API changes for #13744 - sharing across queues
The ICD doesn't do anything differently interesting yet, but this is
enough that the API works.
V2: Fix testbinding.
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
diff --git a/include/vulkan.h b/include/vulkan.h
index bd8de37..bcca89f 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -33,7 +33,7 @@
#include "vk_platform.h"
// Vulkan API version supported by this file
-#define VK_API_VERSION VK_MAKE_VERSION(0, 132, 1)
+#define VK_API_VERSION VK_MAKE_VERSION(0, 138, 1)
#ifdef __cplusplus
extern "C"
@@ -127,6 +127,8 @@
#define VK_NULL_HANDLE 0
+#define VK_QUEUE_FAMILY_IGNORED UINT32_MAX
+
// This macro defines INT_MAX in enumerations to force compilers to use 32 bits
// to represent them. This may or may not be necessary on some compilers. The
// option to compile it out may allow compilers that warn about missing enumerants
@@ -220,6 +222,14 @@
VK_ENUM_RANGE(IMAGE_ASPECT, COLOR, METADATA)
} VkImageAspect;
+typedef enum VkSharingMode_
+{
+ VK_SHARING_MODE_EXCLUSIVE = 0x00000000,
+ VK_SHARING_MODE_CONCURRENT = 0x00000001,
+
+ VK_ENUM_RANGE(SHARING_MODE, EXCLUSIVE, CONCURRENT)
+} VkSharingMode;
+
typedef enum VkBufferViewType_
{
VK_BUFFER_VIEW_TYPE_RAW = 0x00000000, // Raw buffer without special structure (UBO, SSBO)
@@ -1447,7 +1457,7 @@
typedef struct VkDeviceQueueCreateInfo_
{
- uint32_t queueNodeIndex;
+ uint32_t queueFamilyIndex;
uint32_t queueCount;
} VkDeviceQueueCreateInfo;
@@ -1613,6 +1623,9 @@
VkDeviceSize size; // Specified in bytes
VkBufferUsageFlags usage; // Buffer usage flags
VkBufferCreateFlags flags; // Buffer creation flags
+ VkSharingMode sharingMode;
+ uint32_t queueFamilyCount;
+ const uint32_t* pQueueFamilyIndices;
} VkBufferCreateInfo;
typedef struct VkBufferViewCreateInfo_
@@ -1652,6 +1665,9 @@
VkMemoryOutputFlags outputMask; // Outputs the barrier should sync
VkMemoryInputFlags inputMask; // Inputs the barrier should sync to
+ uint32_t srcQueueFamilyIndex;
+ uint32_t destQueueFamilyIndex;
+
VkBuffer buffer; // Buffer to sync
VkDeviceSize offset; // Offset within the buffer to sync
@@ -1666,6 +1682,9 @@
VkMemoryOutputFlags outputMask; // Outputs the barrier should sync
VkMemoryInputFlags inputMask; // Inputs the barrier should sync to
+ uint32_t srcQueueFamilyIndex;
+ uint32_t destQueueFamilyIndex;
+
VkImageLayout oldLayout; // Current layout of the image
VkImageLayout newLayout; // New layout to transition the image to
@@ -1687,6 +1706,9 @@
VkImageTiling tiling;
VkImageUsageFlags usage; // Image usage flags
VkImageCreateFlags flags; // Image creation flags
+ VkSharingMode sharingMode;
+ uint32_t queueFamilyCount;
+ const uint32_t* pQueueFamilyIndices;
} VkImageCreateInfo;
typedef struct VkSubresourceLayout_