1 /* 2 ** Copyright (c) 2015-2016 The Khronos Group Inc. 3 ** 4 ** Permission is hereby granted, free of charge, to any person obtaining a 5 ** copy of this software and/or associated documentation files (the 6 ** "Materials"), to deal in the Materials without restriction, including 7 ** without limitation the rights to use, copy, modify, merge, publish, 8 ** distribute, sublicense, and/or sell copies of the Materials, and to 9 ** permit persons to whom the Materials are furnished to do so, subject to 10 ** the following conditions: 11 ** 12 ** The above copyright notice and this permission notice shall be included 13 ** in all copies or substantial portions of the Materials. 14 ** 15 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 18 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 19 ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 20 ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 21 ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 22 */ 23 module derelict.vulkan.base; 24 extern(System): 25 26 //#include "vk_platform.h" 27 28 auto VK_MAKE_VERSION(int major, int minor, int patch) { 29 return (major << 22) | (minor << 12) | patch; 30 } 31 32 auto VK_VERSION_MAJOR(uint ver) { 33 return ver >> 22; 34 } 35 36 auto VK_VERSION_MINOR(uint ver) { 37 return (ver >> 12) & 0x3ff; 38 } 39 40 auto VK_VERSION_PATCH(uint ver) { 41 return ver & 0xfff; 42 } 43 44 package auto VK_DEFINE_HANDLE(string name) { 45 return "struct " ~ name ~ "_T; \n alias " ~ name ~ " = " ~ name ~ "_T*;"; 46 } 47 48 package auto VK_DEFINE_NON_DISPATCHABLE_HANDLE(string name) { 49 // #if defined(__LP64__) || defined(_WIN64) 50 // || defined(__x86_64__) || defined(_M_X64) 51 // || defined(__ia64) || defined (_M_IA64) 52 // || defined(__aarch64__) || defined(__powerpc64__) 53 return VK_DEFINE_HANDLE(name); 54 } 55 56 alias VkFlags = uint; 57 alias VkBool32 = uint; 58 alias VkDeviceSize = ulong; 59 alias VkSampleMask = uint; 60 61 enum VK_VERSION_1_0 = 1; 62 enum VK_API_VERSION = VK_MAKE_VERSION(1, 0, 3); // Vulkan API version supported by this file 63 enum VK_NULL_HANDLE = null; 64 65 enum VK_TRUE = 1; 66 enum VK_FALSE = 0; 67 68 enum VK_UUID_SIZE = 16; 69 enum VK_WHOLE_SIZE = (~0UL); 70 71 enum VK_LOD_CLAMP_NONE = 1000.0f; 72 enum VK_ATTACHMENT_UNUSED = (~0U); 73 enum VK_SUBPASS_EXTERNAL = (~0U); 74 75 enum VK_QUEUE_FAMILY_IGNORED = (~0U); 76 enum VK_REMAINING_MIP_LEVELS = (~0U); 77 enum VK_REMAINING_ARRAY_LAYERS = (~0U); 78 79 enum VK_MAX_MEMORY_TYPES = 32; 80 enum VK_MAX_MEMORY_HEAPS = 16; 81 enum VK_MAX_EXTENSION_NAME_SIZE = 256; 82 enum VK_MAX_DESCRIPTION_SIZE = 256; 83 enum VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256;