<br/>
## Goals of this document ##
-----------------------
Specify necessary functions and expected behavior of interface between the
loader library and ICDs and layers for Windows, Linux and Android based
<br/>
## Audience ##
---------
This document is primarily targeted at Vulkan application, driver and layer developers.
However, it can also be used by any developer interested in understanding more about
## Loader goals ##
-------------
- Support multiple ICDs (Installable Client Drivers) to co-exist on a system
without interfering with each other.
<br/>
## Architectural overview of layers and loader ##
--------------------------------------------
Vulkan is a layered architecture placing the Application on one end, the
ICDs on the other, and the loader and some number of layers in between.
<br/>
## Application interface to loader ##
--------------------------------
In this section we'll discuss how an application interacts with the loader.
## Vulkan Installable Client Driver interface with the loader ##
-----------------------------------------------------------
### ICD discovery
<br/>
## ICD interface requirements ##
-----------------------------------------
Generally, for all Vulkan commands issued by an application, the loader can be
viewed as a pass through. That is, the loader generally doesn't modify the
<br/>
## Vulkan layer interface with the loader ##
---------------------------------------
### Layer discovery
<br/>
## Layer interface requirements ##
-------------------------------------------------------
#### Architectural interface overview