/* This file is part of Magnum. Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026 Vladimír Vondruš Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ namespace Magnum { /** @page vulkan Vulkan @brief State of Vulkan support, version and extension requirements. @m_since_latest The following table maps Vulkan function names to Magnum API, useful for developers with existing Vulkan background. Note that, as reverse mapping, each function documentation also contains list of Vulkan functions used. You can also use the search functionality to find out which Vulkan API corresponds to which Magnum function, class or enum value. Just enter name of an Vulkan function, define or GLSL name into the search box. - @subpage vulkan-mapping State of implementation of particular Vulkan versions and extensions is in the following table. - @subpage vulkan-support While not as bad as with OpenGL, neither the Vulkan driver world is ideal. In order to work on majority of platforms, the engine has to work around some driver bugs. An exhaustive list is here: - @subpage vulkan-workarounds @section vulkan-required-extensions Version and extension requirements The engine can work on unextended Vulkan 1.0, but some specific functionality has greater requirements. Following are lists of features requiring specific Vulkan version. In most cases it is also specified which extension is required, so if a particular driver supports the required extension, it doesn't need to have required Vulkan version too (e.g. @vk_extension{KHR,sampler_mirror_clamp_to_edge} is usually supported everywhere, even if the drivers don't have Vulkan 1.2). - @subpage requires-vk11 - @subpage requires-vk12 - @subpage requires-vk-extension - @subpage requires-vk-feature */ /** @page requires-vk11 Functionality requiring Vulkan 1.1 @m_footernavigation @m_since_latest APIs listed here require a particular Vulkan version to be supported by the instance / device or, if specified, an extension to be supported and enabled on the instance / device using @ref Vk::InstanceCreateInfo::addEnabledExtensions() / @ref Vk::DeviceCreateInfo::addEnabledExtensions(). */ /** @page requires-vk12 Functionality requiring Vulkan 1.2 @m_footernavigation @m_since_latest APIs listed here require a particular Vulkan version to be supported by the instance / device or, if specified, an extension to be supported and enabled on the instance / device using @ref Vk::InstanceCreateInfo::addEnabledExtensions() / @ref Vk::DeviceCreateInfo::addEnabledExtensions(). */ /** @page requires-vk-extension Functionality requiring a specific Vulkan extension @m_footernavigation @m_since_latest APIs listed here require a Vulkan extension to be supported and enabled on the instance / device using @ref Vk::InstanceCreateInfo::addEnabledExtensions() / @ref Vk::DeviceCreateInfo::addEnabledExtensions(). */ /** @page requires-vk-feature Functionality requiring a specific Vulkan feature @m_footernavigation @m_since_latest APIs listed here require a Vulkan feature to be supported and enabled on the device using @ref Vk::DeviceCreateInfo::setEnabledFeatures(). Note that some features are coming from extensions and thus require also the corresponding extension to be enabled. */ }