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

include::{generated}/meta/{refprefix}VK_KHR_vulkan_memory_model.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2018-12-10
*IP Status*::
    No known IP claims.
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.2 Core
  - This extension requires
    {spirv}/KHR/SPV_KHR_vulkan_memory_model.html[`SPV_KHR_vulkan_memory_model`]
*Contributors*::
  - Jeff Bolz, NVIDIA
  - Alan Baker, Google
  - Tobias Hector, AMD
  - David Neto, Google
  - Robert Simpson, Qualcomm Technologies, Inc.
  - Brian Sumner, AMD

=== Description

The `VK_KHR_vulkan_memory_model` extension allows use of the
<<memory-model,Vulkan Memory Model>>, which formally defines how to
synchronize memory accesses to the same memory locations performed by
multiple shader invocations.

[NOTE]
.Note
====
Version 3 of the spec added a member
(pname:vulkanMemoryModelAvailabilityVisibilityChains) to
slink:VkPhysicalDeviceVulkanMemoryModelFeaturesKHR, which is an incompatible
change from version 2.
====

=== Promotion to Vulkan 1.2

All functionality in this extension is included in core Vulkan 1.2, with the
KHR suffix omitted.
However, if Vulkan 1.2 is supported and this extension is not, the
code:vulkanMemoryModel capability is optional.
The original type, enum and command names are still available as aliases of
the core functionality.

include::{generated}/interfaces/VK_KHR_vulkan_memory_model.txt[]

=== New SPIR-V Capabilities

  * <<spirvenv-capabilities-table-VulkanMemoryModel,code:VulkanMemoryModelKHR>>

=== Version History

  * Revision 1, 2018-06-24 (Jeff Bolz)
    - Initial draft
  * Revision 3, 2018-12-10 (Jeff Bolz)
    - Add vulkanMemoryModelAvailabilityVisibilityChains member to the
      VkPhysicalDeviceVulkanMemoryModelFeaturesKHR structure.
