chromium/third_party/vulkan-headers/src/include/vulkan/vk_layer.h

/*
 * 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