loader: Add structures to support new init method
These structures will be used to extend CreateInstance
and CreateDevice to support layers. The loader will
create a chain of these structures - one per layer -
that tells the layer the Get*ProcAddr for the next
lower part.
diff --git a/include/vulkan/vk_layer.h b/include/vulkan/vk_layer.h
index aeb6ab9..6899182 100644
--- a/include/vulkan/vk_layer.h
+++ b/include/vulkan/vk_layer.h
@@ -222,4 +222,29 @@
} VkLayerDbgAction;
// ------------------------------------------------------------------------------------------------
+// CreateInstance and CreateDevice support structures
+typedef struct VkLayerInstanceLink_ {
+ struct VkLayerInstanceLink_* pNext;
+ PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
+} VkLayerInstanceLink;
+
+typedef struct {
+ VkStructureType sType; // VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO
+ const void* pNext;
+ VkLayerInstanceLink* pLayerInfo;
+} VkLayerInstanceCreateInfo;
+
+typedef struct VkLayerDeviceLink_ {
+ struct VkLayerDeviceLink_* pNext;
+ PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
+ PFN_vkGetDeviceProcAddr pfnNextGetDeviceProcAddr;
+} VkLayerDeviceLink;
+
+typedef struct {
+ VkStructureType sType; // VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO
+ const void* pNext;
+ VkLayerDeviceLink* pLayerInfo;
+} VkLayerDeviceCreateInfo;
+
+// ------------------------------------------------------------------------------------------------
// API functions