11dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter/* 21dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * Copyright (c) 2015-2016 The Khronos Group Inc. 31dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * Copyright (c) 2015-2016 Valve Corporation 41dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * Copyright (c) 2015-2016 LunarG, Inc. 51dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * Copyright (c) 2016 Google Inc. 61dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * 71dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * Permission is hereby granted, free of charge, to any person obtaining a copy 81dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * of this software and/or associated documentation files (the "Materials"), to 91dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * deal in the Materials without restriction, including without limitation the 101dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 111dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * sell copies of the Materials, and to permit persons to whom the Materials are 121dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * furnished to do so, subject to the following conditions: 131dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * 141dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * The above copyright notice(s) and this permission notice shall be included in 151dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * all copies or substantial portions of the Materials. 161dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * 171dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 181dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 191dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 201dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * 211dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 221dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 231dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE 241dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * USE OR OTHER DEALINGS IN THE MATERIALS. 251dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter * 261dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter */ 271dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter#pragma once 281dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter 291dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter#include <vulkan/vulkan.h> 301dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter 311dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter// ------------------------------------------------------------------------------------------------ 321dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter// CreateInstance and CreateDevice support structures 331dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter 341dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchtertypedef enum VkLayerFunction_ { 351dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter VK_LAYER_FUNCTION_LINK = 0, 367fcd744c42c91eab5210df2080b0a7a6b5838f68Chia-I Wu VK_LAYER_FUNCTION_DATA_CALLBACK = 1 371dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter} VkLayerFunction; 381dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter 391dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchtertypedef struct VkLayerInstanceLink_ { 401dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter struct VkLayerInstanceLink_* pNext; 411dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; 421dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter} VkLayerInstanceLink; 431dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter 447fcd744c42c91eab5210df2080b0a7a6b5838f68Chia-I Wutypedef VkResult(VKAPI_PTR* PFN_vkSetInstanceLoaderData)(VkInstance instance, 457fcd744c42c91eab5210df2080b0a7a6b5838f68Chia-I Wu void* object); 467fcd744c42c91eab5210df2080b0a7a6b5838f68Chia-I Wutypedef VkResult(VKAPI_PTR* PFN_vkSetDeviceLoaderData)(VkDevice device, 477fcd744c42c91eab5210df2080b0a7a6b5838f68Chia-I Wu void* object); 481dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter 491dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchtertypedef struct { 501dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO 511dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter const void* pNext; 521dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter VkLayerFunction function; 531dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter union { 541dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter VkLayerInstanceLink* pLayerInfo; 557fcd744c42c91eab5210df2080b0a7a6b5838f68Chia-I Wu PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData; 561dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter } u; 571dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter} VkLayerInstanceCreateInfo; 581dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter 591dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchtertypedef struct VkLayerDeviceLink_ { 601dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter struct VkLayerDeviceLink_* pNext; 611dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; 621dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter PFN_vkGetDeviceProcAddr pfnNextGetDeviceProcAddr; 631dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter} VkLayerDeviceLink; 641dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter 651dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchtertypedef struct { 661dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO 671dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter const void* pNext; 681dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter VkLayerFunction function; 691dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter union { 701dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter VkLayerDeviceLink* pLayerInfo; 717fcd744c42c91eab5210df2080b0a7a6b5838f68Chia-I Wu PFN_vkSetDeviceLoaderData pfnSetDeviceLoaderData; 721dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter } u; 731dd712aefdc771297823b24f26d768cd8bd14d49Courtney Goeltzenleuchter} VkLayerDeviceCreateInfo; 74