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

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

=== Other Extension Metadata

*Last Modified Date*::
    2020-07-21
*IP Status*::
    No known IP claims.
*Contributors*::
  - Bill Hollings, The Brenwill Workshop Ltd.
  - Daniel Koch, NVIDIA
  - Dzmitry Malyshau, Mozilla
  - Chip Davis, CodeWeavers
  - Dan Ginsburg, Valve
  - Mike Weiblen, LunarG
  - Neil Trevett, NVIDIA
  - Alexey Knyazev, Independent

=== Description

The `VK_KHR_portability_subset extension allows a non-conformant Vulkan
implementation to be built on top of another non-Vulkan graphics API, and
identifies differences between that implementation and a fully-conformant
native Vulkan implementation.

This extension provides Vulkan implementations with the ability to mark
otherwise-required capabilities as unsupported, or to establish additional
properties and limits that the application should adhere to in order to
guarantee portable behaviour and operation across platforms, including
platforms where Vulkan is not natively supported.

The goal of this specification is to document, and make queryable,
capabilities which are required to be supported by a fully-conformant Vulkan
1.0 implementation, but may be optional for an implementation of the Vulkan
1.0 Portability Subset.

The intent is that this extension will be advertised only on implementations
of the Vulkan 1.0 Portability Subset, and not on conformant implementations
of Vulkan 1.0.
Fully-conformant Vulkan implementations provide all the required capabilies,
and so will not provide this extension.
Therefore, the existence of this extension can be used to determine that an
implementation is likely not fully conformant with the Vulkan spec.

If this extension is supported by the Vulkan implementation, the application
must enable this extension.

This extension defines several new structures that can be chained to the
existing structures used by certain standard Vulkan calls, in order to query
for non-conformant portable behavior.

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

=== Issues

None.

=== Version History

 * Revision 1, 2020-07-21 (Bill Hollings)
   - Initial draft.
