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

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

=== Other Extension Metadata

*Last Modified Date*::
    2021-01-11
*IP Status*::
    No known IP claims.
*Contributors*::
  - Courtney Goeltzenleuchter, Google
  - Shahbaz Youssefi, Google

=== Description

This extension allows list primitives to use the primitive restart index
value.
This provides a more efficient implementation when layering OpenGL
functionality on Vulkan by avoiding emulation which incurs data copies.

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

=== Version History

 * Revision 0, 2020-09-14 (Courtney Goeltzenleuchter)
   - Internal revisions

 * Revision 1, 2021-01-11 (Shahbaz Youssefi)
   - Add the `primitiveTopologyPatchListRestart` feature
   - Internal revisions
