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

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

=== Other Extension Metadata

*Last Modified Date*::
    2018-04-11
*Interactions and External Dependencies*::
  - Promoted to Vulkan 1.2 Core
*IP Status*::
    No known IP claims.
*Contributors*::
  - Baldur Karlsson
  - Matthaeus G. Chajdas, AMD
  - Piers Daniell, NVIDIA
  - Alexander Galazin, Arm
  - Jesse Hall, Google
  - Daniel Rakos, AMD

=== Description

This extension provides a new physical device query which allows retrieving
information about the driver implementation, allowing applications to
determine which physical device corresponds to which particular vendor's
driver, and which conformance test suite version the driver implementation
is compliant with.

=== Promotion to Vulkan 1.2

All functionality in this extension is included in core Vulkan 1.2, with the
KHR suffix omitted.
The original type, enum and command names are still available as aliases of
the core functionality.

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

=== Version History

 * Revision 1, 2018-04-11 (Daniel Rakos)
   - Internal revisions
