<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.17">
<meta name="author" content="The Khronos庐 Vulkan Working Group">
<title>Test庐 1.2.3 - (with all registered extensions)</title>
<style>
/*! normalize.css v2.1.2 | MIT License | git.io/normalize */
/* ========================================================================== HTML5 display definitions ========================================================================== */
/** Correct `block` display not defined in IE 8/9. */
article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }

/** Correct `inline-block` display not defined in IE 8/9. */
audio, canvas, video { display: inline-block; }

/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
audio:not([controls]) { display: none; height: 0; }

/** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */
[hidden], template { display: none; }

script { display: none !important; }

/* ========================================================================== Base ========================================================================== */
/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }

/** Remove default margin. */
body { margin: 0; }

/* ========================================================================== Links ========================================================================== */
/** Remove the gray background color from active links in IE 10. */
a { background: transparent; }

/** Address `outline` inconsistency between Chrome and other browsers. */
a:focus { outline: thin dotted; }

/** Improve readability when focused and also mouse hovered in all browsers. */
a:active, a:hover { outline: 0; }

/* ========================================================================== Typography ========================================================================== */
/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */
h1 { font-size: 2em; margin: 0.67em 0; }

/** Address styling not present in IE 8/9, Safari 5, and Chrome. */
abbr[title] { border-bottom: 1px dotted; }

/** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */
b, strong { font-weight: bold; }

/** Address styling not present in Safari 5 and Chrome. */
dfn { font-style: italic; }

/** Address differences between Firefox and other browsers. */
hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; }

/** Address styling not present in IE 8/9. */
mark { background: #ff0; color: #000; }

/** Correct font family set oddly in Safari 5 and Chrome. */
code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; }

/** Improve readability of pre-formatted text in all browsers. */
pre { white-space: pre-wrap; }

/** Set consistent quote types. */
q { quotes: "\201C" "\201D" "\2018" "\2019"; }

/** Address inconsistent and variable font size in all browsers. */
small { font-size: 80%; }

/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }

sup { top: -0.5em; }

sub { bottom: -0.25em; }

/* ========================================================================== Embedded content ========================================================================== */
/** Remove border when inside `a` element in IE 8/9. */
img { border: 0; }

/** Correct overflow displayed oddly in IE 9. */
svg:not(:root) { overflow: hidden; }

/* ========================================================================== Figures ========================================================================== */
/** Address margin not present in IE 8/9 and Safari 5. */
figure { margin: 0; }

/* ========================================================================== Forms ========================================================================== */
/** Define consistent border, margin, and padding. */
fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }

/** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
legend { border: 0; /* 1 */ padding: 0; /* 2 */ }

/** 1. Correct font family not being inherited in all browsers. 2. Correct font size not being inherited in all browsers. 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. */
button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ }

/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
button, input { line-height: normal; }

/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. Correct `select` style inheritance in Firefox 4+ and Opera. */
button, select { text-transform: none; }

/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }

/** Re-set default cursor for disabled elements. */
button[disabled], html input[disabled] { cursor: default; }

/** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */
input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }

/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */
input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; }

/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */
input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }

/** Remove inner padding and border in Firefox 4+. */
button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }

/** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */
textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ }

/* ========================================================================== Tables ========================================================================== */
/** Remove most spacing between table cells. */
table { border-collapse: collapse; border-spacing: 0; }

meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; }

meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; }

meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; }

*, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }

html, body { font-size: 100%; }

body { background: #fff; color: #222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; }

a:hover { cursor: pointer; }

img, object, embed { max-width: 100%; height: auto; }

object, embed { height: 100%; }

img { -ms-interpolation-mode: bicubic; }

#map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; }

.left { float: left !important; }

.right { float: right !important; }

.text-left { text-align: left !important; }

.text-right { text-align: right !important; }

.text-center { text-align: center !important; }

.text-justify { text-align: justify !important; }

.hide { display: none; }

.antialiased { -webkit-font-smoothing: antialiased; }

img { display: inline-block; vertical-align: middle; }

textarea { height: auto; min-height: 50px; }

select { width: 100%; }

object, svg { display: inline-block; vertical-align: middle; }

.center { margin-left: auto; margin-right: auto; }

.spread { width: 100%; }

p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; }

.subheader, .admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { line-height: 1.4; color: black; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; }

/* Typography resets */
div, dl, dt, dd, ul, ol, li, h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6, pre, form, p, blockquote, th, td { margin: 0; padding: 0; direction: ltr; }

/* Default Link Styles */
a { color: #0068b0; text-decoration: none; line-height: inherit; }
a:hover, a:focus { color: #333; }
a img { border: none; }

/* Default paragraph styles */
p { font-family: Noto, sans-serif; font-weight: normal; font-size: 1em; line-height: 1.6; margin-bottom: 0.75em; text-rendering: optimizeLegibility; }
p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; }

/* Default header styles */
h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: Noto, sans-serif; font-weight: normal; font-style: normal; color: black; text-rendering: optimizeLegibility; margin-top: 0.5em; margin-bottom: 0.5em; line-height: 1.2125em; }
h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: #4d4d4d; line-height: 0; }

h1 { font-size: 2.125em; }

h2 { font-size: 1.6875em; }

h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; }

h4 { font-size: 1.125em; }

h5 { font-size: 1.125em; }

h6 { font-size: 1em; }

hr { border: solid #ddd; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; }

/* Helpful Typography Defaults */
em, i { font-style: italic; line-height: inherit; }

strong, b { font-weight: bold; line-height: inherit; }

small { font-size: 60%; line-height: inherit; }

code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #264357; }

/* Lists */
ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 0.75em; list-style-position: outside; font-family: Noto, sans-serif; }

ul, ol { margin-left: 1.5em; }
ul.no-bullet, ol.no-bullet { margin-left: 1.5em; }

/* Unordered Lists */
ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ }
ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; }
ul.square { list-style-type: square; }
ul.circle { list-style-type: circle; }
ul.disc { list-style-type: disc; }
ul.no-bullet { list-style: none; }

/* Ordered Lists */
ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; }

/* Definition Lists */
dl dt { margin-bottom: 0.3em; font-weight: bold; }
dl dd { margin-bottom: 0.75em; }

/* Abbreviations */
abbr, acronym { text-transform: uppercase; font-size: 90%; color: black; border-bottom: 1px dotted #ddd; cursor: help; }

abbr { text-transform: none; }

/* Blockquotes */
blockquote { margin: 0 0 0.75em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #ddd; }
blockquote cite { display: block; font-size: 0.8125em; color: #365E7A; }
blockquote cite:before { content: "\2014 \0020"; }
blockquote cite a, blockquote cite a:visited { color: #365E7A; }

blockquote, blockquote p { line-height: 1.6; color: #333; }

/* Microformats */
.vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #ddd; padding: 0.625em 0.75em; }
.vcard li { margin: 0; display: block; }
.vcard .fn { font-weight: bold; font-size: 0.9375em; }

.vevent .summary { font-weight: bold; }
.vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; }

@media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; }
  h1 { font-size: 2.75em; }
  h2 { font-size: 2.3125em; }
  h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; }
  h4 { font-size: 1.4375em; } }
/* Tables */
table { background: #fff; margin-bottom: 1.25em; border: solid 1px #d8d8ce; }
table thead, table tfoot { background: #eee; font-weight: bold; }
table thead tr th, table thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222; text-align: left; }
table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #6d6e71; }
table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #f8f8f8; }
table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.4; }

body { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; tab-size: 4; }

h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; }

a:hover, a:focus { text-decoration: underline; }

.clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; }
.clearfix:after, .float-group:after { clear: both; }

*:not(pre) > code { font-size: inherit; font-style: normal !important; letter-spacing: 0; padding: 0; background-color: transparent; -webkit-border-radius: 0; border-radius: 0; line-height: inherit; word-wrap: break-word; }
*:not(pre) > code.nobreak { word-wrap: normal; }
*:not(pre) > code.nowrap { white-space: nowrap; }

pre, pre > code { line-height: 1.6; color: #264357; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; }

em em { font-style: normal; }

strong strong { font-weight: normal; }

.keyseq { color: #333333; }

kbd { font-family: Consolas, "Liberation Mono", Courier, monospace; display: inline-block; color: black; font-size: 0.65em; line-height: 1.45; background-color: #f7f7f7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; }

.keyseq kbd:first-child { margin-left: 0; }

.keyseq kbd:last-child { margin-right: 0; }

.menuseq, .menuref { color: #000; }

.menuseq b:not(.caret), .menuref { font-weight: inherit; }

.menuseq { word-spacing: -0.02em; }
.menuseq b.caret { font-size: 1.25em; line-height: 0.8; }
.menuseq i.caret { font-weight: bold; text-align: center; width: 0.45em; }

b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; }

b.button:before { content: "["; padding: 0 3px 0 2px; }

b.button:after { content: "]"; padding: 0 2px 0 3px; }

#header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 1.5em; padding-right: 1.5em; }
#header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; }
#header:after, #content:after, #footnotes:after, #footer:after { clear: both; }

#content { margin-top: 1.25em; }

#content:before { content: none; }

#header > h1:first-child { color: black; margin-top: 2.25rem; margin-bottom: 0; }
#header > h1:first-child + #toc { margin-top: 8px; border-top: 1px solid #ddd; }
#header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #ddd; padding-bottom: 8px; }
#header .details { border-bottom: 1px solid #ddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #365E7A; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; }
#header .details span:first-child { margin-left: -0.125em; }
#header .details span.email a { color: #333; }
#header .details br { display: none; }
#header .details br + span:before { content: "\00a0\2013\00a0"; }
#header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #333; }
#header .details br + span#revremark:before { content: "\00a0|\00a0"; }
#header #revnumber { text-transform: capitalize; }
#header #revnumber:after { content: "\00a0"; }

#content > h1:first-child:not([class]) { color: black; border-bottom: 1px solid #ddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; }

#toc { border-bottom: 0 solid #ddd; padding-bottom: 0.5em; }
#toc > ul { margin-left: 0.125em; }
#toc ul.sectlevel0 > li > a { font-style: italic; }
#toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; }
#toc ul { font-family: Noto, sans-serif; list-style-type: none; }
#toc li { line-height: 1.3334; margin-top: 0.3334em; }
#toc a { text-decoration: none; }
#toc a:active { text-decoration: underline; }

#toctitle { color: black; font-size: 1.2em; }

@media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; }
  body.toc2 { padding-left: 15em; padding-right: 0; }
  #toc.toc2 { margin-top: 0 !important; background-color: #fff; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #ddd; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; }
  #toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; }
  #toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; }
  #toc.toc2 ul ul { margin-left: 0; padding-left: 1em; }
  #toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; }
  body.toc2.toc-right { padding-left: 0; padding-right: 15em; }
  body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #ddd; left: auto; right: 0; } }
@media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; }
  #toc.toc2 { width: 20em; }
  #toc.toc2 #toctitle { font-size: 1.375em; }
  #toc.toc2 > ul { font-size: 0.95em; }
  #toc.toc2 ul ul { padding-left: 1.25em; }
  body.toc2.toc-right { padding-left: 0; padding-right: 20em; } }
#content #toc { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: #fff; -webkit-border-radius: 0; border-radius: 0; }
#content #toc > :first-child { margin-top: 0; }
#content #toc > :last-child { margin-bottom: 0; }

#footer { max-width: 100%; background-color: none; padding: 1.25em; }

#footer-text { color: black; line-height: 1.44; }

#content { margin-bottom: 0.625em; }

.sect1 { padding-bottom: 0.625em; }

@media only screen and (min-width: 768px) { #content { margin-bottom: 1.25em; }
  .sect1 { padding-bottom: 1.25em; } }
.sect1:last-child { padding-bottom: 0; }

.sect1 + .sect1 { border-top: 0 solid #ddd; }

#content h1 > a.anchor, h2 > a.anchor, h3 > a.anchor, #toctitle > a.anchor, .sidebarblock > .content > .title > a.anchor, h4 > a.anchor, h5 > a.anchor, h6 > a.anchor { position: absolute; z-index: 1001; width: 1.5ex; margin-left: -1.5ex; display: block; text-decoration: none !important; visibility: hidden; text-align: center; font-weight: normal; }
#content h1 > a.anchor:before, h2 > a.anchor:before, h3 > a.anchor:before, #toctitle > a.anchor:before, .sidebarblock > .content > .title > a.anchor:before, h4 > a.anchor:before, h5 > a.anchor:before, h6 > a.anchor:before { content: "\00A7"; font-size: 0.85em; display: block; padding-top: 0.1em; }
#content h1:hover > a.anchor, #content h1 > a.anchor:hover, h2:hover > a.anchor, h2 > a.anchor:hover, h3:hover > a.anchor, #toctitle:hover > a.anchor, .sidebarblock > .content > .title:hover > a.anchor, h3 > a.anchor:hover, #toctitle > a.anchor:hover, .sidebarblock > .content > .title > a.anchor:hover, h4:hover > a.anchor, h4 > a.anchor:hover, h5:hover > a.anchor, h5 > a.anchor:hover, h6:hover > a.anchor, h6 > a.anchor:hover { visibility: visible; }
#content h1 > a.link, h2 > a.link, h3 > a.link, #toctitle > a.link, .sidebarblock > .content > .title > a.link, h4 > a.link, h5 > a.link, h6 > a.link { color: black; text-decoration: none; }
#content h1 > a.link:hover, h2 > a.link:hover, h3 > a.link:hover, #toctitle > a.link:hover, .sidebarblock > .content > .title > a.link:hover, h4 > a.link:hover, h5 > a.link:hover, h6 > a.link:hover { color: black; }

.audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; }

.admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-rendering: optimizeLegibility; text-align: left; }

table.tableblock > caption.title { white-space: nowrap; overflow: visible; max-width: 0; }

.paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { color: black; }

table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; }

.admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; }
.admonitionblock > table td.icon { text-align: center; width: 80px; }
.admonitionblock > table td.icon img { max-width: initial; }
.admonitionblock > table td.icon .title { font-weight: bold; font-family: Noto, sans-serif; text-transform: uppercase; }
.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #ddd; color: #365E7A; }
.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; }

.exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: #fff; -webkit-border-radius: 0; border-radius: 0; }
.exampleblock > .content > :first-child { margin-top: 0; }
.exampleblock > .content > :last-child { margin-bottom: 0; }

.sidebarblock { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: #fff; -webkit-border-radius: 0; border-radius: 0; }
.sidebarblock > :first-child { margin-top: 0; }
.sidebarblock > :last-child { margin-bottom: 0; }
.sidebarblock > .content > .title { color: black; margin-top: 0; }

.exampleblock > .content > :last-child > :last-child, .exampleblock > .content .olist > ol > li:last-child > :last-child, .exampleblock > .content .ulist > ul > li:last-child > :last-child, .exampleblock > .content .qlist > ol > li:last-child > :last-child, .sidebarblock > .content > :last-child > :last-child, .sidebarblock > .content .olist > ol > li:last-child > :last-child, .sidebarblock > .content .ulist > ul > li:last-child > :last-child, .sidebarblock > .content .qlist > ol > li:last-child > :last-child { margin-bottom: 0; }

.literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint { background: #eee; }
.sidebarblock .literalblock pre, .sidebarblock .listingblock pre:not(.highlight), .sidebarblock .listingblock pre[class="highlight"], .sidebarblock .listingblock pre[class^="highlight "], .sidebarblock .listingblock pre.CodeRay, .sidebarblock .listingblock pre.prettyprint { background: #f2f1f1; }

.literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 1px hidden #666; -webkit-border-radius: 0; border-radius: 0; word-wrap: break-word; padding: 1.25em 1.5625em 1.125em 1.5625em; font-size: 0.8125em; }
.literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; }
@media only screen and (min-width: 768px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 0.90625em; } }
@media only screen and (min-width: 1280px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 1em; } }

.literalblock.output pre { color: #eee; background-color: #264357; }

.listingblock pre.highlightjs { padding: 0; }
.listingblock pre.highlightjs > code { padding: 1.25em 1.5625em 1.125em 1.5625em; -webkit-border-radius: 0; border-radius: 0; }

.listingblock > .content { position: relative; }

.listingblock code[data-lang]:before { display: none; content: attr(data-lang); position: absolute; font-size: 0.75em; top: 0.425rem; right: 0.5rem; line-height: 1; text-transform: uppercase; color: #999; }

.listingblock:hover code[data-lang]:before { display: block; }

.listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; }

.listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; }

table.pyhltable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; }

table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; line-height: 1.6; }

table.pyhltable td.code { padding-left: .75em; padding-right: 0; }

pre.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #ddd; }

pre.pygments .lineno { display: inline-block; margin-right: .25em; }

table.pyhltable .linenodiv { background: none !important; padding-right: 0 !important; }

.quoteblock { margin: 0 1em 0.75em 1.5em; display: table; }
.quoteblock > .title { margin-left: -1.5em; margin-bottom: 0.75em; }
.quoteblock blockquote, .quoteblock blockquote p { color: #333; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; }
.quoteblock blockquote { margin: 0; padding: 0; border: 0; }
.quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: black; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); }
.quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; }
.quoteblock .attribution { margin-top: 0.5em; margin-right: 0.5ex; text-align: right; }
.quoteblock .quoteblock { margin-left: 0; margin-right: 0; padding: 0.5em 0; border-left: 3px solid #365E7A; }
.quoteblock .quoteblock blockquote { padding: 0 0 0 0.75em; }
.quoteblock .quoteblock blockquote:before { display: none; }

.verseblock { margin: 0 1em 0.75em 1em; }
.verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #333; font-weight: 300; text-rendering: optimizeLegibility; }
.verseblock pre strong { font-weight: 400; }
.verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; }

.quoteblock .attribution, .verseblock .attribution { font-size: 0.8125em; line-height: 1.45; font-style: italic; }
.quoteblock .attribution br, .verseblock .attribution br { display: none; }
.quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #365E7A; }

.quoteblock.abstract { margin: 0 0 0.75em 0; display: block; }
.quoteblock.abstract blockquote, .quoteblock.abstract blockquote p { text-align: left; word-spacing: 0; }
.quoteblock.abstract blockquote:before, .quoteblock.abstract blockquote p:first-of-type:before { display: none; }

table.tableblock { max-width: 100%; border-collapse: separate; }
table.tableblock td > .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { margin-bottom: 0; }

table.tableblock, th.tableblock, td.tableblock { border: 0 solid #d8d8ce; }

table.grid-all > thead > tr > .tableblock, table.grid-all > tbody > tr > .tableblock { border-width: 0 1px 1px 0; }

table.grid-all > tfoot > tr > .tableblock { border-width: 1px 1px 0 0; }

table.grid-cols > * > tr > .tableblock { border-width: 0 1px 0 0; }

table.grid-rows > thead > tr > .tableblock, table.grid-rows > tbody > tr > .tableblock { border-width: 0 0 1px 0; }

table.grid-rows > tfoot > tr > .tableblock { border-width: 1px 0 0 0; }

table.grid-all > * > tr > .tableblock:last-child, table.grid-cols > * > tr > .tableblock:last-child { border-right-width: 0; }

table.grid-all > tbody > tr:last-child > .tableblock, table.grid-all > thead:last-child > tr > .tableblock, table.grid-rows > tbody > tr:last-child > .tableblock, table.grid-rows > thead:last-child > tr > .tableblock { border-bottom-width: 0; }

table.frame-all { border-width: 1px; }

table.frame-sides { border-width: 0 1px; }

table.frame-topbot { border-width: 1px 0; }

th.halign-left, td.halign-left { text-align: left; }

th.halign-right, td.halign-right { text-align: right; }

th.halign-center, td.halign-center { text-align: center; }

th.valign-top, td.valign-top { vertical-align: top; }

th.valign-bottom, td.valign-bottom { vertical-align: bottom; }

th.valign-middle, td.valign-middle { vertical-align: middle; }

table thead th, table tfoot th { font-weight: bold; }

tbody tr th { display: table-cell; line-height: 1.4; background: #eee; }

tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: #222; font-weight: bold; }

p.tableblock > code:only-child { background: none; padding: 0; }

p.tableblock { font-size: 1em; }

td > div.verse { white-space: pre; }

ol { margin-left: 1.75em; }

ul li ol { margin-left: 1.5em; }

dl dd { margin-left: 1.125em; }

dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; }

ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.375em; }

ul.checklist, ul.none, ol.none, ul.no-bullet, ol.no-bullet, ol.unnumbered, ul.unstyled, ol.unstyled { list-style-type: none; }

ul.no-bullet, ol.no-bullet, ol.unnumbered { margin-left: 0.625em; }

ul.unstyled, ol.unstyled { margin-left: 0; }

ul.checklist { margin-left: 0.625em; }

ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1.25em; font-size: 0.8em; position: relative; bottom: 0.125em; }

ul.checklist li > p:first-child > input[type="checkbox"]:first-child { margin-right: 0.25em; }

ul.inline { display: -ms-flexbox; display: -webkit-box; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; list-style: none; margin: 0 0 0.375em -0.75em; }

ul.inline > li { margin-left: 0.75em; }

.unstyled dl dt { font-weight: normal; font-style: normal; }

ol.arabic { list-style-type: decimal; }

ol.decimal { list-style-type: decimal-leading-zero; }

ol.loweralpha { list-style-type: lower-alpha; }

ol.upperalpha { list-style-type: upper-alpha; }

ol.lowerroman { list-style-type: lower-roman; }

ol.upperroman { list-style-type: upper-roman; }

ol.lowergreek { list-style-type: lower-greek; }

.hdlist > table, .colist > table { border: 0; background: none; }
.hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; }

td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; }

td.hdlist1 { font-weight: bold; padding-bottom: 0.75em; }

.literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; }

.colist > table tr > td:first-of-type { padding: 0.4em 0.75em 0 0.75em; line-height: 1; vertical-align: top; }
.colist > table tr > td:first-of-type img { max-width: initial; }
.colist > table tr > td:last-of-type { padding: 0.25em 0; }

.thumb, .th { line-height: 0; display: inline-block; border: solid 4px #fff; -webkit-box-shadow: 0 0 0 1px #ddd; box-shadow: 0 0 0 1px #ddd; }

.imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; }
.imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; }
.imageblock > .title { margin-bottom: 0; }
.imageblock.thumb, .imageblock.th { border-width: 6px; }
.imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; }

.image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; }
.image.left { margin-right: 0.625em; }
.image.right { margin-left: 0.625em; }

a.image { text-decoration: none; display: inline-block; }
a.image object { pointer-events: none; }

sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; }
sup.footnote a, sup.footnoteref a { text-decoration: none; }
sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; }

#footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; }
#footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; }
#footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; margin-bottom: 0.2em; }
#footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; margin-left: -1.05em; }
#footnotes .footnote:last-of-type { margin-bottom: 0; }
#content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; }

.gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; }
.gist .file-data > table td.line-data { width: 99%; }

div.unbreakable { page-break-inside: avoid; }

.big { font-size: larger; }

.small { font-size: smaller; }

.underline { text-decoration: underline; }

.overline { text-decoration: overline; }

.line-through { text-decoration: line-through; }

.aqua { color: #00bfbf; }

.aqua-background { background-color: #00fafa; }

.black { color: black; }

.black-background { background-color: black; }

.blue { color: #0000bf; }

.blue-background { background-color: #0000fa; }

.fuchsia { color: #bf00bf; }

.fuchsia-background { background-color: #fa00fa; }

.gray { color: #606060; }

.gray-background { background-color: #7d7d7d; }

.green { color: #006000; }

.green-background { background-color: #007d00; }

.lime { color: #00bf00; }

.lime-background { background-color: #00fa00; }

.maroon { color: #600000; }

.maroon-background { background-color: #7d0000; }

.navy { color: #000060; }

.navy-background { background-color: #00007d; }

.olive { color: #606000; }

.olive-background { background-color: #7d7d00; }

.purple { color: #600060; }

.purple-background { background-color: #7d007d; }

.red { color: #bf0000; }

.red-background { background-color: #fa0000; }

.silver { color: #909090; }

.silver-background { background-color: #bcbcbc; }

.teal { color: #006060; }

.teal-background { background-color: #007d7d; }

.white { color: #bfbfbf; }

.white-background { background-color: #fafafa; }

.yellow { color: #bfbf00; }

.yellow-background { background-color: #fafa00; }

span.icon > .fa { cursor: default; }
a span.icon > .fa { cursor: inherit; }

.admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; }
.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #29475c; }
.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; }
.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; }
.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; }
.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; }

.conum[data-value] { display: inline-block; color: #fff !important; background-color: black; -webkit-border-radius: 100px; border-radius: 100px; text-align: center; font-size: 0.75em; width: 1.67em; height: 1.67em; line-height: 1.67em; font-family: "Open Sans", "DejaVu Sans", sans-serif; font-style: normal; font-weight: bold; }
.conum[data-value] * { color: #fff !important; }
.conum[data-value] + b { display: none; }
.conum[data-value]:after { content: attr(data-value); }
pre .conum[data-value] { position: relative; top: -0.125em; }

b.conum * { color: inherit !important; }

.conum:not([data-value]):empty { display: none; }

h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { border-bottom: 1px solid #ddd; }

.sect1 { padding-bottom: 0; }

#toctitle { color: #00406F; font-weight: normal; margin-top: 1.5em; }

.sidebarblock { border-color: #aaa; }

code { -webkit-border-radius: 4px; border-radius: 4px; }

p.tableblock.header { color: #6d6e71; }

.literalblock pre, .listingblock pre { background: #eee; }

/* From https://github.com/KhronosGroup/Vulkan-Docs/pull/901 */
a code { color: inherit; }

/* From https://github.com/KhronosGroup/Vulkan-Docs/pull/1157 */
/* Make VUID anchor handles*/
li > p > a[id^="VUID-"] { visibility: hidden; position: absolute; z-index: 1001; width: 2.2ex; margin-left: -2.2ex; display: block; text-decoration: none !important; text-align: center; font-weight: normal; }

li > p > a[id^="VUID-"]:before { content: "\00A7"; font-size: 1em; display: block; padding-top: 0em; background: #fff; }

li > p:hover > a[id^="VUID-"], li > p > a[id^="VUID-"]:hover { visibility: visible; }

li > p > a[id^="VUID-"].link { color: black; text-decoration: none; }

/* TODO: not quite sure what these two do */
li > p > a[id^="VUID-"].link:hover { color: black; }

.vuid { color: #4d4d4d; font-family: monospace; }

</style>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
pre.rouge table td { padding: 5px; }
pre.rouge table pre { margin: 0; }
pre.rouge .cm {
  color: #999988;
  font-style: italic;
}
pre.rouge .cp {
  color: #999999;
  font-weight: bold;
}
pre.rouge .c1 {
  color: #999988;
  font-style: italic;
}
pre.rouge .cs {
  color: #999999;
  font-weight: bold;
  font-style: italic;
}
pre.rouge .c, pre.rouge .ch, pre.rouge .cd, pre.rouge .cpf {
  color: #999988;
  font-style: italic;
}
pre.rouge .err {
  color: #a61717;
  background-color: #e3d2d2;
}
pre.rouge .gd {
  color: #000000;
  background-color: #ffdddd;
}
pre.rouge .ge {
  color: #000000;
  font-style: italic;
}
pre.rouge .gr {
  color: #aa0000;
}
pre.rouge .gh {
  color: #999999;
}
pre.rouge .gi {
  color: #000000;
  background-color: #ddffdd;
}
pre.rouge .go {
  color: #888888;
}
pre.rouge .gp {
  color: #555555;
}
pre.rouge .gs {
  font-weight: bold;
}
pre.rouge .gu {
  color: #aaaaaa;
}
pre.rouge .gt {
  color: #aa0000;
}
pre.rouge .kc {
  color: #000000;
  font-weight: bold;
}
pre.rouge .kd {
  color: #000000;
  font-weight: bold;
}
pre.rouge .kn {
  color: #000000;
  font-weight: bold;
}
pre.rouge .kp {
  color: #000000;
  font-weight: bold;
}
pre.rouge .kr {
  color: #000000;
  font-weight: bold;
}
pre.rouge .kt {
  color: #445588;
  font-weight: bold;
}
pre.rouge .k, pre.rouge .kv {
  color: #000000;
  font-weight: bold;
}
pre.rouge .mf {
  color: #009999;
}
pre.rouge .mh {
  color: #009999;
}
pre.rouge .il {
  color: #009999;
}
pre.rouge .mi {
  color: #009999;
}
pre.rouge .mo {
  color: #009999;
}
pre.rouge .m, pre.rouge .mb, pre.rouge .mx {
  color: #009999;
}
pre.rouge .sa {
  color: #000000;
  font-weight: bold;
}
pre.rouge .sb {
  color: #d14;
}
pre.rouge .sc {
  color: #d14;
}
pre.rouge .sd {
  color: #d14;
}
pre.rouge .s2 {
  color: #d14;
}
pre.rouge .se {
  color: #d14;
}
pre.rouge .sh {
  color: #d14;
}
pre.rouge .si {
  color: #d14;
}
pre.rouge .sx {
  color: #d14;
}
pre.rouge .sr {
  color: #009926;
}
pre.rouge .s1 {
  color: #d14;
}
pre.rouge .ss {
  color: #990073;
}
pre.rouge .s, pre.rouge .dl {
  color: #d14;
}
pre.rouge .na {
  color: #008080;
}
pre.rouge .bp {
  color: #999999;
}
pre.rouge .nb {
  color: #0086B3;
}
pre.rouge .nc {
  color: #445588;
  font-weight: bold;
}
pre.rouge .no {
  color: #008080;
}
pre.rouge .nd {
  color: #3c5d5d;
  font-weight: bold;
}
pre.rouge .ni {
  color: #800080;
}
pre.rouge .ne {
  color: #990000;
  font-weight: bold;
}
pre.rouge .nf, pre.rouge .fm {
  color: #990000;
  font-weight: bold;
}
pre.rouge .nl {
  color: #990000;
  font-weight: bold;
}
pre.rouge .nn {
  color: #555555;
}
pre.rouge .nt {
  color: #000080;
}
pre.rouge .vc {
  color: #008080;
}
pre.rouge .vg {
  color: #008080;
}
pre.rouge .vi {
  color: #008080;
}
pre.rouge .nv, pre.rouge .vm {
  color: #008080;
}
pre.rouge .ow {
  color: #000000;
  font-weight: bold;
}
pre.rouge .o {
  color: #000000;
  font-weight: bold;
}
pre.rouge .w {
  color: #bbbbbb;
}
pre.rouge {
  background-color: #f8f8f8;
}
</style>
<style>
/* Khronos overrides for Rouge 'github' theme for accessibility */
/* Basically everything is overridden, but it is unclear how to add a new Rouge theme */
/* Codelike overrides */
pre.rouge .cm, pre.rouge .cp, pre.rouge .c1, pre.rouge .cs,
pre.rouge .c, pre.rouge .ch, pre.rouge .cd, pre.rouge .cpf,
pre.rouge .gh, pre.rouge .bp {
  color: #5f5f5f;
}
/* Numberlike overrides */
pre.rouge .mf, pre.rouge .mh, pre.rouge .il, pre.rouge .mi,
pre.rouge .mo, pre.rouge .m, pre.rouge .mb, pre.rouge .mx {
  color: #007f7f;
}
/* Namelike overrides */
pre.rouge .ne, pre.rouge .nf, pre.rouge .fm, pre.rouge .nl {
  color: #5f0000;
}
/* Other things ANDI warns about - unsure of their purposes */
pre.rouge .go, pre.rouge .gu {
  color: #727272;
}
pre.rouge .sr {
  color: #008512;
}
pre.rouge .na, pre.rouge .nb {
  color: #007f7f;
}
pre.rouge .no, pre.rouge .vc, pre.rouge .vg, pre.rouge .vi,
pre.rouge .nv, pre.rouge .vm {
  color: #007f7f;
}
pre.rouge .w {
  color: #727272;
}
</style>

<!-- dragged in by font-awesome css included by asciidoctor, but preloaded in this extension for convenience -->
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0" as="font" type="font/woff2" crossorigin="">

<!-- Note: Chrome needs crossorigin="" even for same-origin fonts -->
<link rel="preload" href="../katex/fonts/KaTeX_Main-Bold.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="../katex/fonts/KaTeX_Main-Italic.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="../katex/fonts/KaTeX_Main-Regular.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="../katex/fonts/KaTeX_Math-Italic.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="../katex/fonts/KaTeX_Size1-Regular.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="../katex/fonts/KaTeX_Size2-Regular.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="../katex/fonts/KaTeX_Size3-Regular.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="../katex/fonts/KaTeX_Size4-Regular.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="../katex/fonts/KaTeX_Typewriter-Regular.woff2" as="font" type="font/woff2" crossorigin=""><link rel="stylesheet" href="../katex/katex.min.css">
<!--ChunkedSearchJSMarker-->
<style>
    #loading_msg {
        width: 100%;
        margin-left: auto;
        margin-right: auto;
        margin-top: 1ex;
        margin-bottom: 1ex;
        max-width: 62.5em;
        position: relative;
        padding-left: 1.5em;
        padding-right: 1.5em;
    }
    .hidden {display: none;}
</style>
<script>
    function hideElement(e){
        e.setAttribute("hidden", "");
        e.classList.add("hidden");
    }

    function unhideElement(e){
        e.classList.remove("hidden");
        e.removeAttribute("hidden");
    }

    function hideLoadableContent(){
        unhideElement( document.getElementById("loading_msg") );
        for( var loadable of document.getElementsByClassName("loadable") ) hideElement(loadable);
    }

    function unhideLoadableContent(){
        hideElement( document.getElementById("loading_msg") );
        for( var loadable of document.getElementsByClassName("loadable") ) unhideElement(loadable);
    }

    window.addEventListener("load", unhideLoadableContent);
</script>
</head>
<body class="book toc2 toc-left">
<div id="header">
<h1>Test<sup>庐</sup> 1.2.3 - (with all registered extensions)</h1>
<div class="details">
<span id="author" class="author">The Khronos<sup>庐</sup> Vulkan Working Group</span><br>
<span id="revnumber">version 1.2.3,</span>
<span id="revdate">"2100-11-22 00:33:44Z"</span>
<br><span id="revremark">"test build"</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#preamble">1. Preamble</a></li>
<li><a href="#lorem">2. Lorem</a>
<ul class="sectlevel2">
<li><a href="#lorem-subchapter">2.1. Lorem Subchapter</a></li>
</ul>
</li>
<li><a href="#hic">3. Host Image Copy</a></li>
<li><a href="#extensions">Layers &amp; Extensions (Informative)</a>
<ul class="sectlevel2">
<li><a href="#_extension_dependencies">Extension Dependencies</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="loading_msg" class="hidden" hidden><p>Loading&hellip; please wait.</p></div>
<!--ChunkedSearchboxMarker-->
<div id="content" class="loadable" ><script>hideLoadableContent();</script>
<div id="preamble">
<div class="sectionbody">
<!-- toc disabled -->
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect1">
<h2 id="preamble"><a class="anchor" href="#preamble"></a>1. Preamble</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Copyright 2014-2023 The Khronos Group Inc.</p>
</div>
<div class="paragraph">
<p>This Specification is protected by copyright laws and contains material
proprietary to Khronos. Except as described by these terms, it or any
components may not be reproduced, republished, distributed, transmitted,
displayed, broadcast or otherwise exploited in any manner without the
express prior written permission of Khronos.</p>
</div>
<div class="paragraph">
<p>Khronos grants a conditional copyright license to use and reproduce the
unmodified Specification for any purpose, without fee or royalty, EXCEPT no
licenses to any patent, trademark or other intellectual property rights are
granted under these terms.</p>
</div>
<div class="paragraph">
<p>Khronos makes no, and expressly disclaims any, representations or
warranties, express or implied, regarding this Specification, including,
without limitation: merchantability, fitness for a particular purpose,
non-infringement of any intellectual property, correctness, accuracy,
completeness, timeliness, and reliability. Under no circumstances will
Khronos, or any of its Promoters, Contributors or Members, or their
respective partners, officers, directors, employees, agents or
representatives be liable for any damages, whether direct, indirect, special
or consequential damages for lost revenues, lost profits, or otherwise,
arising from or in connection with these materials.</p>
</div>
<div class="paragraph">
<p>This document contains extensions which are not ratified by Khronos, and as
such is not a ratified Specification, though it contains text from (and is a
superset of) the ratified Vulkan Specification. The ratified versions
of the Vulkan Specification can be found at <a href="https://registry.khronos.org/vulkan/specs/1.3/html/vkspec.html" class="bare">https://registry.khronos.org/vulkan/specs/1.3/html/vkspec.html</a> (core only)
and <a href="https://registry.khronos.org/vulkan/specs/1.3-khr-extensions/html/vkspec.html" class="bare">https://registry.khronos.org/vulkan/specs/1.3-khr-extensions/html/vkspec.html</a> (core with all ratified extensions)
.</p>
</div>
<div class="paragraph">
<p>This Specification contains substantially unmodified functionality from, and
is a successor to, Khronos specifications including
OpenGL, OpenGL ES and OpenCL.</p>
</div>
<div class="paragraph">
<p>The Khronos Intellectual Property Rights Policy defines the terms 'Scope',
'Compliant Portion', and 'Necessary Patent Claims'.</p>
</div>
<div class="paragraph">
<p>Some parts of this Specification are purely informative and so are EXCLUDED
the Scope of this Specification. The <a href="#introduction-conventions">[introduction-conventions]</a> section of
the <a href="#introduction">[introduction]</a> defines how these parts of the Specification are
identified.</p>
</div>
<div class="paragraph">
<p>Where this Specification uses <a href="#introduction-technical-terminology">technical terminology</a>, defined in the <a href="#glossary">Glossary</a> or otherwise,
that refer to enabling technologies that are not expressly set forth in this
Specification, those enabling technologies are EXCLUDED from the Scope of
this Specification. For clarity, enabling technologies not disclosed with
particularity in this Specification (e.g. semiconductor manufacturing
technology, hardware architecture, processor architecture or
microarchitecture, memory architecture, compiler technology, object oriented
technology, basic operating system technology, compression technology,
algorithms, and so on) are NOT to be considered expressly set forth; only
those application program interfaces and data structures disclosed with
particularity are included in the Scope of this Specification.</p>
</div>
<div class="paragraph">
<p>For purposes of the Khronos Intellectual Property Rights Policy as it
relates to the definition of Necessary Patent Claims, all recommended or
optional features, behaviors and functionality set forth in this
Specification, if implemented, are considered to be included as Compliant
Portions.</p>
</div>
<div class="paragraph">
<p>Where this Specification identifies specific sections of external
references, only those specifically identified sections define
<a href="#introduction-normative-references">normative</a>
functionality. The Khronos Intellectual Property Rights Policy excludes
external references to materials and associated enabling technology not
created by Khronos from the Scope of this Specification, and any licenses
that may be required to implement such referenced materials and associated
technologies must be obtained separately and may involve royalty payments.</p>
</div>
<div class="paragraph">
<p>Khronos and Vulkan are registered trademarks, and SPIR-V is a trademark of
The Khronos Group Inc. OpenCL is a trademark of Apple Inc., used under
license by Khronos. OpenGL is a registered trademark and the OpenGL ES logo
is a trademark of Hewlett Packard Enterprise, used under license by Khronos.
ASTC is a trademark of ARM Holdings PLC. All other product names,
trademarks, and/or company names are used solely for identification and
belong to their respective owners.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="lorem"><a class="anchor" href="#lorem"></a>2. Lorem</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Congue eu consequat ac felis donec
et odio. Enim nec dui nunc mattis enim. Nulla facilisi etiam dignissim diam
quis enim lobortis scelerisque fermentum. Nam libero justo laoreet sit amet.
Lacus luctus accumsan tortor posuere. Ultrices tincidunt arcu non sodales. Ut
enim blandit volutpat maecenas volutpat blandit aliquam etiam. Sed id semper
risus in. Natoque penatibus et magnis dis parturient montes.</p>
</div>
<div class="paragraph">
<p>Vestibulum morbi blandit cursus risus at ultrices mi tempus imperdiet.
Dignissim cras tincidunt lobortis feugiat vivamus at augue eget arcu. Ultricies
mi eget mauris pharetra.  Ac turpis egestas maecenas pharetra convallis posuere
morbi leo urna. Cras sed felis eget velit aliquet. Sit amet mauris commodo quis
imperdiet. Malesuada pellentesque elit eget gravida cum sociis natoque.
Faucibus pulvinar elementum integer enim neque volutpat ac tincidunt vitae.</p>
</div>
<div class="sect2">
<h3 id="lorem-subchapter"><a class="anchor" href="#lorem-subchapter"></a>2.1. Lorem Subchapter</h3>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Sed risus pretium quam vulputate dignissim suspendisse in est ante:</p>
</div>
<div id="vkCmdCopyBufferToImage2" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_VERSION_1_3</span>
<span class="kt">void</span> <span class="nf">vkCmdCopyBufferToImage2</span><span class="p">(</span>
    <span class="n">VkCommandBuffer</span>                             <span class="n">commandBuffer</span><span class="p">,</span>
    <span class="k">const</span> <span class="n">VkCopyBufferToImageInfo2</span><span class="o">*</span>             <span class="n">pCopyBufferToImageInfo</span><span class="p">);</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>or the equivalent command</p>
</div>
<div id="vkCmdCopyBufferToImage2KHR" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_KHR_copy_commands2</span>
<span class="kt">void</span> <span class="nf">vkCmdCopyBufferToImage2KHR</span><span class="p">(</span>
    <span class="n">VkCommandBuffer</span>                             <span class="n">commandBuffer</span><span class="p">,</span>
    <span class="k">const</span> <span class="n">VkCopyBufferToImageInfo2</span><span class="o">*</span>             <span class="n">pCopyBufferToImageInfo</span><span class="p">);</span></code></pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p><code>commandBuffer</code> Mauris commodo quis imperdiet massa tincidunt nunc pulvinar.</p>
</li>
<li>
<p><code>pCopyBufferToImageInfo</code> Odio morbi quis commodo odio aenean sed <a href="#VkCopyBufferToImageInfo2">VkCopyBufferToImageInfo2</a>.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Ac tortor dignissim convallis aenean et tortor. Amet porttitor eget dolor morbi
non arcu. Consequat interdum varius sit amet. Tempus egestas sed sed risus
pretium quam. Gravida in fermentum et sollicitudin ac orci phasellus egestas.
Nulla facilisi etiam dignissim diam quis enim lobortis scelerisque fermentum.
Tempus quam pellentesque nec nam aliquam. A pellentesque sit amet porttitor
eget. Viverra justo nec ultrices dui sapien eget mi. Nullam vehicula ipsum a
arcu. Amet volutpat consequat mauris nunc congue nisi. Tincidunt arcu non
sodales neque.</p>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-commandBuffer-91828" href="#VUID-vkCmdCopyBufferToImage2-commandBuffer-91828"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-commandBuffer-91828</span><br>

If <code>commandBuffer</code> is an unprotected command buffer and
<a href="#limits-protectedNoFault"><code>protectedNoFault</code></a> is not supported,
<code>srcBuffer</code> <strong class="purple">must</strong> not be a protected buffer</p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-commandBuffer-91829" href="#VUID-vkCmdCopyBufferToImage2-commandBuffer-91829"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-commandBuffer-91829</span><br>

If <code>commandBuffer</code> is an unprotected command buffer and
<a href="#limits-protectedNoFault"><code>protectedNoFault</code></a> is not supported,
<code>dstImage</code> <strong class="purple">must</strong> not be a protected image</p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-commandBuffer-91830" href="#VUID-vkCmdCopyBufferToImage2-commandBuffer-91830"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-commandBuffer-91830</span><br>

If <code>commandBuffer</code> is a protected command buffer and
<a href="#limits-protectedNoFault"><code>protectedNoFault</code></a> is not supported,
<code>dstImage</code> <strong class="purple">must</strong> not be an unprotected image</p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-commandBuffer-97737" href="#VUID-vkCmdCopyBufferToImage2-commandBuffer-97737"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-commandBuffer-97737</span><br>

If the queue family used to create the <a href="#VkCommandPool">VkCommandPool</a> which
<code>commandBuffer</code> was allocated from does not support
<code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the
<code>bufferOffset</code> member of any element of <code>pCopyBufferToImageInfo-&gt;pRegions</code> <strong class="purple">must</strong> be a
multiple of <code>4</code></p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-imageOffset-97738" href="#VUID-vkCmdCopyBufferToImage2-imageOffset-97738"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-imageOffset-97738</span><br>

The <code>imageOffset</code> and <code>imageExtent</code> members of each element of
<code>pCopyBufferToImageInfo-&gt;pRegions</code> <strong class="purple">must</strong> respect the image transfer granularity requirements
of <code>commandBuffer</code>&#8217;s command pool&#8217;s queue family, as described in
<a href="#VkQueueFamilyProperties">VkQueueFamilyProperties</a></p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-commandBuffer-97739" href="#VUID-vkCmdCopyBufferToImage2-commandBuffer-97739"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-commandBuffer-97739</span><br>

If the queue family used to create the <a href="#VkCommandPool">VkCommandPool</a> which
<code>commandBuffer</code> was allocated from does not support
<code>VK_QUEUE_GRAPHICS_BIT</code>, for each element of <code>pCopyBufferToImageInfo-&gt;pRegions</code>, the
<code>aspectMask</code> member of <code>imageSubresource</code> <strong class="purple">must</strong> not be
<code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage (Implicit)</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-commandBuffer-parameter" href="#VUID-vkCmdCopyBufferToImage2-commandBuffer-parameter"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-commandBuffer-parameter</span><br>
 <code>commandBuffer</code> <strong class="purple">must</strong> be a valid <a href="#VkCommandBuffer">VkCommandBuffer</a> handle</p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-pCopyBufferToImageInfo-parameter" href="#VUID-vkCmdCopyBufferToImage2-pCopyBufferToImageInfo-parameter"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-pCopyBufferToImageInfo-parameter</span><br>
 <code>pCopyBufferToImageInfo</code> <strong class="purple">must</strong> be a valid pointer to a valid <a href="#VkCopyBufferToImageInfo2">VkCopyBufferToImageInfo2</a> structure</p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-commandBuffer-recording" href="#VUID-vkCmdCopyBufferToImage2-commandBuffer-recording"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-commandBuffer-recording</span><br>
 <code>commandBuffer</code> <strong class="purple">must</strong> be in the <a href="#commandbuffers-lifecycle">recording state</a></p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-commandBuffer-cmdpool" href="#VUID-vkCmdCopyBufferToImage2-commandBuffer-cmdpool"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-commandBuffer-cmdpool</span><br>
 The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class="purple">must</strong> support transfer, graphics, or compute operations</p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-renderpass" href="#VUID-vkCmdCopyBufferToImage2-renderpass"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-renderpass</span><br>
 This command <strong class="purple">must</strong> only be called outside of a render pass instance</p>
</li>
<li>
<p><a id="VUID-vkCmdCopyBufferToImage2-videocoding" href="#VUID-vkCmdCopyBufferToImage2-videocoding"></a> <span class="vuid">VUID-vkCmdCopyBufferToImage2-videocoding</span><br>
 This command <strong class="purple">must</strong> only be called outside of a video coding scope</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Host Synchronization</div>
<div class="ulist">
<ul>
<li>
<p>Host access to <code>commandBuffer</code> <strong class="purple">must</strong> be externally synchronized</p>
</li>
<li>
<p>Host access to the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class="purple">must</strong> be externally synchronized</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Command Properties</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top"><a href="#VkCommandBufferLevel">Command Buffer Levels</a></th>
<th class="tableblock halign-left valign-top"><a href="#vkCmdBeginRenderPass">Render Pass Scope</a></th>
<th class="tableblock halign-left valign-top"><a href="#vkCmdBeginVideoCodingKHR">Video Coding Scope</a></th>
<th class="tableblock halign-left valign-top"><a href="#VkQueueFlagBits">Supported Queue Types</a></th>
<th class="tableblock halign-left valign-top"><a href="#fundamentals-queueoperation-command-types">Command Type</a></th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Primary<br>
Secondary</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Outside</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Outside</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Transfer<br>
Graphics<br>
Compute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Action</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Sed risus pretium quam vulputate dignissim suspendisse in est ante <code>VkCopyBufferToImageInfo2</code>:</p>
</div>
<div id="VkCopyBufferToImageInfo2" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_VERSION_1_3</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkCopyBufferToImageInfo2</span> <span class="p">{</span>
    <span class="n">VkStructureType</span>              <span class="n">sType</span><span class="p">;</span>
    <span class="k">const</span> <span class="kt">void</span><span class="o">*</span>                  <span class="n">pNext</span><span class="p">;</span>
    <span class="n">VkBuffer</span>                     <span class="n">srcBuffer</span><span class="p">;</span>
    <span class="n">VkImage</span>                      <span class="n">dstImage</span><span class="p">;</span>
    <span class="n">VkImageLayout</span>                <span class="n">dstImageLayout</span><span class="p">;</span>
    <span class="kt">uint32_t</span>                     <span class="n">regionCount</span><span class="p">;</span>
    <span class="k">const</span> <span class="n">VkBufferImageCopy2</span><span class="o">*</span>    <span class="n">pRegions</span><span class="p">;</span>
<span class="p">}</span> <span class="n">VkCopyBufferToImageInfo2</span><span class="p">;</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>or the equivalent</p>
</div>
<div id="VkCopyBufferToImageInfo2KHR" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_KHR_copy_commands2</span>
<span class="k">typedef</span> <span class="n">VkCopyBufferToImageInfo2</span> <span class="n">VkCopyBufferToImageInfo2KHR</span><span class="p">;</span></code></pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p><code>sType</code> Natoque penatibus et magnis dis parturient montes nascetur.</p>
</li>
<li>
<p><code>pNext</code> Iaculis eu non diam phasellus vestibulum.</p>
</li>
<li>
<p><code>srcBuffer</code> Consequat nisl vel pretium lectus quam.</p>
</li>
<li>
<p><code>dstImage</code> Euismod in pellentesque massa placerat duis ultricies lacus sed turpis.</p>
</li>
<li>
<p><code>dstImageLayout</code> Ullamcorper eget nulla facilisi etiam dignissim diam quis enim.</p>
</li>
<li>
<p><code>regionCount</code> Vel facilisis volutpat est velit egestas dui.</p>
</li>
<li>
<p><code>pRegions</code> Consequat id porta nibh venenatis cras sed felis.</p>
</li>
</ul>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-pRegions-94565" href="#VUID-VkCopyBufferToImageInfo2-pRegions-94565"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-pRegions-94565</span><br>

Id velit ut tortor pretium viverra suspendisse potenti <code>pRegions</code>
faucibus in ornare quam viverra orci sagittis eu volutpat
<code>pNext</code> chain
<code>imageSubresource</code> eu facilisis sed <strong class="purple">must</strong> odio morbi quis commodo
<code>dstImage</code></p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2KHR-pRegions-94554" href="#VUID-VkCopyBufferToImageInfo2KHR-pRegions-94554"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2KHR-pRegions-94554</span><br>

Pharetra magna ac placerat vestibulum lectus mauris <code>pRegions</code>
ac felis donec et odio pellentesque diam volutpat commodo sed <code>pNext</code> chain
<strong class="purple">must</strong> malesuada pellentesque elit <a href="#lorem-subchapter">Lorem Subchapter</a> eget gravida cum sociis natoque
<code>dstImage</code></p>
</li>
</ul>
</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-dstImage-97966" href="#VUID-VkCopyBufferToImageInfo2-dstImage-97966"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-dstImage-97966</span><br>

If <code>dstImage</code> is non-sparse then the image or the specified
<em>disjoint</em> plane <strong class="purple">must</strong> be bound completely and contiguously to a single
<code>VkDeviceMemory</code> object</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-imageSubresource-97967" href="#VUID-VkCopyBufferToImageInfo2-imageSubresource-97967"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-imageSubresource-97967</span><br>

The <code>imageSubresource.mipLevel</code> member of each element of
<code>pRegions</code> <strong class="purple">must</strong> be less than the <code>mipLevels</code> specified in
<a href="#VkImageCreateInfo">VkImageCreateInfo</a> when <code>dstImage</code> was created</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-imageSubresource-97968" href="#VUID-VkCopyBufferToImageInfo2-imageSubresource-97968"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-imageSubresource-97968</span><br>

The <span class="eq"><code>imageSubresource.baseArrayLayer</code> + 
<code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code>
, if <code>imageSubresource.layerCount</code> is not
<code>VK_REMAINING_ARRAY_LAYERS</code> and <a href="#features-maintenance5"><code>maintenance5</code></a> is not enabled,
<strong class="purple">must</strong> be less than or equal to the <code>arrayLayers</code> specified in
<a href="#VkImageCreateInfo">VkImageCreateInfo</a> when <code>dstImage</code> was created</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-dstImage-97969" href="#VUID-VkCopyBufferToImageInfo2-dstImage-97969"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-dstImage-97969</span><br>

<code>dstImage</code> <strong class="purple">must</strong> not have been created with <code>flags</code>
containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code></p>
</li>
</ul>
</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-bufferRowLength-99101" href="#VUID-VkCopyBufferToImageInfo2-bufferRowLength-99101"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-bufferRowLength-99101</span><br>

<code>bufferRowLength</code> <strong class="purple">must</strong> be <code>0</code>, or greater than or equal to the
<code>width</code> member of <code>imageExtent</code></p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-bufferImageHeight-99102" href="#VUID-VkCopyBufferToImageInfo2-bufferImageHeight-99102"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-bufferImageHeight-99102</span><br>

<code>bufferImageHeight</code> <strong class="purple">must</strong> be <code>0</code>, or greater than or equal to the
<code>height</code> member of <code>imageExtent</code></p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-aspectMask-99103" href="#VUID-VkCopyBufferToImageInfo2-aspectMask-99103"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-aspectMask-99103</span><br>

The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class="purple">must</strong> only have a
single bit set</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-imageExtent-96659" href="#VUID-VkCopyBufferToImageInfo2-imageExtent-96659"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-imageExtent-96659</span><br>

<code>imageExtent.width</code> <strong class="purple">must</strong> not be 0</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-imageExtent-96660" href="#VUID-VkCopyBufferToImageInfo2-imageExtent-96660"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-imageExtent-96660</span><br>

<code>imageExtent.height</code> <strong class="purple">must</strong> not be 0</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-imageExtent-96661" href="#VUID-VkCopyBufferToImageInfo2-imageExtent-96661"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-imageExtent-96661</span><br>

<code>imageExtent.depth</code> <strong class="purple">must</strong> not be 0</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-pRegions-96223" href="#VUID-VkCopyBufferToImageInfo2-pRegions-96223"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-pRegions-96223</span><br>

Id leo in vitae turpis massa sed elementum
<code>imageOffset.x</code> and <span class="eq">(<code>imageExtent.width</code> + 
<code>imageOffset.x</code>)</span> <strong class="purple">must</strong> gravida dictum fusce ut placerat orci nulla
pellentesque dignissim enim <code>imageSubresource</code> of <code>dstImage</code></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage (Implicit)</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-sType-sType" href="#VUID-VkCopyBufferToImageInfo2-sType-sType"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-sType-sType</span><br>
 <code>sType</code> <strong class="purple">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2</code></p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-pNext-pNext" href="#VUID-VkCopyBufferToImageInfo2-pNext-pNext"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-pNext-pNext</span><br>
 <code>pNext</code> <strong class="purple">must</strong> be <code>NULL</code></p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-srcBuffer-parameter" href="#VUID-VkCopyBufferToImageInfo2-srcBuffer-parameter"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-srcBuffer-parameter</span><br>
 <code>srcBuffer</code> <strong class="purple">must</strong> be a valid <a href="#VkBuffer">VkBuffer</a> handle</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-dstImage-parameter" href="#VUID-VkCopyBufferToImageInfo2-dstImage-parameter"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-dstImage-parameter</span><br>
 <code>dstImage</code> <strong class="purple">must</strong> be a valid <a href="#VkImage">VkImage</a> handle</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-dstImageLayout-parameter" href="#VUID-VkCopyBufferToImageInfo2-dstImageLayout-parameter"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-dstImageLayout-parameter</span><br>
 <code>dstImageLayout</code> <strong class="purple">must</strong> be a valid <a href="#VkImageLayout">VkImageLayout</a> value</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-pRegions-parameter" href="#VUID-VkCopyBufferToImageInfo2-pRegions-parameter"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-pRegions-parameter</span><br>
 <code>pRegions</code> <strong class="purple">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href="#VkBufferImageCopy2">VkBufferImageCopy2</a> structures</p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-regionCount-arraylength" href="#VUID-VkCopyBufferToImageInfo2-regionCount-arraylength"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-regionCount-arraylength</span><br>
 <code>regionCount</code> <strong class="purple">must</strong> be greater than <code>0</code></p>
</li>
<li>
<p><a id="VUID-VkCopyBufferToImageInfo2-commonparent" href="#VUID-VkCopyBufferToImageInfo2-commonparent"></a> <span class="vuid">VUID-VkCopyBufferToImageInfo2-commonparent</span><br>
 Both of <code>dstImage</code>, and <code>srcBuffer</code> <strong class="purple">must</strong> have been created, allocated, or retrieved from the same <a href="#VkDevice">VkDevice</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Gravida dictum fusce ut placerat orci nulla pellentesque dignissim enim <a href="#vkCmdCopyBufferToImage2">vkCmdCopyBufferToImage2</a>:</p>
</div>
<div id="VkBufferImageCopy2" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_VERSION_1_3</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkBufferImageCopy2</span> <span class="p">{</span>
    <span class="n">VkStructureType</span>             <span class="n">sType</span><span class="p">;</span>
    <span class="k">const</span> <span class="kt">void</span><span class="o">*</span>                 <span class="n">pNext</span><span class="p">;</span>
    <span class="n">VkDeviceSize</span>                <span class="n">bufferOffset</span><span class="p">;</span>
    <span class="kt">uint32_t</span>                    <span class="n">bufferRowLength</span><span class="p">;</span>
    <span class="kt">uint32_t</span>                    <span class="n">bufferImageHeight</span><span class="p">;</span>
    <span class="n">VkImageSubresourceLayers</span>    <span class="n">imageSubresource</span><span class="p">;</span>
    <span class="n">VkOffset3D</span>                  <span class="n">imageOffset</span><span class="p">;</span>
    <span class="n">VkExtent3D</span>                  <span class="n">imageExtent</span><span class="p">;</span>
<span class="p">}</span> <span class="n">VkBufferImageCopy2</span><span class="p">;</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>or the equivalent</p>
</div>
<div id="VkBufferImageCopy2KHR" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_KHR_copy_commands2</span>
<span class="k">typedef</span> <span class="n">VkBufferImageCopy2</span> <span class="n">VkBufferImageCopy2KHR</span><span class="p">;</span></code></pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p><code>sType</code> Tristique senectus et netus et malesuada.</p>
</li>
<li>
<p><code>pNext</code> Tempor commodo ullamcorper a lacus vestibulum sed arcu.</p>
</li>
<li>
<p><code>bufferOffset</code> Tellus in metus vulputate eu scelerisque. Lectus sit amet est placerat in.</p>
</li>
<li>
<p><code>bufferRowLength</code> and <code>bufferImageHeight</code> Quam adipiscing vitae
proin sagittis. Mattis pellentesque id nibh tortor id aliquet lectus proin
nibh <code>imageExtent</code>.</p>
</li>
<li>
<p><code>imageSubresource</code> Sociis natoque penatibus et magnis dis parturient montes nascetur.</p>
</li>
<li>
<p><code>imageOffset</code> Lobortis mattis aliquam faucibus purus in massa tempor nec.</p>
</li>
<li>
<p><code>imageExtent</code> Ut ornare lectus sit amet est placerat in.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Integer quis auctor elit sed vulputate mi sit amet mauris. Ultrices sagittis
orci a scelerisque purus semper eget duis.</p>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkBufferImageCopy2-bufferRowLength-99101" href="#VUID-VkBufferImageCopy2-bufferRowLength-99101"></a> <span class="vuid">VUID-VkBufferImageCopy2-bufferRowLength-99101</span><br>

<code>bufferRowLength</code> <strong class="purple">must</strong> be <code>0</code>, or greater than or equal to the
<code>width</code> member of <code>imageExtent</code></p>
</li>
<li>
<p><a id="VUID-VkBufferImageCopy2-bufferImageHeight-99102" href="#VUID-VkBufferImageCopy2-bufferImageHeight-99102"></a> <span class="vuid">VUID-VkBufferImageCopy2-bufferImageHeight-99102</span><br>

<code>bufferImageHeight</code> <strong class="purple">must</strong> be <code>0</code>, or greater than or equal to the
<code>height</code> member of <code>imageExtent</code></p>
</li>
<li>
<p><a id="VUID-VkBufferImageCopy2-aspectMask-99103" href="#VUID-VkBufferImageCopy2-aspectMask-99103"></a> <span class="vuid">VUID-VkBufferImageCopy2-aspectMask-99103</span><br>

The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class="purple">must</strong> only have a
single bit set</p>
</li>
<li>
<p><a id="VUID-VkBufferImageCopy2-imageExtent-96659" href="#VUID-VkBufferImageCopy2-imageExtent-96659"></a> <span class="vuid">VUID-VkBufferImageCopy2-imageExtent-96659</span><br>

<code>imageExtent.width</code> <strong class="purple">must</strong> not be 0</p>
</li>
<li>
<p><a id="VUID-VkBufferImageCopy2-imageExtent-96660" href="#VUID-VkBufferImageCopy2-imageExtent-96660"></a> <span class="vuid">VUID-VkBufferImageCopy2-imageExtent-96660</span><br>

<code>imageExtent.height</code> <strong class="purple">must</strong> not be 0</p>
</li>
<li>
<p><a id="VUID-VkBufferImageCopy2-imageExtent-96661" href="#VUID-VkBufferImageCopy2-imageExtent-96661"></a> <span class="vuid">VUID-VkBufferImageCopy2-imageExtent-96661</span><br>

<code>imageExtent.depth</code> <strong class="purple">must</strong> not be 0</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage (Implicit)</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkBufferImageCopy2-sType-sType" href="#VUID-VkBufferImageCopy2-sType-sType"></a> <span class="vuid">VUID-VkBufferImageCopy2-sType-sType</span><br>
 <code>sType</code> <strong class="purple">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2</code></p>
</li>
<li>
<p><a id="VUID-VkBufferImageCopy2-pNext-pNext" href="#VUID-VkBufferImageCopy2-pNext-pNext"></a> <span class="vuid">VUID-VkBufferImageCopy2-pNext-pNext</span><br>
 <code>pNext</code> <strong class="purple">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href="#VkCopyCommandTransformInfoQCOM">VkCopyCommandTransformInfoQCOM</a></p>
</li>
<li>
<p><a id="VUID-VkBufferImageCopy2-sType-unique" href="#VUID-VkBufferImageCopy2-sType-unique"></a> <span class="vuid">VUID-VkBufferImageCopy2-sType-unique</span><br>
 The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class="purple">must</strong> be unique</p>
</li>
<li>
<p><a id="VUID-VkBufferImageCopy2-imageSubresource-parameter" href="#VUID-VkBufferImageCopy2-imageSubresource-parameter"></a> <span class="vuid">VUID-VkBufferImageCopy2-imageSubresource-parameter</span><br>
 <code>imageSubresource</code> <strong class="purple">must</strong> be a valid <a href="#VkImageSubresourceLayers">VkImageSubresourceLayers</a> structure</p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="hic"><a class="anchor" href="#hic"></a>3. Host Image Copy</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Tristique senectus et netus et malesuada. Tempor commodo ullamcorper a lacus
vestibulum sed arcu. Tellus in metus vulputate eu scelerisque. Lectus sit amet
est placerat in. Quam adipiscing vitae proin sagittis. Mattis pellentesque id
nibh tortor id aliquet lectus proin nibh. Sociis natoque penatibus et magnis
dis parturient montes nascetur. Lobortis mattis aliquam faucibus purus in massa
tempor nec. Ut ornare lectus sit amet est placerat in. Integer quis auctor elit
sed vulputate mi sit amet mauris. Ultrices sagittis orci a scelerisque purus
semper eget duis. Sit amet consectetur adipiscing elit duis tristique. Semper
risus in hendrerit gravida rutrum. Lorem ipsum dolor sit amet consectetur
adipiscing elit duis. Varius morbi enim nunc faucibus a pellentesque sit amet.
Praesent semper feugiat nibh sed pulvinar proin. Porttitor leo a diam
sollicitudin tempor id. In massa tempor nec feugiat nisl pretium fusce id. Amet
venenatis urna cursus eget nunc scelerisque.</p>
</div>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Cursus sit amet dictum sit amet justo:</p>
</div>
<div id="vkCopyMemoryToImageEXT" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_EXT_host_image_copy</span>
<span class="n">VkResult</span> <span class="nf">vkCopyMemoryToImageEXT</span><span class="p">(</span>
    <span class="n">VkDevice</span>                                    <span class="n">device</span><span class="p">,</span>
    <span class="k">const</span> <span class="n">VkCopyMemoryToImageInfoEXT</span><span class="o">*</span>           <span class="n">pCopyMemoryToImageInfo</span><span class="p">);</span></code></pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p><code>device</code> Quis viverra nibh cras pulvinar mattis nunc
<code>pCopyMemoryToImageInfo-&gt;dstImage</code>.</p>
</li>
<li>
<p><code>pCopyMemoryToImageInfo</code> Est velit egestas dui id ornare. Tristique nulla aliquet enim tortor at
<a href="#VkCopyMemoryToImageInfoEXT">VkCopyMemoryToImageInfoEXT</a> structure.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Turpis egestas pretium aenean pharetra <a href="#vkCmdCopyBufferToImage2">vkCmdCopyBufferToImage2</a>, magna ac placerat vestibulum lectus.</p>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-vkCopyMemoryToImageEXT-hostImageCopy-99058" href="#VUID-vkCopyMemoryToImageEXT-hostImageCopy-99058"></a> <span class="vuid">VUID-vkCopyMemoryToImageEXT-hostImageCopy-99058</span><br>

Risus quis varius <a href="#features-hostImageCopy"><code>hostImageCopy</code></a> quam
quisque id diam vel</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage (Implicit)</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-vkCopyMemoryToImageEXT-device-parameter" href="#VUID-vkCopyMemoryToImageEXT-device-parameter"></a> <span class="vuid">VUID-vkCopyMemoryToImageEXT-device-parameter</span><br>
 <code>device</code> <strong class="purple">must</strong> be a valid <a href="#VkDevice">VkDevice</a> handle</p>
</li>
<li>
<p><a id="VUID-vkCopyMemoryToImageEXT-pCopyMemoryToImageInfo-parameter" href="#VUID-vkCopyMemoryToImageEXT-pCopyMemoryToImageInfo-parameter"></a> <span class="vuid">VUID-vkCopyMemoryToImageEXT-pCopyMemoryToImageInfo-parameter</span><br>
 <code>pCopyMemoryToImageInfo</code> <strong class="purple">must</strong> be a valid pointer to a valid <a href="#VkCopyMemoryToImageInfoEXT">VkCopyMemoryToImageInfoEXT</a> structure</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Return Codes</div>
<div class="dlist">
<dl>
<dt class="hdlist1"><a href="#fundamentals-successcodes">Success</a></dt>
<dd>
<div class="ulist">
<ul>
<li>
<p><code>VK_SUCCESS</code></p>
</li>
</ul>
</div>
</dd>
<dt class="hdlist1"><a href="#fundamentals-errorcodes">Failure</a></dt>
<dd>
<div class="ulist">
<ul>
<li>
<p><code>VK_ERROR_INITIALIZATION_FAILED</code></p>
</li>
<li>
<p><code>VK_ERROR_OUT_OF_HOST_MEMORY</code></p>
</li>
<li>
<p><code>VK_ERROR_OUT_OF_DEVICE_MEMORY</code></p>
</li>
<li>
<p><code>VK_ERROR_MEMORY_MAP_FAILED</code></p>
</li>
</ul>
</div>
</dd>
</dl>
</div>
</div>
</div>
</div>
</div>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Morbi tincidunt augue interdum velit euismod in pellentesque massa <code>VkCopyMemoryToImageInfoEXT</code> structure:</p>
</div>
<div id="VkCopyMemoryToImageInfoEXT" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_EXT_host_image_copy</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkCopyMemoryToImageInfoEXT</span> <span class="p">{</span>
    <span class="n">VkStructureType</span>                  <span class="n">sType</span><span class="p">;</span>
    <span class="k">const</span> <span class="kt">void</span><span class="o">*</span>                      <span class="n">pNext</span><span class="p">;</span>
    <span class="n">VkHostImageCopyFlagsEXT</span>          <span class="n">flags</span><span class="p">;</span>
    <span class="n">VkImage</span>                          <span class="n">dstImage</span><span class="p">;</span>
    <span class="n">VkImageLayout</span>                    <span class="n">dstImageLayout</span><span class="p">;</span>
    <span class="kt">uint32_t</span>                         <span class="n">regionCount</span><span class="p">;</span>
    <span class="k">const</span> <span class="n">VkMemoryToImageCopyEXT</span><span class="o">*</span>    <span class="n">pRegions</span><span class="p">;</span>
<span class="p">}</span> <span class="n">VkCopyMemoryToImageInfoEXT</span><span class="p">;</span></code></pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p><code>sType</code> on enim praesent elementum facilisis.</p>
</li>
<li>
<p><code>pNext</code> Ultricies tristique <code>NULL</code> nulla aliquet enim tortor.</p>
</li>
<li>
<p><code>flags</code> Volutpat ac tincidunt vitae semper.</p>
</li>
<li>
<p><code>dstImage</code> Orci eu lobortis elementum nibh.</p>
</li>
<li>
<p><code>dstImageLayout</code> Euismod elementum nisi quis eleifend quam adipiscing vitae proin.</p>
</li>
<li>
<p><code>regionCount</code> Et netus et malesuada fames ac turpis egestas.</p>
</li>
<li>
<p><code>pRegions</code> Lorem ipsum dolor sitr <a href="#VkMemoryToImageCopyEXT">VkMemoryToImageCopyEXT</a> amet consectetu.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p><code>vkCopyMemoryToImageEXT</code> pulvinar neque laoreet suspendisse interdum
consectetur libero. Id porta nibh venenatis cras sed felis. Massa vitae tortor
condimentum lacinia quis.</p>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-dstImage-97966" href="#VUID-VkCopyMemoryToImageInfoEXT-dstImage-97966"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-dstImage-97966</span><br>

If <code>dstImage</code> is non-sparse then the image or the specified
<em>disjoint</em> plane <strong class="purple">must</strong> be bound completely and contiguously to a single
<code>VkDeviceMemory</code> object</p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-97967" href="#VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-97967"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-97967</span><br>

The <code>imageSubresource.mipLevel</code> member of each element of
<code>pRegions</code> <strong class="purple">must</strong> be less than the <code>mipLevels</code> specified in
<a href="#VkImageCreateInfo">VkImageCreateInfo</a> when <code>dstImage</code> was created</p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-97968" href="#VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-97968"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-imageSubresource-97968</span><br>

The <span class="eq"><code>imageSubresource.baseArrayLayer</code> + 
<code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code>
, if <code>imageSubresource.layerCount</code> is not
<code>VK_REMAINING_ARRAY_LAYERS</code> and <a href="#features-maintenance5"><code>maintenance5</code></a> is not enabled,
<strong class="purple">must</strong> be less than or equal to the <code>arrayLayers</code> specified in
<a href="#VkImageCreateInfo">VkImageCreateInfo</a> when <code>dstImage</code> was created</p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-dstImage-97969" href="#VUID-VkCopyMemoryToImageInfoEXT-dstImage-97969"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-dstImage-97969</span><br>

<code>dstImage</code> <strong class="purple">must</strong> not have been created with <code>flags</code>
containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code></p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-99059" href="#VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-99059"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-99059</span><br>

<code>dstImageLayout</code> <strong class="purple">must</strong> Lorem ipsum dolor sit amet, <code>dstImage</code>
consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
<code>pRegions</code> et dolore magna aliqua</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage (Implicit)</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-sType-sType" href="#VUID-VkCopyMemoryToImageInfoEXT-sType-sType"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-sType-sType</span><br>
 <code>sType</code> <strong class="purple">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT</code></p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-pNext-pNext" href="#VUID-VkCopyMemoryToImageInfoEXT-pNext-pNext"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-pNext-pNext</span><br>
 <code>pNext</code> <strong class="purple">must</strong> be <code>NULL</code></p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-flags-parameter" href="#VUID-VkCopyMemoryToImageInfoEXT-flags-parameter"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-flags-parameter</span><br>
 <code>flags</code> <strong class="purple">must</strong> be a valid combination of <a href="#VkHostImageCopyFlagBitsEXT">VkHostImageCopyFlagBitsEXT</a> values</p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-dstImage-parameter" href="#VUID-VkCopyMemoryToImageInfoEXT-dstImage-parameter"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-dstImage-parameter</span><br>
 <code>dstImage</code> <strong class="purple">must</strong> be a valid <a href="#VkImage">VkImage</a> handle</p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-parameter" href="#VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-parameter"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-parameter</span><br>
 <code>dstImageLayout</code> <strong class="purple">must</strong> be a valid <a href="#VkImageLayout">VkImageLayout</a> value</p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-pRegions-parameter" href="#VUID-VkCopyMemoryToImageInfoEXT-pRegions-parameter"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-pRegions-parameter</span><br>
 <code>pRegions</code> <strong class="purple">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href="#VkMemoryToImageCopyEXT">VkMemoryToImageCopyEXT</a> structures</p>
</li>
<li>
<p><a id="VUID-VkCopyMemoryToImageInfoEXT-regionCount-arraylength" href="#VUID-VkCopyMemoryToImageInfoEXT-regionCount-arraylength"></a> <span class="vuid">VUID-VkCopyMemoryToImageInfoEXT-regionCount-arraylength</span><br>
 <code>regionCount</code> <strong class="purple">must</strong> be greater than <code>0</code></p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Congue eu consequat ac felis donec et odio. Enim nec
<a href="#VkCopyMemoryToImageInfoEXT">VkCopyMemoryToImageInfoEXT</a>::<code>pRegions</code> dui nunc mattis enim:</p>
</div>
<div id="VkMemoryToImageCopyEXT" class="listingblock">
<div class="content">
<pre class="rouge highlight"><code data-lang="c++"><span class="c1">// Provided by VK_EXT_host_image_copy</span>
<span class="k">typedef</span> <span class="k">struct</span> <span class="nc">VkMemoryToImageCopyEXT</span> <span class="p">{</span>
    <span class="n">VkStructureType</span>             <span class="n">sType</span><span class="p">;</span>
    <span class="k">const</span> <span class="kt">void</span><span class="o">*</span>                 <span class="n">pNext</span><span class="p">;</span>
    <span class="k">const</span> <span class="kt">void</span><span class="o">*</span>                 <span class="n">pHostPointer</span><span class="p">;</span>
    <span class="kt">uint32_t</span>                    <span class="n">memoryRowLength</span><span class="p">;</span>
    <span class="kt">uint32_t</span>                    <span class="n">memoryImageHeight</span><span class="p">;</span>
    <span class="n">VkImageSubresourceLayers</span>    <span class="n">imageSubresource</span><span class="p">;</span>
    <span class="n">VkOffset3D</span>                  <span class="n">imageOffset</span><span class="p">;</span>
    <span class="n">VkExtent3D</span>                  <span class="n">imageExtent</span><span class="p">;</span>
<span class="p">}</span> <span class="n">VkMemoryToImageCopyEXT</span><span class="p">;</span></code></pre>
</div>
</div>
<div class="ulist">
<ul>
<li>
<p><code>sType</code> Nulla facilisi etiam dignissim diam quis enim lobortis scelerisque fermentum.</p>
</li>
<li>
<p><code>pNext</code> Nam libero justo laoreet sit amet.</p>
</li>
<li>
<p><code>pHostPointer</code> Lacus luctus accumsan tortor posuere.</p>
</li>
<li>
<p><code>memoryRowLength</code> and <code>memoryImageHeight</code> Ultrices tincidunt arcu
non sodales. Ut enim blandit volutpat maecenas volutpat blandit aliquam
etiam <code>imageExtent</code>.</p>
</li>
<li>
<p><code>imageSubresource</code> Sed id semper risus in. Natoque penatibus et magnis dis parturient montes.</p>
</li>
<li>
<p><code>imageOffset</code> Vestibulum morbi blandit cursus <code>x</code>, <code>y</code>, <code>z</code>
risus at ultrices mi tempus imperdiet.</p>
</li>
<li>
<p><code>imageExtent</code> Dignissim cras tincidunt lobortis feugiat vivamus at
<code>width</code>, <code>height</code> and <code>depth</code> augue eget arcu.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Ultricies mi eget mauris pharetra. Ac turpis <a href="#VkBufferImageCopy2">VkBufferImageCopy2</a> egestas
maecenas pharetra convallis posuere morbi leo urna. Cras sed felis eget velit
aliquet. Sit amet mauris commodo quis imperdiet. Malesuada pellentesque elit
eget gravida cum sociis natoque. Faucibus pulvinar elementum integer enim neque
volutpat ac tincidunt vitae</p>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-pHostPointer-99061" href="#VUID-VkMemoryToImageCopyEXT-pHostPointer-99061"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-pHostPointer-99061</span><br>

<code>pHostPointer</code> <strong class="purple">must</strong> Nisl condimentum id venenatis a condimentum vitae</p>
</li>
</ul>
</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-memoryRowLength-99101" href="#VUID-VkMemoryToImageCopyEXT-memoryRowLength-99101"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-memoryRowLength-99101</span><br>

<code>memoryRowLength</code> <strong class="purple">must</strong> be <code>0</code>, or greater than or equal to the
<code>width</code> member of <code>imageExtent</code></p>
</li>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-memoryImageHeight-99102" href="#VUID-VkMemoryToImageCopyEXT-memoryImageHeight-99102"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-memoryImageHeight-99102</span><br>

<code>memoryImageHeight</code> <strong class="purple">must</strong> be <code>0</code>, or greater than or equal to the
<code>height</code> member of <code>imageExtent</code></p>
</li>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-aspectMask-99103" href="#VUID-VkMemoryToImageCopyEXT-aspectMask-99103"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-aspectMask-99103</span><br>

The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class="purple">must</strong> only have a
single bit set</p>
</li>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-imageExtent-96659" href="#VUID-VkMemoryToImageCopyEXT-imageExtent-96659"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-imageExtent-96659</span><br>

<code>imageExtent.width</code> <strong class="purple">must</strong> not be 0</p>
</li>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-imageExtent-96660" href="#VUID-VkMemoryToImageCopyEXT-imageExtent-96660"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-imageExtent-96660</span><br>

<code>imageExtent.height</code> <strong class="purple">must</strong> not be 0</p>
</li>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-imageExtent-96661" href="#VUID-VkMemoryToImageCopyEXT-imageExtent-96661"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-imageExtent-96661</span><br>

<code>imageExtent.depth</code> <strong class="purple">must</strong> not be 0</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sidebarblock">
<div class="content">
<div class="title">Valid Usage (Implicit)</div>
<div class="ulist">
<ul>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-sType-sType" href="#VUID-VkMemoryToImageCopyEXT-sType-sType"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-sType-sType</span><br>
 <code>sType</code> <strong class="purple">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT</code></p>
</li>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-pNext-pNext" href="#VUID-VkMemoryToImageCopyEXT-pNext-pNext"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-pNext-pNext</span><br>
 <code>pNext</code> <strong class="purple">must</strong> be <code>NULL</code></p>
</li>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-pHostPointer-parameter" href="#VUID-VkMemoryToImageCopyEXT-pHostPointer-parameter"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-pHostPointer-parameter</span><br>
 <code>pHostPointer</code> <strong class="purple">must</strong> be a pointer value</p>
</li>
<li>
<p><a id="VUID-VkMemoryToImageCopyEXT-imageSubresource-parameter" href="#VUID-VkMemoryToImageCopyEXT-imageSubresource-parameter"></a> <span class="vuid">VUID-VkMemoryToImageCopyEXT-imageSubresource-parameter</span><br>
 <code>imageSubresource</code> <strong class="purple">must</strong> be a valid <a href="#VkImageSubresourceLayers">VkImageSubresourceLayers</a> structure</p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="extensions"><a class="anchor" href="#extensions"></a>Layers &amp; Extensions (Informative)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Cursus euismod quis viverra nibh cras pulvinar.</p>
</div>
<div class="sect2">
<h3 id="_extension_dependencies"><a class="anchor" href="#_extension_dependencies"></a>Extension Dependencies</h3>
<div class="paragraph">
<p>Id diam vel quam elementum</p>
</div>
<div class="sect3">
<h4 id="VK_EXT_host_image_copy"><a class="anchor" href="#VK_EXT_host_image_copy"></a>VK_EXT_host_image_copy</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><strong>Name String</strong></dt>
<dd>
<p><code>VK_EXT_host_image_copy</code></p>
</dd>
<dt class="hdlist1"><strong>Extension Type</strong></dt>
<dd>
<p>Device extension</p>
</dd>
<dt class="hdlist1"><strong>Registered Extension Number</strong></dt>
<dd>
<p>271</p>
</dd>
<dt class="hdlist1"><strong>Revision</strong></dt>
<dd>
<p>1</p>
</dd>
<dt class="hdlist1"><strong>Ratification Status</strong></dt>
<dd>
<p>Ratified</p>
</dd>
<dt class="hdlist1"><strong>Extension and Version Dependencies</strong></dt>
<dd>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p><a href="#VK_KHR_get_physical_device_properties2">VK_KHR_get_physical_device_properties2</a><br>
and<br>
<a href="#VK_KHR_copy_commands2">VK_KHR_copy_commands2</a><br>
and<br>
<a href="#VK_KHR_format_feature_flags2">VK_KHR_format_feature_flags2</a><br></p>
</div>
</div>
</div>
</dd>
<dt class="hdlist1"><strong>Contact</strong></dt>
<dd>
<div class="ulist">
<ul>
<li>
<p>Shahbaz Youssefi <a href="https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_host_image_copy] @syoussefi%0A*Here describe the issue or question you have about the VK_EXT_host_image_copy extension*" target="_blank" rel="nofollow noopener"><span class="icon black"><i class="fa fa-github"></i></span>syoussefi</a></p>
</li>
</ul>
</div>
</dd>
<dt class="hdlist1"><strong>Extension Proposal</strong></dt>
<dd>
<p><a href="https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_EXT_host_image_copy.adoc">VK_EXT_host_image_copy</a></p>
</dd>
</dl>
</div>
</div>
<div class="sect3">
<h4 id="_other_extension_metadata"><a class="anchor" href="#_other_extension_metadata"></a>Other Extension Metadata</h4>
<div class="dlist">
<dl>
<dt class="hdlist1"><strong>Last Modified Date</strong></dt>
<dd>
<p>2186-02-28</p>
</dd>
<dt class="hdlist1"><strong>Contributors</strong></dt>
<dd>
<div class="ulist">
<ul>
<li>
<p>Zabhash Ifessouy, Elgoog</p>
</li>
<li>
<p>Htiaf Dnartske, Aroballoc</p>
</li>
<li>
<p>Sreip Lleinad, AIDIVN</p>
</li>
</ul>
</div>
</dd>
</dl>
</div>
</div>
<div class="sect3">
<h4 id="_description"><a class="anchor" href="#_description"></a>Description</h4>
<div class="paragraph">
<p>Sed risus pretium quam vulputate dignissim suspendisse in est ante. Mauris
commodo quis imperdiet massa tincidunt nunc pulvinar. Odio morbi quis commodo
odio aenean sed. Quam adipiscing vitae proin sagittis nisl rhoncus. Vel
facilisis volutpat est velit egestas dui. Consequat id porta nibh venenatis
cras sed felis. Ac tortor dignissim convallis aenean et tortor. Amet porttitor
eget dolor morbi non arcu. Consequat interdum varius sit amet. Tempus egestas
sed sed risus pretium quam. Gravida in fermentum et sollicitudin ac orci
phasellus egestas. Nulla facilisi etiam dignissim diam quis enim lobortis
scelerisque fermentum. Tempus quam pellentesque nec nam aliquam. A pellentesque
sit amet porttitor eget. Viverra justo nec ultrices dui sapien eget mi. Nullam
vehicula ipsum a arcu. Amet volutpat consequat mauris nunc congue nisi.
Tincidunt arcu non sodales neque.</p>
</div>
</div>
<div class="sect3">
<h4 id="_new_commands"><a class="anchor" href="#_new_commands"></a>New Commands</h4>
<div class="ulist">
<ul>
<li>
<p><a href="#vkCopyImageToImageEXT">vkCopyImageToImageEXT</a></p>
</li>
<li>
<p><a href="#vkCopyImageToMemoryEXT">vkCopyImageToMemoryEXT</a></p>
</li>
<li>
<p><a href="#vkCopyMemoryToImageEXT">vkCopyMemoryToImageEXT</a></p>
</li>
<li>
<p><a href="#vkGetImageSubresourceLayout2EXT">vkGetImageSubresourceLayout2EXT</a></p>
</li>
<li>
<p><a href="#vkTransitionImageLayoutEXT">vkTransitionImageLayoutEXT</a></p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_new_structures"><a class="anchor" href="#_new_structures"></a>New Structures</h4>
<div class="ulist">
<ul>
<li>
<p><a href="#VkCopyImageToImageInfoEXT">VkCopyImageToImageInfoEXT</a></p>
</li>
<li>
<p><a href="#VkCopyImageToMemoryInfoEXT">VkCopyImageToMemoryInfoEXT</a></p>
</li>
<li>
<p><a href="#VkCopyMemoryToImageInfoEXT">VkCopyMemoryToImageInfoEXT</a></p>
</li>
<li>
<p><a href="#VkHostImageLayoutTransitionInfoEXT">VkHostImageLayoutTransitionInfoEXT</a></p>
</li>
<li>
<p><a href="#VkImageSubresource2EXT">VkImageSubresource2EXT</a></p>
</li>
<li>
<p><a href="#VkImageToMemoryCopyEXT">VkImageToMemoryCopyEXT</a></p>
</li>
<li>
<p><a href="#VkMemoryToImageCopyEXT">VkMemoryToImageCopyEXT</a></p>
</li>
<li>
<p><a href="#VkSubresourceLayout2EXT">VkSubresourceLayout2EXT</a></p>
</li>
<li>
<p>Extending <a href="#VkImageFormatProperties2">VkImageFormatProperties2</a>:</p>
<div class="ulist">
<ul>
<li>
<p><a href="#VkHostImageCopyDevicePerformanceQueryEXT">VkHostImageCopyDevicePerformanceQueryEXT</a></p>
</li>
</ul>
</div>
</li>
<li>
<p>Extending <a href="#VkPhysicalDeviceFeatures2">VkPhysicalDeviceFeatures2</a>, <a href="#VkDeviceCreateInfo">VkDeviceCreateInfo</a>:</p>
<div class="ulist">
<ul>
<li>
<p><a href="#VkPhysicalDeviceHostImageCopyFeaturesEXT">VkPhysicalDeviceHostImageCopyFeaturesEXT</a></p>
</li>
</ul>
</div>
</li>
<li>
<p>Extending <a href="#VkPhysicalDeviceProperties2">VkPhysicalDeviceProperties2</a>:</p>
<div class="ulist">
<ul>
<li>
<p><a href="#VkPhysicalDeviceHostImageCopyPropertiesEXT">VkPhysicalDeviceHostImageCopyPropertiesEXT</a></p>
</li>
</ul>
</div>
</li>
<li>
<p>Extending <a href="#VkSubresourceLayout2KHR">VkSubresourceLayout2KHR</a>:</p>
<div class="ulist">
<ul>
<li>
<p><a href="#VkSubresourceHostMemcpySizeEXT">VkSubresourceHostMemcpySizeEXT</a></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_new_enums"><a class="anchor" href="#_new_enums"></a>New Enums</h4>
<div class="ulist">
<ul>
<li>
<p><a href="#VkHostImageCopyFlagBitsEXT">VkHostImageCopyFlagBitsEXT</a></p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_new_bitmasks"><a class="anchor" href="#_new_bitmasks"></a>New Bitmasks</h4>
<div class="ulist">
<ul>
<li>
<p><a href="#VkHostImageCopyFlagsEXT">VkHostImageCopyFlagsEXT</a></p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_new_enum_constants"><a class="anchor" href="#_new_enum_constants"></a>New Enum Constants</h4>
<div class="ulist">
<ul>
<li>
<p><code>VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME</code></p>
</li>
<li>
<p><code>VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION</code></p>
</li>
<li>
<p>Extending <a href="#VkFormatFeatureFlagBits2">VkFormatFeatureFlagBits2</a>:</p>
<div class="ulist">
<ul>
<li>
<p><code>VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT</code></p>
</li>
</ul>
</div>
</li>
<li>
<p>Extending <a href="#VkImageUsageFlagBits">VkImageUsageFlagBits</a>:</p>
<div class="ulist">
<ul>
<li>
<p><code>VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT</code></p>
</li>
</ul>
</div>
</li>
<li>
<p>Extending <a href="#VkStructureType">VkStructureType</a>:</p>
<div class="ulist">
<ul>
<li>
<p><code>VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT</code></p>
</li>
<li>
<p><code>VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT</code></p>
</li>
<li>
<p><code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT</code></p>
</li>
<li>
<p><code>VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT</code></p>
</li>
<li>
<p><code>VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT</code></p>
</li>
<li>
<p><code>VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT</code></p>
</li>
<li>
<p><code>VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT</code></p>
</li>
<li>
<p><code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT</code></p>
</li>
<li>
<p><code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT</code></p>
</li>
<li>
<p><code>VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT</code></p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_issues"><a class="anchor" href="#_issues"></a>Issues</h4>
<div class="paragraph">
<p>1) Natoque penatibus et magnis dis parturient montes nascetur.</p>
</div>
<div class="paragraph">
<p><strong>RESOLVED</strong>: Iaculis eu non diam phasellus vestibulum. Consequat nisl vel
pretium lectus quam. Euismod in pellentesque massa placerat duis ultricies
lacus sed turpis. Ullamcorper eget nulla facilisi etiam dignissim diam quis
enim. Id velit ut tortor pretium viverra suspendisse potenti.</p>
</div>
<div class="paragraph">
<p>2) Faucibus in ornare quam viverra orci sagittis eu volutpat?</p>
</div>
<div class="paragraph">
<p><strong>RESOLVED</strong>: Eu facilisis sed odio morbi quis commodo. Pharetra magna ac
placerat vestibulum lectus mauris. Ac felis donec et odio pellentesque diam
volutpat commodo sed.</p>
</div>
</div>
<div class="sect3">
<h4 id="_version_history"><a class="anchor" href="#_version_history"></a>Version History</h4>
<div class="ulist">
<ul>
<li>
<p>Revision 0, 2173-05-30 (Htiaf Dnartske)</p>
<div class="ulist">
<ul>
<li>
<p>Malesuada pellentesque elit eget gravida cum sociis natoque</p>
</li>
</ul>
</div>
</li>
<li>
<p>Revision 1, 2185-12-01 (Zabhash Ifessouy)</p>
<div class="ulist">
<ul>
<li>
<p>Id leo in vitae turpis massa sed elementum</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Version 1.2.3<br>
</div>
</div>


</body>
</html>