/* * Copyright 2015-2023 The Khronos Group Inc. * Copyright 2015-2023 Valve Corporation * Copyright 2015-2023 LunarG, Inc. * * SPDX-License-Identifier: Apache-2.0 */ #pragma once /* Need to define dispatch table * Core struct can then have ptr to dispatch table at the top * Along with object ptrs for current and next OBJ */ #include "vulkan_core.h" #define MAX_NUM_UNKNOWN_EXTS … // Loader-Layer version negotiation API. Versions add the following features: // Versions 0/1 - Initial. Doesn't support vk_layerGetPhysicalDeviceProcAddr // or vk_icdNegotiateLoaderLayerInterfaceVersion. // Version 2 - Add support for vk_layerGetPhysicalDeviceProcAddr and // vk_icdNegotiateLoaderLayerInterfaceVersion. #define CURRENT_LOADER_LAYER_INTERFACE_VERSION … #define MIN_SUPPORTED_LOADER_LAYER_INTERFACE_VERSION … #define VK_CURRENT_CHAIN_VERSION … // Typedef for use in the interfaces below PFN_GetPhysicalDeviceProcAddr; // Version negotiation values VkNegotiateLayerStructType; // Version negotiation structures VkNegotiateLayerInterface; // Version negotiation functions PFN_vkNegotiateLoaderLayerInterfaceVersion; // Function prototype for unknown physical device extension command PFN_PhysDevExt; // ------------------------------------------------------------------------------------------------ // CreateInstance and CreateDevice support structures /* Sub type of structure for instance and device loader ext of CreateInfo. * When sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO * or sType == VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO * then VkLayerFunction indicates struct type pointed to by pNext */ VkLayerFunction; VkLayerInstanceLink; /* * When creating the device chain the loader needs to pass * down information about it's device structure needed at * the end of the chain. Passing the data via the * VkLayerDeviceInfo avoids issues with finding the * exact instance being used. */ VkLayerDeviceInfo; PFN_vkSetInstanceLoaderData; PFN_vkSetDeviceLoaderData; PFN_vkLayerCreateDevice; PFN_vkLayerDestroyDevice; VkLoaderFlagBits; VkLoaderFeatureFlags; VkLayerInstanceCreateInfo; VkLayerDeviceLink; VkLayerDeviceCreateInfo; #ifdef __cplusplus extern "C" { #endif VKAPI_ATTR VkResult VKAPI_CALL vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLayerInterface *pVersionStruct); VkChainType; VkChainHeader; VkEnumerateInstanceExtensionPropertiesChain; VkEnumerateInstanceLayerPropertiesChain; VkEnumerateInstanceVersionChain; #ifdef __cplusplus } #endif