// Copyright 2020-2021 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0

= LICENSE file for the KhronosGroup/Vulkan-Docs project

Files in this repository fall under one of these licenses:

  * SPDX license identifier: "`Apache-2.0 OR MIT`"
  ** Apache License 2.0 OR MIT License
  ** For scripts and XML which need to be usable in GPL-licensed projects.

  * SPDX license identifier: "`Apache-2.0`"
  ** Apache License 2.0
  ** For other scripts

  * SPDX license identifier: "`CC-BY-4.0`"
  ** Creative Commons Attribution 4.0 International
  ** For specification source documents

  * SPDX license identifier: "`MIT`"
  ** MIT License
  ** For files copied from other MIT-licensed projects

  * SPDX license identifier: "`LicenseRef-MPLUS`"
  ** M+ Font License
  ** For fonts derived from the M+ Font Project
  ** This license is open source, but not OSI approved

Full license text of these licenses is available at:

  * Apache-2.0: https://opensource.org/licenses/Apache-2.0
  * MIT: https://opensource.org/licenses/MIT
  * CC-BY-4.0: https://creativecommons.org/licenses/by/4.0/legalcode
  * LicenseRef-MPLUS: https://osdn.net/softwaremap/trove_list.php?form_cat=370
