blob: 78f637213f791cb84291c610e51f4d022c43311f [file] [log] [blame]
Karl Schultz37419ed2016-02-02 12:32:50 -07001//
2// File: vk_layer.h
3//
4/*
5 * Copyright (c) 2015-2016 The Khronos Group Inc.
6 * Copyright (c) 2015-2016 Valve Corporation
7 * Copyright (c) 2015-2016 LunarG, Inc.
8 *
Jon Ashburn3ebf1252016-04-19 11:30:31 -06009 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
Karl Schultz37419ed2016-02-02 12:32:50 -070012 *
Jon Ashburn3ebf1252016-04-19 11:30:31 -060013 * http://www.apache.org/licenses/LICENSE-2.0
Karl Schultz37419ed2016-02-02 12:32:50 -070014 *
Jon Ashburn3ebf1252016-04-19 11:30:31 -060015 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
Karl Schultz37419ed2016-02-02 12:32:50 -070020 *
21 */
22
Courtney Goeltzenleuchter64d1a712015-04-08 18:04:29 -060023/* Need to define dispatch table
24 * Core struct can then have ptr to dispatch table at the top
25 * Along with object ptrs for current and next OBJ
26 */
27#pragma once
28
Karl Schultz1aec29c2016-02-10 15:41:43 -070029#include "vulkan.h"
Courtney Goeltzenleuchter64d1a712015-04-08 18:04:29 -060030#if defined(__GNUC__) && __GNUC__ >= 4
Karl Schultz37419ed2016-02-02 12:32:50 -070031#define VK_LAYER_EXPORT __attribute__((visibility("default")))
Courtney Goeltzenleuchter64d1a712015-04-08 18:04:29 -060032#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
Karl Schultz37419ed2016-02-02 12:32:50 -070033#define VK_LAYER_EXPORT __attribute__((visibility("default")))
Courtney Goeltzenleuchter64d1a712015-04-08 18:04:29 -060034#else
Karl Schultz37419ed2016-02-02 12:32:50 -070035#define VK_LAYER_EXPORT
Courtney Goeltzenleuchter64d1a712015-04-08 18:04:29 -060036#endif
37
Karl Schultz37419ed2016-02-02 12:32:50 -070038typedef struct VkLayerDispatchTable_ {
Jon Ashburn8d1b0b52015-05-18 13:20:15 -060039 PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060040 PFN_vkDestroyDevice DestroyDevice;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060041 PFN_vkGetDeviceQueue GetDeviceQueue;
42 PFN_vkQueueSubmit QueueSubmit;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060043 PFN_vkQueueWaitIdle QueueWaitIdle;
44 PFN_vkDeviceWaitIdle DeviceWaitIdle;
Chia-I Wu3432a0c2015-10-27 18:04:07 +080045 PFN_vkAllocateMemory AllocateMemory;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060046 PFN_vkFreeMemory FreeMemory;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060047 PFN_vkMapMemory MapMemory;
48 PFN_vkUnmapMemory UnmapMemory;
Courtney Goeltzenleuchterf69f8a22015-04-29 17:16:21 -060049 PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges;
50 PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges;
Courtney Goeltzenleuchterfb71f222015-07-09 21:57:28 -060051 PFN_vkGetDeviceMemoryCommitment GetDeviceMemoryCommitment;
Mark Lobodzinski16e8bef2015-07-03 15:58:09 -060052 PFN_vkGetImageSparseMemoryRequirements GetImageSparseMemoryRequirements;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060053 PFN_vkGetImageMemoryRequirements GetImageMemoryRequirements;
54 PFN_vkGetBufferMemoryRequirements GetBufferMemoryRequirements;
55 PFN_vkBindImageMemory BindImageMemory;
56 PFN_vkBindBufferMemory BindBufferMemory;
Chia-I Wu1ff4c3d2015-10-26 16:55:27 +080057 PFN_vkQueueBindSparse QueueBindSparse;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060058 PFN_vkCreateFence CreateFence;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060059 PFN_vkDestroyFence DestroyFence;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060060 PFN_vkGetFenceStatus GetFenceStatus;
61 PFN_vkResetFences ResetFences;
62 PFN_vkWaitForFences WaitForFences;
63 PFN_vkCreateSemaphore CreateSemaphore;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060064 PFN_vkDestroySemaphore DestroySemaphore;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060065 PFN_vkCreateEvent CreateEvent;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060066 PFN_vkDestroyEvent DestroyEvent;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060067 PFN_vkGetEventStatus GetEventStatus;
68 PFN_vkSetEvent SetEvent;
69 PFN_vkResetEvent ResetEvent;
70 PFN_vkCreateQueryPool CreateQueryPool;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060071 PFN_vkDestroyQueryPool DestroyQueryPool;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060072 PFN_vkGetQueryPoolResults GetQueryPoolResults;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060073 PFN_vkCreateBuffer CreateBuffer;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060074 PFN_vkDestroyBuffer DestroyBuffer;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060075 PFN_vkCreateBufferView CreateBufferView;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060076 PFN_vkDestroyBufferView DestroyBufferView;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060077 PFN_vkCreateImage CreateImage;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060078 PFN_vkDestroyImage DestroyImage;
Tony Barbour59a47322015-06-24 16:06:58 -060079 PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060080 PFN_vkCreateImageView CreateImageView;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060081 PFN_vkDestroyImageView DestroyImageView;
Courtney Goeltzenleuchter2d2cb682015-06-24 18:24:19 -060082 PFN_vkCreateShaderModule CreateShaderModule;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060083 PFN_vkDestroyShaderModule DestroyShaderModule;
Jon Ashburnc669cc62015-07-09 15:02:25 -060084 PFN_vkCreatePipelineCache CreatePipelineCache;
85 PFN_vkDestroyPipelineCache DestroyPipelineCache;
Jon Ashburnc669cc62015-07-09 15:02:25 -060086 PFN_vkGetPipelineCacheData GetPipelineCacheData;
87 PFN_vkMergePipelineCaches MergePipelineCaches;
88 PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines;
89 PFN_vkCreateComputePipelines CreateComputePipelines;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060090 PFN_vkDestroyPipeline DestroyPipeline;
Mark Lobodzinski0fadf5f2015-04-17 14:11:39 -050091 PFN_vkCreatePipelineLayout CreatePipelineLayout;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060092 PFN_vkDestroyPipelineLayout DestroyPipelineLayout;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060093 PFN_vkCreateSampler CreateSampler;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060094 PFN_vkDestroySampler DestroySampler;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060095 PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060096 PFN_vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060097 PFN_vkCreateDescriptorPool CreateDescriptorPool;
Tony Barbour1d2cd3f2015-07-03 10:33:54 -060098 PFN_vkDestroyDescriptorPool DestroyDescriptorPool;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -060099 PFN_vkResetDescriptorPool ResetDescriptorPool;
Chia-I Wu3432a0c2015-10-27 18:04:07 +0800100 PFN_vkAllocateDescriptorSets AllocateDescriptorSets;
Tony Barbour34ec6922015-07-10 10:50:45 -0600101 PFN_vkFreeDescriptorSets FreeDescriptorSets;
Chia-I Wu9d00ed72015-05-25 16:27:55 +0800102 PFN_vkUpdateDescriptorSets UpdateDescriptorSets;
Jon Ashburn42540ef2015-07-23 18:48:20 -0600103 PFN_vkCreateFramebuffer CreateFramebuffer;
104 PFN_vkDestroyFramebuffer DestroyFramebuffer;
105 PFN_vkCreateRenderPass CreateRenderPass;
106 PFN_vkDestroyRenderPass DestroyRenderPass;
107 PFN_vkGetRenderAreaGranularity GetRenderAreaGranularity;
Cody Northrope62183e2015-07-09 18:08:05 -0600108 PFN_vkCreateCommandPool CreateCommandPool;
109 PFN_vkDestroyCommandPool DestroyCommandPool;
110 PFN_vkResetCommandPool ResetCommandPool;
Chia-I Wu3432a0c2015-10-27 18:04:07 +0800111 PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
Courtney Goeltzenleuchterbee18a92015-10-23 14:21:05 -0600112 PFN_vkFreeCommandBuffers FreeCommandBuffers;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600113 PFN_vkBeginCommandBuffer BeginCommandBuffer;
114 PFN_vkEndCommandBuffer EndCommandBuffer;
115 PFN_vkResetCommandBuffer ResetCommandBuffer;
116 PFN_vkCmdBindPipeline CmdBindPipeline;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600117 PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets;
Courtney Goeltzenleuchterf68ad722015-04-16 13:38:46 -0600118 PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600119 PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer;
Courtney Goeltzenleuchter49c73082015-09-17 15:06:17 -0600120 PFN_vkCmdSetViewport CmdSetViewport;
Courtney Goeltzenleuchter078f8172015-09-21 11:44:06 -0600121 PFN_vkCmdSetScissor CmdSetScissor;
Courtney Goeltzenleuchter49c73082015-09-17 15:06:17 -0600122 PFN_vkCmdSetLineWidth CmdSetLineWidth;
123 PFN_vkCmdSetDepthBias CmdSetDepthBias;
124 PFN_vkCmdSetBlendConstants CmdSetBlendConstants;
125 PFN_vkCmdSetDepthBounds CmdSetDepthBounds;
126 PFN_vkCmdSetStencilCompareMask CmdSetStencilCompareMask;
127 PFN_vkCmdSetStencilWriteMask CmdSetStencilWriteMask;
128 PFN_vkCmdSetStencilReference CmdSetStencilReference;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600129 PFN_vkCmdDraw CmdDraw;
130 PFN_vkCmdDrawIndexed CmdDrawIndexed;
131 PFN_vkCmdDrawIndirect CmdDrawIndirect;
132 PFN_vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect;
133 PFN_vkCmdDispatch CmdDispatch;
134 PFN_vkCmdDispatchIndirect CmdDispatchIndirect;
135 PFN_vkCmdCopyBuffer CmdCopyBuffer;
136 PFN_vkCmdCopyImage CmdCopyImage;
137 PFN_vkCmdBlitImage CmdBlitImage;
138 PFN_vkCmdCopyBufferToImage CmdCopyBufferToImage;
139 PFN_vkCmdCopyImageToBuffer CmdCopyImageToBuffer;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600140 PFN_vkCmdUpdateBuffer CmdUpdateBuffer;
141 PFN_vkCmdFillBuffer CmdFillBuffer;
142 PFN_vkCmdClearColorImage CmdClearColorImage;
Chris Forbesd9be82b2015-06-22 17:21:59 +1200143 PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage;
Courtney Goeltzenleuchterc9323e02015-10-15 16:51:05 -0600144 PFN_vkCmdClearAttachments CmdClearAttachments;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600145 PFN_vkCmdResolveImage CmdResolveImage;
146 PFN_vkCmdSetEvent CmdSetEvent;
147 PFN_vkCmdResetEvent CmdResetEvent;
148 PFN_vkCmdWaitEvents CmdWaitEvents;
149 PFN_vkCmdPipelineBarrier CmdPipelineBarrier;
150 PFN_vkCmdBeginQuery CmdBeginQuery;
151 PFN_vkCmdEndQuery CmdEndQuery;
152 PFN_vkCmdResetQueryPool CmdResetQueryPool;
153 PFN_vkCmdWriteTimestamp CmdWriteTimestamp;
Courtney Goeltzenleuchter1dbc8e22015-04-15 18:21:13 -0600154 PFN_vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults;
Jon Ashburn42540ef2015-07-23 18:48:20 -0600155 PFN_vkCmdPushConstants CmdPushConstants;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600156 PFN_vkCmdBeginRenderPass CmdBeginRenderPass;
Chia-I Wu08accc62015-07-07 11:50:03 +0800157 PFN_vkCmdNextSubpass CmdNextSubpass;
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600158 PFN_vkCmdEndRenderPass CmdEndRenderPass;
Chia-I Wu0b50a1c2015-06-26 15:34:39 +0800159 PFN_vkCmdExecuteCommands CmdExecuteCommands;
Ian Elliott7e40db92015-08-21 15:09:33 -0600160 PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
161 PFN_vkDestroySwapchainKHR DestroySwapchainKHR;
162 PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
163 PFN_vkAcquireNextImageKHR AcquireNextImageKHR;
164 PFN_vkQueuePresentKHR QueuePresentKHR;
Mark Lobodzinski320ebe82016-08-29 12:14:55 -0600165 PFN_vkCmdDrawIndirectCountAMD CmdDrawIndirectCountAMD;
166 PFN_vkCmdDrawIndexedIndirectCountAMD CmdDrawIndexedIndirectCountAMD;
167#ifdef VK_USE_PLATFORM_WIN32_KHR
168 PFN_vkGetMemoryWin32HandleNV GetMemoryWin32HandleNV;
169#endif
Mark Young1a867442016-07-01 15:18:27 -0600170 PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR;
171 PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
172 PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
173 PFN_vkCmdDebugMarkerBeginEXT CmdDebugMarkerBeginEXT;
174 PFN_vkCmdDebugMarkerEndEXT CmdDebugMarkerEndEXT;
175 PFN_vkCmdDebugMarkerInsertEXT CmdDebugMarkerInsertEXT;
Jon Ashburnbacb0f52015-04-06 10:58:22 -0600176} VkLayerDispatchTable;
Courtney Goeltzenleuchter64d1a712015-04-08 18:04:29 -0600177
Karl Schultz37419ed2016-02-02 12:32:50 -0700178typedef struct VkLayerInstanceDispatchTable_ {
Jon Ashburnfbb4e252015-05-04 16:27:53 -0600179 PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
Jon Ashburnfbb4e252015-05-04 16:27:53 -0600180 PFN_vkDestroyInstance DestroyInstance;
181 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
Chris Forbesbc0bb772015-06-21 22:55:02 +1200182 PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
Karl Schultz37419ed2016-02-02 12:32:50 -0700183 PFN_vkGetPhysicalDeviceImageFormatProperties
184 GetPhysicalDeviceImageFormatProperties;
Courtney Goeltzenleuchter2caec862015-07-12 12:52:09 -0600185 PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
Karl Schultz37419ed2016-02-02 12:32:50 -0700186 PFN_vkGetPhysicalDeviceSparseImageFormatProperties
187 GetPhysicalDeviceSparseImageFormatProperties;
Tony Barbour59a47322015-06-24 16:06:58 -0600188 PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
Karl Schultz37419ed2016-02-02 12:32:50 -0700189 PFN_vkGetPhysicalDeviceQueueFamilyProperties
190 GetPhysicalDeviceQueueFamilyProperties;
Tony Barbour59a47322015-06-24 16:06:58 -0600191 PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
Courtney Goeltzenleuchter35985f62015-09-14 17:22:16 -0600192 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
193 PFN_vkEnumerateDeviceLayerProperties EnumerateDeviceLayerProperties;
Jon Ashburn2a1ec502015-11-23 18:55:15 -0700194 PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
Ian Elliott7e40db92015-08-21 15:09:33 -0600195 PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
Karl Schultz37419ed2016-02-02 12:32:50 -0700196 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
197 GetPhysicalDeviceSurfaceCapabilitiesKHR;
Ian Elliott33ed8482015-11-18 15:20:45 -0700198 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
Karl Schultz37419ed2016-02-02 12:32:50 -0700199 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR
200 GetPhysicalDeviceSurfacePresentModesKHR;
Courtney Goeltzenleuchter7415d5a2015-12-09 15:48:16 -0700201 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
202 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
203 PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
Ian Elliottdb4300a2015-11-23 10:17:23 -0700204#ifdef VK_USE_PLATFORM_MIR_KHR
205 PFN_vkCreateMirSurfaceKHR CreateMirSurfaceKHR;
Karl Schultz37419ed2016-02-02 12:32:50 -0700206 PFN_vkGetPhysicalDeviceMirPresentationSupportKHR
207 GetPhysicalDeviceMirPresentationSupportKHR;
Ian Elliottdb4300a2015-11-23 10:17:23 -0700208#endif
209#ifdef VK_USE_PLATFORM_WAYLAND_KHR
210 PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR;
Karl Schultz37419ed2016-02-02 12:32:50 -0700211 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR
212 GetPhysicalDeviceWaylandPresentationSupportKHR;
Ian Elliottdb4300a2015-11-23 10:17:23 -0700213#endif
214#ifdef VK_USE_PLATFORM_WIN32_KHR
215 PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR;
Karl Schultz37419ed2016-02-02 12:32:50 -0700216 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR
217 GetPhysicalDeviceWin32PresentationSupportKHR;
Ian Elliottdb4300a2015-11-23 10:17:23 -0700218#endif
219#ifdef VK_USE_PLATFORM_XCB_KHR
220 PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR;
Karl Schultz37419ed2016-02-02 12:32:50 -0700221 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR
222 GetPhysicalDeviceXcbPresentationSupportKHR;
Ian Elliottdb4300a2015-11-23 10:17:23 -0700223#endif
224#ifdef VK_USE_PLATFORM_XLIB_KHR
225 PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR;
Karl Schultz37419ed2016-02-02 12:32:50 -0700226 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR
227 GetPhysicalDeviceXlibPresentationSupportKHR;
Ian Elliottdb4300a2015-11-23 10:17:23 -0700228#endif
Mark Lobodzinskia8a5f852015-12-10 16:25:21 -0700229#ifdef VK_USE_PLATFORM_ANDROID_KHR
230 PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
231#endif
Jon Ashburnc7d3e732016-03-08 09:30:30 -0700232 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR
233 GetPhysicalDeviceDisplayPropertiesKHR;
234 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR
235 GetPhysicalDeviceDisplayPlanePropertiesKHR;
236 PFN_vkGetDisplayPlaneSupportedDisplaysKHR
237 GetDisplayPlaneSupportedDisplaysKHR;
238 PFN_vkGetDisplayModePropertiesKHR
239 GetDisplayModePropertiesKHR;
240 PFN_vkCreateDisplayModeKHR
241 CreateDisplayModeKHR;
242 PFN_vkGetDisplayPlaneCapabilitiesKHR
243 GetDisplayPlaneCapabilitiesKHR;
244 PFN_vkCreateDisplayPlaneSurfaceKHR
245 CreateDisplayPlaneSurfaceKHR;
Mark Lobodzinski320ebe82016-08-29 12:14:55 -0600246 PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
247 GetPhysicalDeviceExternalImageFormatPropertiesNV;
Jon Ashburnfbb4e252015-05-04 16:27:53 -0600248} VkLayerInstanceDispatchTable;
249
Courtney Goeltzenleuchter64d1a712015-04-08 18:04:29 -0600250// ------------------------------------------------------------------------------------------------
Courtney Goeltzenleuchter8286acc2016-01-08 11:40:27 -0700251// CreateInstance and CreateDevice support structures
Courtney Goeltzenleuchter00150eb2016-01-08 12:18:43 -0700252
Jon Ashburnc3c58772016-03-29 11:16:01 -0600253/* Sub type of structure for instance and device loader ext of CreateInfo.
ttyio37c64842016-04-10 22:07:28 +0800254 * When sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
255 * or sType == VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
Jon Ashburnc3c58772016-03-29 11:16:01 -0600256 * then VkLayerFunction indicates struct type pointed to by pNext
257 */
Karl Schultz37419ed2016-02-02 12:32:50 -0700258typedef enum VkLayerFunction_ {
Courtney Goeltzenleuchter00150eb2016-01-08 12:18:43 -0700259 VK_LAYER_LINK_INFO = 0,
Jon Ashburned8f2312016-03-31 10:52:22 -0600260 VK_LOADER_DATA_CALLBACK = 1
Courtney Goeltzenleuchter00150eb2016-01-08 12:18:43 -0700261} VkLayerFunction;
262
Courtney Goeltzenleuchter8286acc2016-01-08 11:40:27 -0700263typedef struct VkLayerInstanceLink_ {
Karl Schultz37419ed2016-02-02 12:32:50 -0700264 struct VkLayerInstanceLink_ *pNext;
Courtney Goeltzenleuchter8286acc2016-01-08 11:40:27 -0700265 PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
266} VkLayerInstanceLink;
267
Courtney Goeltzenleuchter00150eb2016-01-08 12:18:43 -0700268/*
269 * When creating the device chain the loader needs to pass
270 * down information about it's device structure needed at
271 * the end of the chain. Passing the data via the
272 * VkLayerDeviceInfo avoids issues with finding the
273 * exact instance being used.
274 */
275typedef struct VkLayerDeviceInfo_ {
276 void *device_info;
277 PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
278} VkLayerDeviceInfo;
279
Jon Ashburnc3c58772016-03-29 11:16:01 -0600280typedef VkResult (VKAPI_PTR *PFN_vkSetInstanceLoaderData)(VkInstance instance,
281 void *object);
Jon Ashburned8f2312016-03-31 10:52:22 -0600282typedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device,
283 void *object);
Jon Ashburnc3c58772016-03-29 11:16:01 -0600284
Courtney Goeltzenleuchter8286acc2016-01-08 11:40:27 -0700285typedef struct {
Vinjn Zhange5891442016-04-06 15:38:24 +0800286 VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
Karl Schultz37419ed2016-02-02 12:32:50 -0700287 const void *pNext;
Courtney Goeltzenleuchter00150eb2016-01-08 12:18:43 -0700288 VkLayerFunction function;
289 union {
Karl Schultz37419ed2016-02-02 12:32:50 -0700290 VkLayerInstanceLink *pLayerInfo;
Jon Ashburnc3c58772016-03-29 11:16:01 -0600291 PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData;
Courtney Goeltzenleuchter00150eb2016-01-08 12:18:43 -0700292 } u;
Courtney Goeltzenleuchter8286acc2016-01-08 11:40:27 -0700293} VkLayerInstanceCreateInfo;
294
295typedef struct VkLayerDeviceLink_ {
Karl Schultz37419ed2016-02-02 12:32:50 -0700296 struct VkLayerDeviceLink_ *pNext;
Courtney Goeltzenleuchter8286acc2016-01-08 11:40:27 -0700297 PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr;
298 PFN_vkGetDeviceProcAddr pfnNextGetDeviceProcAddr;
299} VkLayerDeviceLink;
300
301typedef struct {
Vinjn Zhange5891442016-04-06 15:38:24 +0800302 VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
Karl Schultz37419ed2016-02-02 12:32:50 -0700303 const void *pNext;
Courtney Goeltzenleuchter00150eb2016-01-08 12:18:43 -0700304 VkLayerFunction function;
305 union {
Karl Schultz37419ed2016-02-02 12:32:50 -0700306 VkLayerDeviceLink *pLayerInfo;
Jon Ashburned8f2312016-03-31 10:52:22 -0600307 PFN_vkSetDeviceLoaderData pfnSetDeviceLoaderData;
Courtney Goeltzenleuchter00150eb2016-01-08 12:18:43 -0700308 } u;
Courtney Goeltzenleuchter8286acc2016-01-08 11:40:27 -0700309} VkLayerDeviceCreateInfo;
310