111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// File: vk_layer.h 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 2015-2016 The Khronos Group Inc. 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 2015-2016 Valve Corporation 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 2015-2016 LunarG, Inc. 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Licensed under the Apache License, Version 2.0 (the "License"); 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * you may not use this file except in compliance with the License. 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * You may obtain a copy of the License at 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * http://www.apache.org/licenses/LICENSE-2.0 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Unless required by applicable law or agreed to in writing, software 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * distributed under the License is distributed on an "AS IS" BASIS, 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * See the License for the specific language governing permissions and 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * limitations under the License. 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Need to define dispatch table 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Core struct can then have ptr to dispatch table at the top 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Along with object ptrs for current and next OBJ 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#pragma once 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "vulkan.h" 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(__GNUC__) && __GNUC__ >= 4 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define VK_LAYER_EXPORT __attribute__((visibility("default"))) 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define VK_LAYER_EXPORT __attribute__((visibility("default"))) 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define VK_LAYER_EXPORT 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct VkLayerDispatchTable_ { 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetDeviceProcAddr GetDeviceProcAddr; 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyDevice DestroyDevice; 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetDeviceQueue GetDeviceQueue; 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkQueueSubmit QueueSubmit; 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkQueueWaitIdle QueueWaitIdle; 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDeviceWaitIdle DeviceWaitIdle; 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkAllocateMemory AllocateMemory; 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkFreeMemory FreeMemory; 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkMapMemory MapMemory; 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkUnmapMemory UnmapMemory; 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges; 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges; 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetDeviceMemoryCommitment GetDeviceMemoryCommitment; 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetImageSparseMemoryRequirements GetImageSparseMemoryRequirements; 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetImageMemoryRequirements GetImageMemoryRequirements; 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetBufferMemoryRequirements GetBufferMemoryRequirements; 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkBindImageMemory BindImageMemory; 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkBindBufferMemory BindBufferMemory; 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkQueueBindSparse QueueBindSparse; 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateFence CreateFence; 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyFence DestroyFence; 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetFenceStatus GetFenceStatus; 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkResetFences ResetFences; 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkWaitForFences WaitForFences; 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateSemaphore CreateSemaphore; 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroySemaphore DestroySemaphore; 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateEvent CreateEvent; 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyEvent DestroyEvent; 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetEventStatus GetEventStatus; 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkSetEvent SetEvent; 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkResetEvent ResetEvent; 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateQueryPool CreateQueryPool; 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyQueryPool DestroyQueryPool; 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetQueryPoolResults GetQueryPoolResults; 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateBuffer CreateBuffer; 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyBuffer DestroyBuffer; 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateBufferView CreateBufferView; 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyBufferView DestroyBufferView; 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateImage CreateImage; 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyImage DestroyImage; 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout; 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateImageView CreateImageView; 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyImageView DestroyImageView; 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateShaderModule CreateShaderModule; 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyShaderModule DestroyShaderModule; 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreatePipelineCache CreatePipelineCache; 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyPipelineCache DestroyPipelineCache; 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPipelineCacheData GetPipelineCacheData; 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkMergePipelineCaches MergePipelineCaches; 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines; 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateComputePipelines CreateComputePipelines; 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyPipeline DestroyPipeline; 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreatePipelineLayout CreatePipelineLayout; 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyPipelineLayout DestroyPipelineLayout; 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateSampler CreateSampler; 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroySampler DestroySampler; 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout; 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout; 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateDescriptorPool CreateDescriptorPool; 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyDescriptorPool DestroyDescriptorPool; 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkResetDescriptorPool ResetDescriptorPool; 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkAllocateDescriptorSets AllocateDescriptorSets; 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkFreeDescriptorSets FreeDescriptorSets; 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkUpdateDescriptorSets UpdateDescriptorSets; 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateFramebuffer CreateFramebuffer; 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyFramebuffer DestroyFramebuffer; 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateRenderPass CreateRenderPass; 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyRenderPass DestroyRenderPass; 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetRenderAreaGranularity GetRenderAreaGranularity; 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateCommandPool CreateCommandPool; 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyCommandPool DestroyCommandPool; 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkResetCommandPool ResetCommandPool; 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkAllocateCommandBuffers AllocateCommandBuffers; 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkFreeCommandBuffers FreeCommandBuffers; 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkBeginCommandBuffer BeginCommandBuffer; 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkEndCommandBuffer EndCommandBuffer; 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkResetCommandBuffer ResetCommandBuffer; 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdBindPipeline CmdBindPipeline; 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets; 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers; 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer; 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetViewport CmdSetViewport; 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetScissor CmdSetScissor; 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetLineWidth CmdSetLineWidth; 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetDepthBias CmdSetDepthBias; 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetBlendConstants CmdSetBlendConstants; 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetDepthBounds CmdSetDepthBounds; 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetStencilCompareMask CmdSetStencilCompareMask; 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetStencilWriteMask CmdSetStencilWriteMask; 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetStencilReference CmdSetStencilReference; 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdDraw CmdDraw; 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdDrawIndexed CmdDrawIndexed; 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdDrawIndirect CmdDrawIndirect; 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect; 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdDispatch CmdDispatch; 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdDispatchIndirect CmdDispatchIndirect; 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdCopyBuffer CmdCopyBuffer; 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdCopyImage CmdCopyImage; 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdBlitImage CmdBlitImage; 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdCopyBufferToImage CmdCopyBufferToImage; 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdCopyImageToBuffer CmdCopyImageToBuffer; 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdUpdateBuffer CmdUpdateBuffer; 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdFillBuffer CmdFillBuffer; 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdClearColorImage CmdClearColorImage; 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage; 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdClearAttachments CmdClearAttachments; 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdResolveImage CmdResolveImage; 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdSetEvent CmdSetEvent; 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdResetEvent CmdResetEvent; 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdWaitEvents CmdWaitEvents; 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdPipelineBarrier CmdPipelineBarrier; 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdBeginQuery CmdBeginQuery; 15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdEndQuery CmdEndQuery; 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdResetQueryPool CmdResetQueryPool; 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdWriteTimestamp CmdWriteTimestamp; 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults; 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdPushConstants CmdPushConstants; 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdBeginRenderPass CmdBeginRenderPass; 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdNextSubpass CmdNextSubpass; 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdEndRenderPass CmdEndRenderPass; 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCmdExecuteCommands CmdExecuteCommands; 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateSwapchainKHR CreateSwapchainKHR; 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroySwapchainKHR DestroySwapchainKHR; 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR; 16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkAcquireNextImageKHR AcquireNextImageKHR; 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkQueuePresentKHR QueuePresentKHR; 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerDispatchTable; 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct VkLayerInstanceDispatchTable_ { 16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetInstanceProcAddr GetInstanceProcAddr; 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyInstance DestroyInstance; 17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; 17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures; 17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceImageFormatProperties 17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceImageFormatProperties; 17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties; 17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceSparseImageFormatProperties 17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceSparseImageFormatProperties; 17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties; 17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceQueueFamilyProperties 17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceQueueFamilyProperties; 18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties; 18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties; 18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkEnumerateDeviceLayerProperties EnumerateDeviceLayerProperties; 18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroySurfaceKHR DestroySurfaceKHR; 18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR; 18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR 18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceSurfaceCapabilitiesKHR; 18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR; 18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceSurfacePresentModesKHR 18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceSurfacePresentModesKHR; 19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT; 19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT; 19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDebugReportMessageEXT DebugReportMessageEXT; 19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef VK_USE_PLATFORM_MIR_KHR 19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateMirSurfaceKHR CreateMirSurfaceKHR; 19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceMirPresentationSupportKHR 19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceMirPresentationSupportKHR; 19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef VK_USE_PLATFORM_WAYLAND_KHR 19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR; 20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR 20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceWaylandPresentationSupportKHR; 20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef VK_USE_PLATFORM_WIN32_KHR 20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR; 20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR 20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceWin32PresentationSupportKHR; 20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef VK_USE_PLATFORM_XCB_KHR 20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR; 21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR 21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceXcbPresentationSupportKHR; 21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef VK_USE_PLATFORM_XLIB_KHR 21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR; 21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR 21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceXlibPresentationSupportKHR; 21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef VK_USE_PLATFORM_ANDROID_KHR 21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR; 22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceDisplayPropertiesKHR 22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceDisplayPropertiesKHR; 22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR 22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetPhysicalDeviceDisplayPlanePropertiesKHR; 22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetDisplayPlaneSupportedDisplaysKHR 22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetDisplayPlaneSupportedDisplaysKHR; 22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetDisplayModePropertiesKHR 22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetDisplayModePropertiesKHR; 22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateDisplayModeKHR 23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert CreateDisplayModeKHR; 23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetDisplayPlaneCapabilitiesKHR 23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert GetDisplayPlaneCapabilitiesKHR; 23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkCreateDisplayPlaneSurfaceKHR 23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert CreateDisplayPlaneSurfaceKHR; 23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerInstanceDispatchTable; 23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// LL node for tree of dbg callback functions 23811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct VkLayerDbgFunctionNode_ { 23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VkDebugReportCallbackEXT msgCallback; 24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkDebugReportCallbackEXT pfnMsgCallback; 24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VkFlags msgFlags; 24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *pUserData; 24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct VkLayerDbgFunctionNode_ *pNext; 24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerDbgFunctionNode; 24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef enum VkLayerDbgAction_ { 24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VK_DBG_LAYER_ACTION_IGNORE = 0x0, 24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VK_DBG_LAYER_ACTION_CALLBACK = 0x1, 24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VK_DBG_LAYER_ACTION_LOG_MSG = 0x2, 25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VK_DBG_LAYER_ACTION_BREAK = 0x4, 25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VK_DBG_LAYER_ACTION_DEBUG_OUTPUT = 0x8, 25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerDbgAction; 25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// ------------------------------------------------------------------------------------------------ 25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// CreateInstance and CreateDevice support structures 25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Sub type of structure for instance and device loader ext of CreateInfo. 25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * When sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO 25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * or sType == VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO 26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * then VkLayerFunction indicates struct type pointed to by pNext 26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 26211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef enum VkLayerFunction_ { 26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VK_LAYER_LINK_INFO = 0, 26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VK_LOADER_DATA_CALLBACK = 1 26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerFunction; 26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 26711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct VkLayerInstanceLink_ { 26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct VkLayerInstanceLink_ *pNext; 26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; 27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerInstanceLink; 27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * When creating the device chain the loader needs to pass 27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * down information about it's device structure needed at 27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * the end of the chain. Passing the data via the 27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * VkLayerDeviceInfo avoids issues with finding the 27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * exact instance being used. 27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 27911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct VkLayerDeviceInfo_ { 28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *device_info; 28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; 28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerDeviceInfo; 28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 28411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef VkResult (VKAPI_PTR *PFN_vkSetInstanceLoaderData)(VkInstance instance, 28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *object); 28611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device, 28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void *object); 28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 28911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct { 29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO 29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const void *pNext; 29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VkLayerFunction function; 29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union { 29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VkLayerInstanceLink *pLayerInfo; 29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData; 29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } u; 29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerInstanceCreateInfo; 29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 29911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct VkLayerDeviceLink_ { 30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct VkLayerDeviceLink_ *pNext; 30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; 30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkGetDeviceProcAddr pfnNextGetDeviceProcAddr; 30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerDeviceLink; 30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 30511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct { 30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO 30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert const void *pNext; 30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VkLayerFunction function; 30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union { 31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert VkLayerDeviceLink *pLayerInfo; 31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert PFN_vkSetDeviceLoaderData pfnSetDeviceLoaderData; 31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } u; 31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} VkLayerDeviceCreateInfo; 31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 315