aboutsummaryrefslogtreecommitdiff
path: root/include/vulkan.h
diff options
context:
space:
mode:
authorCourtney Goeltzenleuchter <courtney@LunarG.com>2015-06-10 17:39:03 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-06-17 20:56:35 -0600
commit922a0fac69a54ab79203e4047ed358c76b6950c0 (patch)
treeb13fe6bc979e40c1470c70f565f8e4d88564feb5 /include/vulkan.h
parent8a666730247814466271140172d349d68a58e7f6 (diff)
downloadusermoji-922a0fac69a54ab79203e4047ed358c76b6950c0.tar.xz
extensions: begin changes for extension support
This patch starts restructuring the various components (loader, driver, layers, etc.) to support global and device extensions. Require GetProcAddr to access the extension functions and related support.
Diffstat (limited to 'include/vulkan.h')
-rw-r--r--include/vulkan.h41
1 files changed, 12 insertions, 29 deletions
diff --git a/include/vulkan.h b/include/vulkan.h
index 89431af2..dbc6f866 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -835,18 +835,17 @@ typedef enum VkStructureType_
VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 38,
VK_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO = 39,
VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 40,
- VK_STRUCTURE_TYPE_LAYER_CREATE_INFO = 41,
- VK_STRUCTURE_TYPE_MEMORY_BARRIER = 42,
- VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 43,
- VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 44,
- VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 45,
+ VK_STRUCTURE_TYPE_MEMORY_BARRIER = 41,
+ VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 42,
+ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 43,
+ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 44,
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 46,
VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 47,
VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 48,
VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 49,
- VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 50,
+ VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES = 50,
- VK_ENUM_RANGE(STRUCTURE_TYPE, APPLICATION_INFO, MAPPED_MEMORY_RANGE)
+ VK_ENUM_RANGE(STRUCTURE_TYPE, APPLICATION_INFO, EXTENSION_PROPERTIES)
} VkStructureType;
// Object type enumerant
@@ -936,6 +935,7 @@ typedef enum VkResult_
VK_ERROR_MEMORY_NOT_BOUND = -(0x0000001F),
VK_ERROR_INCOMPATIBLE_QUEUE = -(0x00000020),
VK_ERROR_NOT_SHAREABLE = -(0x00000021),
+ VK_ERROR_MISSING_EXTENSION_DEPENDENCY = -(0x00000022),
VK_MAX_ENUM(RESULT)
} VkResult;
@@ -1279,8 +1279,10 @@ typedef struct VkPhysicalDeviceCompatibilityInfo_
typedef struct VkExtensionProperties_
{
- char extName[VK_MAX_EXTENSION_NAME]; // extension name
+ VkStructureType sType; // Type of structure. Should be VK_STRUCTURE_TYPE_EXTENSION_PROPERTIES
+ char name[VK_MAX_EXTENSION_NAME]; // extension name
uint32_t version; // version of the extension specification
+ char description[VK_MAX_EXTENSION_NAME]; // Name of library implementing this extension
} VkExtensionProperties;
typedef struct VkApplicationInfo_
@@ -1324,7 +1326,7 @@ typedef struct VkDeviceCreateInfo_
uint32_t queueRecordCount;
const VkDeviceQueueCreateInfo* pRequestedQueues;
uint32_t extensionCount;
- const char*const* ppEnabledExtensionNames;
+ const VkExtensionProperties* pEnabledExtensions; // Indicate extensions to enable by index value
VkDeviceCreateFlags flags; // Device creation flags
} VkDeviceCreateInfo;
@@ -1335,18 +1337,9 @@ typedef struct VkInstanceCreateInfo_
const VkApplicationInfo* pAppInfo;
const VkAllocCallbacks* pAllocCb;
uint32_t extensionCount;
- const char*const* ppEnabledExtensionNames; // layer or extension name to be enabled
+ const VkExtensionProperties* pEnabledExtensions; // Indicate extensions to enable by index value
} VkInstanceCreateInfo;
-// can be added to VkDeviceCreateInfo via pNext
-typedef struct VkLayerCreateInfo_
-{
- VkStructureType sType; // Should be VK_STRUCTURE_TYPE_LAYER_CREATE_INFO
- const void* pNext; // Pointer to next structure
- uint32_t layerCount;
- const char *const* ppActiveLayerNames; // layer name from the layer's vkEnumerateLayers())
-} VkLayerCreateInfo;
-
typedef struct VkPhysicalDeviceQueueProperties_
{
VkQueueFlags queueFlags; // Queue flags
@@ -2093,7 +2086,6 @@ typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, co
typedef VkResult (VKAPI *PFN_vkDestroyDevice)(VkDevice device);
typedef VkResult (VKAPI *PFN_vkGetGlobalExtensionInfo)(VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData);
typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceExtensionInfo)(VkPhysicalDevice physicalDevice, VkExtensionInfoType infoType, uint32_t extensionIndex, size_t* pDataSize, void* pData);
-typedef VkResult (VKAPI *PFN_vkEnumerateLayers)(VkPhysicalDevice physicalDevice, size_t maxStringSize, size_t* pLayerCount, char* const* pOutLayers, void* pReserved);
typedef VkResult (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue);
typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
@@ -2252,15 +2244,6 @@ VkResult VKAPI vkGetPhysicalDeviceExtensionInfo(
size_t* pDataSize,
void* pData);
-// Layer discovery functions
-
-VkResult VKAPI vkEnumerateLayers(
- VkPhysicalDevice physicalDevice,
- size_t maxStringSize,
- size_t* pLayerCount,
- char* const* pOutLayers,
- void* pReserved);
-
// Queue functions
VkResult VKAPI vkGetDeviceQueue(