// Copyright (c) 2016-2020 Nintendo
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_NN_vi_surface.adoc[]

=== Other Extension Metadata

*Last Modified Date*::
    2016-12-02
*IP Status*::
    No known IP claims.
*Contributors*::
  - Mathias Heyer, NVIDIA
  - Michael Chock, NVIDIA
  - Yasuhiro Yoshioka, Nintendo
  - Daniel Koch, NVIDIA

=== Description

The `VK_NN_vi_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the `apiext:VK_KHR_surface` extension) associated with an
code:nn::code:vi::code:Layer.

include::{generated}/interfaces/VK_NN_vi_surface.adoc[]

=== Issues

1) Does VI need a way to query for compatibility between a particular
physical device (and queue family?) and a specific VI display?

*RESOLVED*: No.
It is currently always assumed that the device and display will always be
compatible.

2) slink:VkViSurfaceCreateInfoNN::pname:pWindow is intended to store an
code:nn::code:vi::code:NativeWindowHandle, but its declared type is a bare
code:void* to store the window handle.
Why the discrepancy?

*RESOLVED*: It is for C compatibility.
The definition for the VI native window handle type is defined inside the
code:nn::code:vi C++ namespace.
This prevents its use in C source files.
code:nn::code:vi::code:NativeWindowHandle is always defined to be
code:void*, so this extension uses code:void* to match.

=== Version History

  * Revision 1, 2016-12-2 (Michael Chock)
  ** Initial draft.
