diff --git a/extensions/clext.php b/extensions/clext.php
index b3a88ef..251a2a3 100644
--- a/extensions/clext.php
+++ b/extensions/clext.php
@@ -81,7 +81,7 @@
 </li>
 <li value=41><a href="extensions/arm/cl_arm_thread_limit_hint.txt">cl_arm_thread_limit_hint</a>
 </li>
-<li value=42><a href="extensions/intel/cl_intel_packed_yuv.txt">cl_intel_packed_yuv</a>
+<li value=42><a href="extensions/intel/cl_intel_packed_yuv.html">cl_intel_packed_yuv</a>
 </li>
 <li value=43><a href="extensions/intel/cl_intel_required_subgroup_size.html">cl_intel_required_subgroup_size</a>
 </li>
@@ -95,7 +95,7 @@
 </li>
 <li value=48><a href="extensions/intel/cl_intel_subgroups_short.html">cl_intel_subgroups_short</a>
 </li>
-<li value=49><a href="extensions/intel/cl_intel_planar_yuv.txt">cl_intel_planar_yuv</a>
+<li value=49><a href="extensions/intel/cl_intel_planar_yuv.html">cl_intel_planar_yuv</a>
 </li>
 <li value=50><a href="extensions/intel/cl_intel_device_side_avc_motion_estimation.txt">cl_intel_device_side_avc_motion_estimation</a>
 </li>
@@ -137,4 +137,6 @@
 </li>
 <li value=69><a href="extensions/arm/cl_arm_controlled_kernel_termination.html">cl_arm_controlled_kernel_termination</a>
 </li>
+<li value=70><a href="extensions/intel/cl_intel_sharing_format_query.html">cl_intel_sharing_format_query</a>
+</li>
 </ol>
diff --git a/extensions/intel/cl_intel_packed_yuv.html b/extensions/intel/cl_intel_packed_yuv.html
new file mode 100644
index 0000000..eff78ad
--- /dev/null
+++ b/extensions/intel/cl_intel_packed_yuv.html
@@ -0,0 +1,1231 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<title>cl_intel_packed_yuv</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: white; color: #222222; 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: #333333; }
+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 #dddddd; 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 #dddddd; 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 #dddddd; }
+blockquote cite { display: block; font-size: 0.8125em; color: #5e93b8; }
+blockquote cite:before { content: "\2014 \0020"; }
+blockquote cite a, blockquote cite a:visited { color: #5e93b8; }
+
+blockquote, blockquote p { line-height: 1.6; color: #333333; }
+
+/* Microformats */
+.vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; 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: white; margin-bottom: 1.25em; border: solid 1px #d8d8ce; }
+table thead, table tfoot { background: -webkit-linear-gradient(top, #add386, #90b66a); 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: white; 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: #edf2f2; }
+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: white; -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; -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 #dddddd; }
+#header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #dddddd; padding-bottom: 8px; }
+#header .details { border-bottom: 1px solid #dddddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #5e93b8; 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: #333333; }
+#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: #333333; }
+#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 #dddddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; }
+
+#toc { border-bottom: 0 solid #dddddd; 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: white; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #dddddd; 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 #dddddd; 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: white; -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 #dddddd; }
+
+#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 #dddddd; color: #5e93b8; }
+.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: white; -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: white; -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: #eeeeee; }
+.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 #666666; -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: #eeeeee; 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 #dddddd; }
+
+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: #333333; 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 #5e93b8; }
+.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: #333333; 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: #5e93b8; }
+
+.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: -webkit-linear-gradient(top, #add386, #90b66a); }
+
+tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: white; 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 white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; }
+
+.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 #dddddd; }
+
+.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: #eeeeee; }
+
+</style>
+<link rel="stylesheet" href="../katex/katex.min.css">
+<script src="../katex/katex.min.js"></script>
+<script src="../katex/contrib/auto-render.min.js"></script>
+    <!-- Use KaTeX to render math once document is loaded, see
+         https://github.com/Khan/KaTeX/tree/master/contrib/auto-render -->
+<script>
+    document.addEventListener("DOMContentLoaded", function () {
+        renderMathInElement(
+            document.body,
+            {
+                delimiters: [
+                    { left: "$$", right: "$$", display: true},
+                    { left: "\\[", right: "\\]", display: true},
+                    { left: "$", right: "$", display: false},
+                    { left: "\\(", right: "\\)", display: false}
+                ]
+            }
+        );
+    });
+</script></head>
+<body class="book">
+<div id="header">
+<h1>cl_intel_packed_yuv</h1>
+<div class="details">
+<span id="revnumber">version v3.0.8,</span>
+<span id="revdate">Wed, 30 Jun 2021 22:00:00 +0000</span>
+<br><span id="revremark">from git branch: master commit: 09130de814688ec7b463cb089986b807c628ead3</span>
+</div>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_name_strings"><a class="anchor" href="#_name_strings"></a>Name Strings</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><code>cl_intel_packed_yuv</code></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_contact"><a class="anchor" href="#_contact"></a>Contact</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Ben Ashbaugh, Intel (ben 'dot' ashbaugh 'at' intel 'dot' com)</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_contributors"><a class="anchor" href="#_contributors"></a>Contributors</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Ben Ashbaugh, Intel</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_notice"><a class="anchor" href="#_notice"></a>Notice</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright (c) 2021 Intel Corporation.  All rights reserved.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_status"><a class="anchor" href="#_status"></a>Status</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Shipping</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_version"><a class="anchor" href="#_version"></a>Version</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Built On: 2021-06-29<br>
+Revision: 1.0.1</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_dependencies"><a class="anchor" href="#_dependencies"></a>Dependencies</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>OpenCL 1.2 is required.</p>
+</div>
+<div class="paragraph">
+<p>This extension is written against the OpenCL Specification Version 3.0.7.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_overview"><a class="anchor" href="#_overview"></a>Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The purpose of this extension is to provide OpenCL support for packed YUV
+images.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_new_api_enums"><a class="anchor" href="#_new_api_enums"></a>New API Enums</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Accepted as the <code>image_channel_order</code> of <code>cl_image_format</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>#define CL_YUYV_INTEL                               0x4076
+#define CL_UYVY_INTEL                               0x4077
+#define CL_YVYU_INTEL                               0x4078
+#define CL_VYUY_INTEL                               0x4079</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_modifications_to_the_opencl_api_specification"><a class="anchor" href="#_modifications_to_the_opencl_api_specification"></a>Modifications to the OpenCL API Specification</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1">In section 5.3.1.2 Image Descriptor, add a sentence to the end of the description of image_width: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p><code>image_width</code> is&#8230;&#8203;  If the image is a packed YUV image, <code>image_width</code> is the width of the Y data and must be even.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">Add to List of supported Image Channel Order Values in section 5.3.1.1 Image Format Descriptor: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 16. List of supported Image Channel Order Values</caption>
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Image Channel Order</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_YUYV_INTEL</code>, <code>CL_UYVY_INTEL</code>, <code>CL_YVYU_INTEL</code>, <code>CL_VYUY_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Packed YUV image format.  This format can only be used if <code>image_channel_data_type</code> = <code>CL_UNORM_INT8</code>.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">Add to the end of section 5.3.1.1 Image Format Descriptor: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>The only supported <code>image_channel_data_type</code> for packed YUV images is <code>CL_UNORM_INT8</code>.</p>
+</div>
+<div class="paragraph">
+<p>The memory layout of a packed YUV image when <code>image_channel_order</code> is <code>CL_YUYV_INTEL</code> is:</p>
+</div>
+<table class="tableblock frame-all grid-all" style="width: 80%;">
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">U<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y<br>
+Pixel N+1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">V<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">&#8230;&#8203;</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The memory layout of a packed YUV image when <code>image_channel_order</code> is <code>CL_UYVY_INTEL</code> is:</p>
+</div>
+<table class="tableblock frame-all grid-all" style="width: 80%;">
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">U<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">V<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y<br>
+Pixel N+1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">&#8230;&#8203;</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The memory layout of a packed YUV image when <code>image_channel_order</code> is <code>CL_YVYU_INTEL</code> is:</p>
+</div>
+<table class="tableblock frame-all grid-all" style="width: 80%;">
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">V<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y<br>
+Pixel N+1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">U<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">&#8230;&#8203;</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The memory layout of a packed YUV image when <code>image_channel_order</code> is <code>CL_VYUY_INTEL</code> is:</p>
+</div>
+<table class="tableblock frame-all grid-all" style="width: 80%;">
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">V<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">U<br>
+Pixel N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y<br>
+Pixel N+1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">&#8230;&#8203;</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">Add a new table to section 5.3.2.1 Minimum List of Supported Image Formats: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table XX. Additional Required Image Formats for Read-Only 2D Images</caption>
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">num_channels</th>
+<th class="tableblock halign-left valign-top">channel_order</th>
+<th class="tableblock halign-left valign-top">channel_data_type</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_YUYV_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UNORM_INT8</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UYVY_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UNORM_INT8</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_YVYU_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UNORM_INT8</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_VYUY_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UNORM_INT8</code></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">In section 5.3.3 Reading, Writing, and Copying Image Objects, add a sentence to the end of the descriptions of origin and region under clEnqueueReadImage and clEnqueueWriteImage: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p><em>origin</em> defines&#8230;&#8203; If <em>image</em> is a packed YUV image, the x value given by <em>origin</em>[0] indexes Y data in the image and must be even.</p>
+</li>
+<li>
+<p><em>region</em> defines&#8230;&#8203; If <em>image</em> is a packed YUV image, the <em>width</em> value given by <em>region</em>[0] describes Y data in the image and must be even.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">Add a sentence to the end of the descriptions of src_origin, dst_origin, and region under clEnqueueCopyImage: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p><em>src_origin</em> defines&#8230;&#8203; If <em>src_image</em> is a packed YUV image, the x value given by <em>src_origin</em>[0] indexes Y data in <em>src_image</em> and must be even.</p>
+</li>
+<li>
+<p><em>dst_origin</em> defines&#8230;&#8203; If <em>dst_image</em> is a packed YUV image, the x value given by <em>dst_origin</em>[0] indexes Y data in <em>dst_image</em> and must be even.</p>
+</li>
+<li>
+<p><em>region</em> defines&#8230;&#8203; If <em>src_image</em> or <em>dst_image</em> is a packed YUV image, the <em>width</em> value given by <em>region</em>[0] describes Y data and must be even.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">In section 5.3.5 Copying between Image and Buffer Objects, add a sentence to the end of the descriptions of src_origin and region for clEnqueueCopyImageToBuffer: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p><em>src_origin</em> defines&#8230;&#8203; If <em>src_image</em> is a packed YUV image, the x value given by <em>origin</em>[0] indexes Y data in the image and must be even.</p>
+</li>
+<li>
+<p><em>region</em> defines&#8230;&#8203; If <em>src_image</em> is a packed YUV image, the width value given by <em>origin</em>[0] describes Y data and must be even.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">Add a sentence to the end of the descriptions of dst_origin and region for clEnqueueCopyBufferToImage: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p><em>dst_origin</em> defines&#8230;&#8203; If <em>dst_image</em> is a packed YUV image, the x value given by <em>origin</em>[0] indexes Y data in the image and must be even.</p>
+</li>
+<li>
+<p><em>region</em> defines&#8230;&#8203; If <em>dst_image</em> is a packed YUV image, the width value given by <em>region</em>[0] describes Y data and must be even.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">In section 5.3.6 Mapping Image Objects, add a sentence to the end of the descriptions of origin and region for clEnqueueMapImage: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p><em>origin</em> defines&#8230;&#8203; If <em>image</em> is a packed YUV image, the x value given by <em>origin</em>[0] describes Y data and must be even.</p>
+</li>
+<li>
+<p><em>region</em> defines&#8230;&#8203; If <em>image</em> is a packed YUV image, the width value given by <em>region</em>[0] describes Y data and must be even.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_modifications_to_the_opencl_c_specification"><a class="anchor" href="#_modifications_to_the_opencl_c_specification"></a>Modifications to the OpenCL C Specification</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1">In section 6.15.15.1.1 Determining the border color or value, add a bullet for packed YUV formats: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p>If image channel order is <code>CL_YUYV_INTEL</code>, <code>CL_UYVY_INTEL</code>, <code>CL_YVYU_INTEL</code>, or <code>CL_VYUY_INTEL</code>, the border color is value is undefined.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">Add to the un-numbered table in section 6.15.15.7 Mapping image channels to color values returned by read_image and color values passed to write_image to image channels: </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Channel Order</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>float4</code>, <code>int4</code> or <code>uint4</code> <strong>components of channel data</strong></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_YUYV_INTEL</code>, <code>CL_UYVY_INTEL</code>, <code>CL_YVYU_INTEL</code>, <code>CL_VYUY_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">(V, Y, U, 1.0)</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_issues"><a class="anchor" href="#_issues"></a>Issues</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>None.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_revision_history"><a class="anchor" href="#_revision_history"></a>Revision History</h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-rows stretch">
+<colgroup>
+<col style="width: 4.7619%;">
+<col style="width: 14.2857%;">
+<col style="width: 14.2857%;">
+<col style="width: 66.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Rev</th>
+<th class="tableblock halign-left valign-top">Date</th>
+<th class="tableblock halign-left valign-top">Author</th>
+<th class="tableblock halign-left valign-top">Changes</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2016-07-14</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ben Ashbaugh</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Initial Revision</strong></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2021-05-28</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ben Ashbaugh</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Converted to asciidoc, corrected border color value.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Version v3.0.8<br>
+Last updated 2021-06-29 12:20:08 -0700
+</div>
+</div>
+
+<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_HTMLorMML"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/extensions/intel/cl_intel_packed_yuv.txt b/extensions/intel/cl_intel_packed_yuv.txt
index 28b88d0..690683d 100644
--- a/extensions/intel/cl_intel_packed_yuv.txt
+++ b/extensions/intel/cl_intel_packed_yuv.txt
@@ -1,203 +1,11 @@
-Name Strings
+The cl_intel_packed_yuv extension is no longer authored in plain text.
 
-    cl_intel_packed_yuv
+Please refer to the HTML extension specification instead,
+which may be found here:
 
-Contributors
+https://www.khronos.org/registry/OpenCL/extensions/intel/cl_intel_packed_yuv.html
 
-    Ben Ashbaugh, Intel
+The asciidoc source for this extension specification may
+be found here:
 
-Contact
-
-    Ben Ashbaugh, Intel (ben.ashbaugh 'at' intel.com)
-
-Version
-
-    Version 1, July 14, 2016
-
-Number
-
-    OpenCL Extension #42
-
-Status
-
-    Final Draft
-
-Dependencies
-
-    OpenCL 1.2 is required.  This extension is written against revision
-    19 of the OpenCL 1.2 specification.
-
-Overview
-
-    The purpose of this extension is to provide OpenCL support for packed
-    YUV images.
-
-New Procedures and Functions
-
-    None
-
-New Tokens
-
-    Accepted as <image_channel_order> of cl_image_format:
-
-       CL_YUYV_INTEL                               0x4076
-       CL_UYVY_INTEL                               0x4077
-       CL_YVYU_INTEL                               0x4078
-       CL_VYUY_INTEL                               0x4079
-
-Additions to Chapter 5 of the OpenCL 1.2 Specification:
-
-    In section 5.3.1.2 "Image Descriptor", add a sentence to the
-    end of the description of <image_width>:
-
-   "<image_width> is...  If the image is a packed YUV image, <image_width>
-    is the width of the Y data and must be even."
-
-    Add to table 5.6 "List of supported Image Channel Order Values" in
-    section 5.3.1.1 "Image Format Descriptor":
-
-   "CL_YUYV_INTEL, CL_UYVY_INTEL, CL_YVYU_INTEL, CL_VYUY_INTEL.  This format
-    can only be used if channel data type = CL_UNORM_INT8."
-
-    Add to section 5.3.1.1 "Image Format Descriptor" after the memory layout
-    descriptions for CL_RGBA image formats:
-
-   "The only supported <image_channel_data_type> for packed YUV images is
-    CL_UNORM_INT8.
-
-    The memory layout of a packed YUV image when <image_channel_order> is
-    CL_YUYV_INTEL is:
-
-        +---------+---------+---------+---------+
-        |    Y    |    U    |    Y    |    V    |   ...
-        | Pixel N | Pixel N |Pixel N+1| Pixel N |
-        +---------+---------+---------+---------+
-    Byte ->  0         1         2         3
-    Offset
-
-    The memory layout of a packed YUV image when <image_channel_order> is
-    CL_UYVY_INTEL is:
-
-        +---------+---------+---------+---------+
-        |    U    |    Y    |    V    |    Y    |   ...
-        | Pixel N | Pixel N | Pixel N |Pixel N+1|
-        +---------+---------+---------+---------+
-    Byte ->  0         1         2         3
-    Offset
-
-    The memory layout of a packed YUV image when <image_channel_order> is
-    CL_YVYU_INTEL is:
-
-        +---------+---------+---------+---------+
-        |    Y    |    V    |    Y    |    U    |   ...
-        | Pixel N | Pixel N |Pixel N+1| Pixel N |
-        +---------+---------+---------+---------+
-    Byte ->  0         1         2         3
-    Offset
-
-    The memory layout of a packed YUV image when <image_channel_order> is
-    CL_VYUY_INTEL is:
-
-        +---------+---------+---------+---------+
-        |    V    |    Y    |    U    |    Y    |   ...
-        | Pixel N | Pixel N | Pixel N |Pixel N+1|
-        +---------+---------+---------+---------+
-    Byte ->  0         1         2         3
-    Offset
-
-    Add a new Table 5.x "Additional Required Image Formats for Read-Only
-    2D Images" to section 5.3.2.1 "Minimum List of Supported Image Formats":
-
-   "--------------------------------------------------------------------
-    image_num_channels    image_channel_order    image_channel_data_type
-    ------------------    -------------------    -----------------------
-    2                     CL_YUYV_INTEL          CL_UNORM_INT8
-
-    2                     CL_UYVY_INTEL          CL_UNORM_INT8
-
-    2                     CL_YVYU_INTEL          CL_UNORM_INT8
-
-    2                     CL_VYUY_INTEL          CL_UNORM_INT8
-    --------------------------------------------------------------------"
-
-    In section 5.3.3 "Reading, Writing, and Copying Image Objects", add a
-    sentence to the end of the descriptions of <origin> and <region> under
-    clEnqueueReadImage and clEnqueueWriteImage:
-
-   "<origin> defines... If <image> is a packed YUV image, the x value given
-    by <origin>[0] indexes Y data in the image and must be even.
-
-    <region> defines... If <image> is a packed YUV image, the width value
-    given by <origin>[0] describes Y data image and must be even."
-
-    Add a sentence to the end of the descriptions of <src_origin>,
-    <dst_origin>, and <region> under clEnqueueCopyImage:
-
-   "<src_origin> defines... If <src_image> is a packed YUV image, the x
-    value given by <src_origin>[0] indexes Y data in <src_image> and must
-    be even.
-
-    <dst_origin> defines... If <dst_image> is a 2D image object, the z
-    value given by <dst_origin>[2] must be 0.  If <dst_image> is a packed
-    YUV image, the x value given by <dst_origin>[0] indexes Y data in
-    <dst_image> and must be even.
-
-    <region> defines... If <src_image> or <dst_image> is a packed YUV
-    image, the <width> value given by <region>[0] describes Y data and
-    must be even."
-
-    In section 5.3.5 "Copying between Image and Buffer Objects", add a
-    sentence to the end of the descriptions of <src_origin> and <region>
-    for clEnqueueCopyImageToBuffer:
-
-   "<src_origin> defines... If <src_image> is a packed YUV image, the x
-    value given by <origin>[0] indexes Y data in the image and must be
-    even.
-
-    <region> defines... If <src_image> is a packed YUV image, the width
-    value given by <origin>[0] describes Y data and must be even."
-
-    Add a sentence to the end of the descriptions of <dst_origin> and
-    <region> for clEnqueueCopyBufferToImage:
-
-   "<dst_origin> defines... If <dst_image> is a packed YUV image, the x
-    value given by <origin>[0] indexes Y data in the image and must be
-    even.
-
-    <region> defines... If <dst_image> is a packed YUV image, the width
-    value given by <region>[0] describes Y data and must be even."
-
-    In section 5.3.6 "Mapping Image Objects", add a sentence to the end
-    of the descriptions of <origin> and <region> for clEnqueueMapImage:
-
-   "<origin> defines... If <image> is a packed YUV image, the x value
-    given by <origin>[0] describes Y data and must be even.
-
-    <region> defines... If <image> is a packed YUV image, the width
-    value given by <region>[0] describes Y data and must be even."
-
-Additions to Chapter 6 of the OpenCL 1.2 Specification:
-
-    In section 6.12.14.1.1 "Determining the border color", add the
-    packed YUV formats to the second bullet describing the cases where
-    the border color is (0.0f, 0.0f, 0.0f, 1.0f):
-
-   "  * If image channel order is CL_R, CL_RG, CL_RGB, CL_LUMINANCE,
-        CL_YUYV_INTEL, CL_UYVY_INTEL, CL_YVYU_INTEL, or CL_VYUY_INTEL,
-        the border color is (0.0f, 0.0f, 0.0f, 1.0f)."
-
-    Add to the un-numbered table in section 6.12.14.6 "Mapping image
-    channels to color values returned by read_image and color values
-    passed to write_image to image channels":
-
-   "--------------------------------------------------------------
-                                     float4, int4 or unsigned int4
-    Channel Order                       components of channel data
-    -----------------------------    -----------------------------
-    CL_YUYV_INTEL, CL_UYVY_INTEL,                 ( V, Y, U, 1.0 )
-    CL_YVYU_INTEL, CL_VYUY_INTEL
-    --------------------------------------------------------------"
-
-Revision History
-
-    Version 1 - Initial Revision
+https://github.com/KhronosGroup/OpenCL-Docs/blob/master/extensions/cl_intel_packed_yuv.asciidoc
diff --git a/extensions/intel/cl_intel_planar_yuv.html b/extensions/intel/cl_intel_planar_yuv.html
new file mode 100644
index 0000000..fcc07f4
--- /dev/null
+++ b/extensions/intel/cl_intel_planar_yuv.html
@@ -0,0 +1,1654 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<title>cl_intel_planar_yuv</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: white; color: #222222; 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: #333333; }
+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 #dddddd; 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 #dddddd; 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 #dddddd; }
+blockquote cite { display: block; font-size: 0.8125em; color: #5e93b8; }
+blockquote cite:before { content: "\2014 \0020"; }
+blockquote cite a, blockquote cite a:visited { color: #5e93b8; }
+
+blockquote, blockquote p { line-height: 1.6; color: #333333; }
+
+/* Microformats */
+.vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; 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: white; margin-bottom: 1.25em; border: solid 1px #d8d8ce; }
+table thead, table tfoot { background: -webkit-linear-gradient(top, #add386, #90b66a); 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: white; 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: #edf2f2; }
+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: white; -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; -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 #dddddd; }
+#header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #dddddd; padding-bottom: 8px; }
+#header .details { border-bottom: 1px solid #dddddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #5e93b8; 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: #333333; }
+#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: #333333; }
+#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 #dddddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; }
+
+#toc { border-bottom: 0 solid #dddddd; 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: white; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #dddddd; 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 #dddddd; 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: white; -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 #dddddd; }
+
+#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 #dddddd; color: #5e93b8; }
+.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: white; -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: white; -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: #eeeeee; }
+.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 #666666; -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: #eeeeee; 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 #dddddd; }
+
+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: #333333; 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 #5e93b8; }
+.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: #333333; 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: #5e93b8; }
+
+.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: -webkit-linear-gradient(top, #add386, #90b66a); }
+
+tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: white; 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 white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; }
+
+.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 #dddddd; }
+
+.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: #eeeeee; }
+
+</style>
+<link rel="stylesheet" href="../katex/katex.min.css">
+<script src="../katex/katex.min.js"></script>
+<script src="../katex/contrib/auto-render.min.js"></script>
+    <!-- Use KaTeX to render math once document is loaded, see
+         https://github.com/Khan/KaTeX/tree/master/contrib/auto-render -->
+<script>
+    document.addEventListener("DOMContentLoaded", function () {
+        renderMathInElement(
+            document.body,
+            {
+                delimiters: [
+                    { left: "$$", right: "$$", display: true},
+                    { left: "\\[", right: "\\]", display: true},
+                    { left: "$", right: "$", display: false},
+                    { left: "\\(", right: "\\)", display: false}
+                ]
+            }
+        );
+    });
+</script></head>
+<body class="book">
+<div id="header">
+<h1>cl_intel_planar_yuv</h1>
+<div class="details">
+<span id="revnumber">version v3.0.8,</span>
+<span id="revdate">Wed, 30 Jun 2021 22:00:00 +0000</span>
+<br><span id="revremark">from git branch: master commit: 09130de814688ec7b463cb089986b807c628ead3</span>
+</div>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_name_strings"><a class="anchor" href="#_name_strings"></a>Name Strings</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><code>cl_intel_planar_yuv</code></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_contact"><a class="anchor" href="#_contact"></a>Contact</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Ben Ashbaugh, Intel (ben 'dot' ashbaugh 'at' intel 'dot' com)</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_contributors"><a class="anchor" href="#_contributors"></a>Contributors</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Dan Petre, Intel<br>
+Krzysztof Laskowski, Intel<br>
+Bartosz Sochacki, Intel<br>
+Ben Ashbaugh, Intel<br>
+Biju George, Intel</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_notice"><a class="anchor" href="#_notice"></a>Notice</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright (c) 2021 Intel Corporation.  All rights reserved.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_status"><a class="anchor" href="#_status"></a>Status</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Shipping</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_version"><a class="anchor" href="#_version"></a>Version</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Built On: 2021-06-29<br>
+Revision: 1.0.1</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_dependencies"><a class="anchor" href="#_dependencies"></a>Dependencies</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>OpenCL 1.2 is required.</p>
+</div>
+<div class="paragraph">
+<p>This extension is written against the OpenCL Specification Version 3.0.7.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_overview"><a class="anchor" href="#_overview"></a>Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The purpose of this extension is to provide OpenCL support for the Planar YUV (YCbCr)
+image formats. The NV12 format must be supported; support for other Planar YUV formats
+that may be defined in this extension is optional.</p>
+</div>
+<div class="paragraph">
+<p>The extension introduces two new <code>cl_mem_flags</code>:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>CL_MEM_NO_ACCESS_INTEL</code> may be used together with image formats for which
+device does not support reading from or writing to at the OpenCL kernel level, but are
+still useful in other use-cases.</p>
+</li>
+<li>
+<p><code>CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL</code> may be used to relax the memory access
+rights specified in <code>cl_mem_flags</code> at memory object creation time and allow to access
+and modify the contents of the underlying data storage in an unrestricted way e.g. by
+creating another memory object from that memory object or using dedicated device
+mechanisms.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_new_api_enums"><a class="anchor" href="#_new_api_enums"></a>New API Enums</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Accepted as <code>cl_mem_flags</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>#define CL_MEM_NO_ACCESS_INTEL                      (1 &lt;&lt; 24)
+#define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL      (1 &lt;&lt; 25)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Accepted as the <code>image_channel_order</code> of <code>cl_image_format</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>#define CL_NV12_INTEL                               0x410E</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Accepted value for the <em>param_name</em> parameter to <strong>clGetDeviceInfo</strong>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>#define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL        0x417E
+#define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL       0x417F</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_modifications_to_the_opencl_api_specification"><a class="anchor" href="#_modifications_to_the_opencl_api_specification"></a>Modifications to the OpenCL API Specification</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1">(Add to Table 5 - OpenCL Device Queries in Section 4.2 - Querying Devices) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 5. List of supported param_names by clGetDeviceInfo</caption>
+<colgroup>
+<col style="width: 30%;">
+<col style="width: 20%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Device Info</th>
+<th class="tableblock halign-left valign-top">Return Type</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Max width of a Planar YUV image in pixels.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>size_t</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Max height of a Planar YUV image in pixels.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Add to Table 12 - List of supported memory flag values in Section 5.2.1 - Creating Buffer Objects) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 12. List of supported memory flag values</caption>
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Memory Flags</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_MEM_NO_ACCESS_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This flag specifies that the device will not read or write to the memory
+      object.</p>
+<p class="tableblock">      <code>CL_MEM_NO_ACCESS_INTEL</code> and <code>CL_MEM_READ_WRITE</code>, <code>CL_MEM_WRITE_ONLY</code>, or
+      <code>CL_MEM_READ_ONLY</code> are mutually exclusive</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">This flag indicates that the host and device access flags used together
+      with this flag do not strictly prohibit reading or modifying the contents
+      of this memory object. Memory objects created from this memory object may
+      re-specify the host and device access capabilities of the created memory
+      object with new access capabilities, and any mechanisms provided by the
+      implementation which explicitly support certain operations on memory
+      objects of this type are allowed to access this memory object without any
+      restrictions.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Extend the argument description for clCreateImage in Section 5.3.1 - Creating Image Objects) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p><em>flags</em> is a bit-field that is used to specify allocation and usage
+information about the image memory object being created and is described in
+the supported memory flag values table. [&#8230;&#8203;] If the <code>image_channel_order</code> of
+<em>image_format</em> is a Planar YUV format then <em>flags</em> must include
+<code>CL_MEM_HOST_NO_ACCESS</code>. If <code>CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL</code> was
+specified in the memory flags associated with <em>mem_object</em> then <em>flags</em> can
+specify any host and device access capabilities regardless of the memory flags
+associated with <em>mem_object</em>.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Modify the error code descriptions for clCreateImage in Section 5.3.1 - Creating Image Objects) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p><strong>clCreateImage</strong> returns a valid non-zero image object created and <em>errcode_ret</em> is
+set to <code>CL_SUCCESS</code> if the image object is created successfully. Otherwise, it returns
+a <code>NULL</code> value with one of the following error values returned in <em>errcode_ret</em>:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>&#8230;&#8203;</p>
+</li>
+<li>
+<p><code>CL_INVALID_VALUE</code> if the <code>image_channel_order</code> of <em>image_format</em> is a Planar
+YUV format and <em>flags</em> does not include <code>CL_MEM_HOST_NO_ACCESS</code>.</p>
+</li>
+<li>
+<p><code>CL_INVALID_VALUE</code> if an image is being created from another memory object
+(buffer or image) under one of the following circumstances: 1) <em>mem_object</em>
+was created with <code>CL_MEM_WRITE_ONLY</code> and <em>flags</em> specifies <code>CL_MEM_READ_WRITE</code>
+or <code>CL_MEM_READ_ONLY</code>, 2) <em>mem_object</em> was created with <code>CL_MEM_READ_ONLY</code> and
+<em>flags</em> specifies <code>CL_MEM_READ_WRITE</code> or <code>CL_MEM_WRITE_ONLY</code>, 3) <em>mem_object</em>
+was created with <code>CL_MEM_NO_ACCESS_INTEL</code> and <em>flags</em> specifies
+<code>CL_MEM_READ_ONLY</code>, <code>CL_MEM_WRITE_ONLY</code> or <code>CL_MEM_READ_WRITE</code>, 4) <em>flags</em>
+specifies <code>CL_MEM_USE_HOST_PTR</code> or <code>CL_MEM_ALLOC_HOST_PTR</code> or
+<code>CL_MEM_COPY_HOST_PTR</code>. However, restrictions 1), 2) and 3) described above do
+not apply if <em>mem_object</em> was created with
+<code>CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL</code>.</p>
+</li>
+<li>
+<p><code>CL_INVALID_VALUE</code> if an image is being created from another memory object
+(buffer or image) and <em>mem_object</em> was created with <code>CL_MEM_HOST_WRITE_ONLY</code>
+and <em>flags</em> specifies <code>CL_MEM_HOST_READ_ONLY</code>, or if <em>mem_object</em> was created
+with <code>CL_MEM_HOST_READ_ONLY</code> and <em>flags</em> specifies <code>CL_MEM_HOST_WRITE_ONLY</code>,
+or if <em>mem_object</em> was created with <code>CL_MEM_HOST_NO_ACCESS</code> and flags
+specifies <code>CL_MEM_HOST_READ_ONLY</code> or <code>CL_MEM_HOST_WRITE_ONLY</code>. However, these
+restrictions do not apply if <em>mem_object</em> was created with
+<code>CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL</code>.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Add to Table 15 - Required <em>host_ptr</em> buffer sizes for images in Section 5.3.1 - Creating Image Objects) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 15. Required <em>host_ptr</em> buffer sizes for images</caption>
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Image Type</th>
+<th class="tableblock halign-left valign-top">Size of buffer that <em>host_ptr</em> points to</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_MEM_OBJECT_IMAGE2D</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;= image_row_pitch * image_height + image_row_pitch * image_height / 2,
+      for images with <code>image_channel_order</code> equal to <code>CL_NV12_INTEL</code>.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Add to the description of creation of an image object from another image object in Section 5.3.1.2 - Image Descriptor) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Creating a 2D image from a Planar YUV image object allows creation of a new
+image object that shares the Planar YUV image object&#8217;s data store but
+represents only the specified plane. Restrictions are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>All the values specified in <em>image_desc</em> except for <em>mem_object</em> must match
+the image descriptor information associated with <em>mem_object</em>, with exception
+where <em>mem_object</em> is a Planar YUV image object then <em>image_width</em> and
+<em>image_height</em> are ignored and derived from the <em>mem_object</em> and <em>image_depth</em>
+specifies the index of the target plane the image will be created against and
+must be one of the following:</p>
+<table class="tableblock frame-all grid-all" style="width: 75%;">
+<colgroup>
+<col style="width: 40%;">
+<col style="width: 20%;">
+<col style="width: 40%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><em>image_channel_order</em> of <em>mem_object</em></th>
+<th class="tableblock halign-left valign-top">Plane</th>
+<th class="tableblock halign-left valign-top"><em>image_depth</em> specified in <em>image_desc</em></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_NV12_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_NV12_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">UV</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The derived values of image_width and image_height can be later queried using
+clGetImageInfo.</p>
+</div>
+</li>
+<li>
+<p>The channel data type specified in <em>image_format</em> must match the channel data
+type associated with <em>mem_object</em> with exception to the following list of
+supported combinations:</p>
+<table class="tableblock frame-all grid-all" style="width: 75%;">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><em>image_channel_order</em> of <em>mem_object</em></th>
+<th class="tableblock halign-left valign-top"><em>image_channel_data_type</em> specified in <em>image_format</em></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_NV12_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UNORM_INT8</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_NV12_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UNSIGNED_INT8</code></p></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li>
+<p>If <em>mem_object</em> is a Planar YUV image object the channel order specified in
+image format must be one of the following:</p>
+<table class="tableblock frame-all grid-all" style="width: 75%;">
+<colgroup>
+<col style="width: 37.5%;">
+<col style="width: 25%;">
+<col style="width: 12.5%;">
+<col style="width: 25%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top"><em>image_channel_order</em> specified in <em>image_format</em></th>
+<th class="tableblock halign-left valign-top"><em>image_channel_order</em> of <em>mem_object</em></th>
+<th class="tableblock halign-left valign-top">Plane</th>
+<th class="tableblock halign-left valign-top">Channel Mappings</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_R</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_NV12_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">R = Y</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_RG</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_NV12_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">UV</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">R = U, G = V</p></td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Concurrent reading from or writing to both a Planar YUV image object and
+an image object created from the Planar YUV image object is undefined.</p>
+</div>
+<div class="paragraph">
+<p>Reading from or writing to an image created from a Planar YUV image and then
+reading from or writing to the Planar YUV image in a kernel even if appropriate
+synchronization operations (such as a barrier) are performed between the reads
+or writes is undefined. Similarly, reading from and writing to the Planar YUV
+image and then reading from or writing to the image created from the Planar YUV
+image with appropriate synchronization between the reads or writes is undefined.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Add to Table 16 - List of supported Image Channel Order Values in Section 5.3.1 - Creating Image Objects) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 16. List of supported Image Channel Order Values</caption>
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Image Channel Order</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_NV12_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A Planar YUV image format with two planes.
+    There are three channels in a <code>CL_NV12_INTEL</code> image.
+    For a <code>CL_NV12_INTEL</code> image, the image element size refers to an image
+    element in the Y plane.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Extend the descriptions in Section 5.3.1.2 - Image Descriptor) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p><code>image_width</code> is the width of the image in pixels. [&#8230;&#8203;] For a <code>CL_NV12_INTEL</code>
+image, the image width must be a multiple of 4 and less than or equal to
+<code>CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL</code>.</p>
+</li>
+<li>
+<p><code>image_height</code> is the height of the image in pixels. [&#8230;&#8203;] For a
+<code>CL_NV12_INTEL</code> image, the image height must be a multiple of 4 and less than or
+equal to <code>CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL</code>.</p>
+</li>
+<li>
+<p><code>image_depth</code> is the depth of the image in pixels. [&#8230;&#8203;] For a <code>CL_NV12_INTEL</code>
+image, the image depth must be 1.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Add Section 5.3.1.X - Memory Layout for Planar YUV Images) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>In Planar YUV formats the Y, U and V components can all be stored as separate
+planes or the U and V components can be stored combined as one plane. There are
+various flavors of Planar YUV formats, differing in the number of planes, order,
+layout and the sub-sampling methods used for the U and V components.</p>
+</div>
+<div class="paragraph">
+<p>The <code>CL_NV12_INTEL</code> image format consists of two planes, Y (luma) plane and an
+interleaved UV (chroma) plane:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>          &lt;----    WIDTH   ----&gt;
+          +------------------------+ ^
+          |YYYYYYYYYYYYYYYYYYYY^^^^| |
+          |YYYYYYYYYYYYYYYYYYYY^^^^| H
+          |YYYYYYYYYYYYYYYYYYYY^^^^| E
+          |YYYYYYYYYYYYYYYYYYYY^^^^| I  Luma plane (Y)
+          |YYYYYYYYYYYYYYYYYYYY^^^^| G
+          |YYYYYYYYYYYYYYYYYYYY^^^^| H
+          |YYYYYYYYYYYYYYYYYYYY^^^^| T
+          |YYYYYYYYYYYYYYYYYYYY^^^^| |
+          +------------------------+ v
+          |UVUVUVUVUVUVUVUVUVUV^^^^|
+          |UVUVUVUVUVUVUVUVUVUV^^^^|    Chroma plane (UV)
+          |UVUVUVUVUVUVUVUVUVUV^^^^|
+          |UVUVUVUVUVUVUVUVUVUV^^^^|
+          +------------------------+
+          &lt;----    ROW PITCH    ---&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The luma plane contains 8 bit Y samples in case of the <code>CL_NV12_INTEL</code> format,
+one for each image element:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>          +-----+-----+-----+-----+--
+          | Y00 | Y01 | Y02 | Y03 |   ...
+          +-----+-----+-----+-----+--
+          | Y10 | Y11 | Y12 | Y13 |   ...
+          +-----+-----+-----+-----+--
+          | Y20 | Y21 | Y22 | Y23 |   ...
+          +-----+-----+-----+-----+--
+          | ... | ... | ... | ... |
+Sample -&gt;    0     1     2     3
+Offset</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The chroma plane contains interleaved 8 bit UV 2x2 samples in case of the
+<code>CL_NV12_INTEL</code> format. The chroma components are sampled only once for every
+other image element and for every other row of image elements:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>          +-----+-----+-----+-----+--
+          | U00 | V00 | U02 | V02 |   ...
+          +-----+-----+-----+-----+--
+          | U20 | V20 | U22 | V22 |   ...
+          +-----+-----+-----+-----+--
+          | ... | ... | ... | ... |
+Sample -&gt;    0     1     2     3
+Offset</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Using the above notation we can represent image elements like this:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>          +-----+-----+-----+-----+--
+          | P00 | P01 | P02 | P03 |   ...
+          +-----+-----+-----+-----+--
+          | P10 | P11 | P12 | P13 |   ...
+          +-----+-----+-----+-----+--
+          | P20 | P21 | P22 | P23 |   ...
+          +-----+-----+-----+-----+--
+          | ... | ... | ... | ... |</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>where:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre>    P00 = Y00U00V00     P01 = Y01U00V00
+    P10 = Y10U00V00     P11 = Y11U00V00
+    ...
+    P20 = Y20U20V20     P21 = Y21U20V20
+    ...
+    P30 = Y30U20V20     P31 = Y31U20V20</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>etc.</p>
+</div>
+<div class="paragraph">
+<p>The Y (luma) plane is followed immediately by the UV (chroma) plane.
+Both the Y and the UV planes have the same <em>image_row_pitch</em>.
+The Y plane height is <em>image_height</em>.
+The UV plane height is (<em>image_height</em> / 2).
+The Y plane width is <em>image_width</em>.
+The UV plane width is (<em>image_width</em> / 2).</p>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Extend the description of <em>flags</em> in Section 5.3.2 - Querying List of Supported Image Formats) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p><em>flags</em> is a bit-field that is used to specify information about the image
+formats being queried [&#8230;&#8203;]. To get a list of images that cannot be read from
+nor written to by a kernel, flags must be set to <code>CL_MEM_NO_ACCESS_INTEL</code>.</p>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Add a table to Section 5.3.2.1 - Minimum List of Supported Image Formats) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>For 2D image objects, the mandated minimum list of image formats that are not
+required to be read from nor written to by a kernel and that must be supported
+by all devices that support the <code>c_intel_planar_yuv</code> extension is:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 34%;">
+<col style="width: 33%;">
+<col style="width: 33%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">num_channels</th>
+<th class="tableblock halign-left valign-top">channel_order</th>
+<th class="tableblock halign-left valign-top">channel_data_type</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_NV12_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_UNORM_INT8</code></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_modifications_to_the_opencl_c_specification"><a class="anchor" href="#_modifications_to_the_opencl_c_specification"></a>Modifications to the OpenCL C Specification</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1">(Add Planar YUV formats to Section 6.15.15.1.1 - Determining the border color or value) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="ulist">
+<ul>
+<li>
+<p>If image channel order is <code>CL_NV12_INTEL</code> the border color is value is undefined.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Add to the un-numbered table in Section 6.15.15.7 - Mapping image channels to color values returned by read_image and color values passed to write_image to image channels) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Channel Order</strong></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>float4</code>, <code>int4</code> or <code>uint4</code> <strong>components of channel data</strong></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CL_NV12_INTEL</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">(V, Y, U, 1.0)</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">(Add to the beginning of Section 6.15.15.2 Built-in Image Read Functions) </dt>
+<dd>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Note that reading from a <code>CL_NV12_INTEL</code> image object is only supported by <strong>read_imagef</strong>
+functions that take integer coordinates.</p>
+</div>
+</div>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_sample_code"><a class="anchor" href="#_sample_code"></a>Sample Code</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_sample_host_code"><a class="anchor" href="#_sample_host_code"></a>Sample Host Code</h3>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>cl_image_format image_format;
+image_format.image_channel_order     = CL_NV12_INTEL;
+image_format.image_channel_data_type = CL_UNORM_INT8;
+
+cl_image_desc image_desc;
+image_desc.image_type                = CL_MEM_OBJECT_IMAGE2D;
+image_desc.image_width               = width;
+image_desc.image_height              = height;
+image_desc.image_array_size          = 0;
+image_desc.image_row_pitch           = 0;
+image_desc.image_slice_pitch         = 0;
+image_desc.num_mip_levels            = 0;
+image_desc.num_samples               = 0;
+image_desc.mem_object                = NULL;
+
+// create a CL_NV12_IMAGE
+cl_mem nv12Img = clCreateImage(context,
+                               CL_MEM_READ_ONLY | CL_MEM_HOST_NO_ACCESS |
+                               CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL,
+                               image_format, image_desc,
+                               host_ptr, errcode_ret);
+
+// image_width &amp; image_height are ignored for plane extraction
+image_desc.image_width               = 0;
+image_desc.image_height              = 0;
+
+// set mem_object to the full NV12 image
+image_desc.mem_object                = nv12Img;
+
+// get access to the Y plane (CL_R)
+image_desc.image_depth               = 0;
+
+// set proper image_format for the Y plane
+image_format.image_channel_order     = CL_R;
+image_format.image_channel_data_type = CL_UNORM_INT8;
+
+cl_mem nv12YplaneImg = clCreateImage(context, CL_MEM_READ_WRITE,
+                                     image_format, image_desc,
+                                     NULL, errcode_ret);
+
+// get access to the UV plane (CL_RG)
+image_desc.image_depth               = 1;
+
+// set proper image_format for the UV plane
+image_format.image_channel_order     = CL_RG;
+image_format.image_channel_data_type = CL_UNORM_INT8;
+
+cl_mem nv12UVplaneImg = clCreateImage(context, CL_MEM_READ_WRITE,
+                                      image_format, image_desc,
+                                      NULL, errcode_ret);
+// NOT SUPPORTED: transfer the whole NV12 image to the device
+// status = clEnqueueWriteImage(queue, nv12Img, true, origin, region,
+//                              row_pitch, slice_pitch,
+//                              ptr, 0, NULL, NULL);
+
+// write Y plane of NV12 image
+status = clEnqueueWriteImage(queue, nv12YplaneImg, true,
+                             origin, region, row_pitch, slice_pitch,
+                             ptr, 0, NULL, NULL);
+
+// write UV plane of NV12 image
+status = clEnqueueWriteImage(queue, nv12YplaneImg, true,
+                             origin, region, row_pitch, slice_pitch,
+                             ptr + uvPlaneOffset, 0, NULL, NULL);
+
+// NOT SUPPORTED: read the whole NV12 image back
+// status = clEnqueueReadImage(queue, nv12Img, true,
+//                             origin, region, row_pitch, slice_pitch,
+//                             ptr, 0, NULL, NULL);
+
+// read Y plane of NV12 image
+status = clEnqueueReadImage(queue, nv12UVplaneImg, true,
+                            origin, region, row_pitch, slice_pitch,
+                            ptr, 0, NULL, NULL);
+
+// read UV plane of NV12 image
+status = clEnqueueReadImage(queue, nv12UVplaneImg, true,
+                            origin, region, row_pitch, slice_pitch,
+                            ptr + uvPlaneOffset, 0, NULL, NULL);</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_sample_kernel_code"><a class="anchor" href="#_sample_kernel_code"></a>Sample Kernel Code</h3>
+<div class="listingblock">
+<div class="content">
+<pre class="highlight"><code>// do something with a whole NV12 image
+kernel void DoSomethingWithNV12
+(
+    ...
+    read_write image2d_t nv12Img,
+    ...
+)
+{
+    ...
+    // sample the CL_NV12_INTEL image - supported if CL_NV12_INTEL format is
+    // available with CL_MEM_READ_ONLY or CL_MEM_READ_WRITE access flags
+    // based on clGetSupportedImageFormats query.
+    float4 p = read_imagef(nv12Img, sampler, coord);
+    ...
+    // write to the CL_NV12_INTEL image - supported if CL_NV12_INTEL format is
+    // available with CL_MEM_WRITE_ONLY or CL_MEM_READ_WRITE access flags
+    // based on clGetSupportedImageFormats query.
+    write_imagef(nv12Img, coord, p);
+    ...
+}
+
+// do something with planes of an NV12 image
+kernel void DoSomethingWithNV12Planes
+(
+    ...
+    read_write image2d_t nv12ImgYPlane,
+    read_write image2d_t nv12ImgUVPlane,
+    ...
+)
+{
+    ...
+    // sample the Y &amp; UV planes
+    float4 py = read_imagef(nv12ImgYPlane, sampler, coord);
+    float4 puv = read_imagef(nv12ImgUVPlane, sampler, coord);
+    ...
+    // write to Y &amp; UV planes
+    write_imagef(nv12ImgYPlane, coord, py);
+    write_imagef(nv12ImgUVPlane, coord, puv);
+    ...
+}</code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_issues"><a class="anchor" href="#_issues"></a>Issues</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>None.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_revision_history"><a class="anchor" href="#_revision_history"></a>Revision History</h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-rows stretch">
+<colgroup>
+<col style="width: 4.7619%;">
+<col style="width: 14.2857%;">
+<col style="width: 14.2857%;">
+<col style="width: 66.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Rev</th>
+<th class="tableblock halign-left valign-top">Date</th>
+<th class="tableblock halign-left valign-top">Author</th>
+<th class="tableblock halign-left valign-top">Changes</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2016-11-22</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Krzysztof Laskowski</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Initial Revision</strong></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2021-06-11</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ben Ashbaugh</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Converted to asciidoc, added HOST_NO_ACCESS error description, corrected border color value.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Version v3.0.8<br>
+Last updated 2021-06-29 12:20:08 -0700
+</div>
+</div>
+
+<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_HTMLorMML"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/extensions/intel/cl_intel_planar_yuv.txt b/extensions/intel/cl_intel_planar_yuv.txt
index 9108d34..636dbea 100644
--- a/extensions/intel/cl_intel_planar_yuv.txt
+++ b/extensions/intel/cl_intel_planar_yuv.txt
@@ -1,545 +1,11 @@
-Name String
+The cl_intel_planar_yuv extension is no longer authored in plain text.
 
-    cl_intel_planar_yuv
+Please refer to the HTML extension specification instead,
+which may be found here:
 
-Contributors
+https://www.khronos.org/registry/OpenCL/extensions/intel/cl_intel_planar_yuv.html
 
-    Dan Petre, Intel
-    Krzysztof Laskowski, Intel
-    Bartosz Sochacki, Intel
-    Ben Ashbaugh, Intel
-    Biju George, Intel
+The asciidoc source for this extension specification may
+be found here:
 
-Contact
-   
-    Krzysztof Laskowski, Intel (krzysztof.laskowski 'at' intel.com)
-
-Version
-
-    Version 1, November 22, 2016
-
-Number
-
-    OpenCL Extension #49
-
-Status
-
-    Final Draft
-
-Extension Type
-
-    OpenCL platform extension
-
-Dependencies
-
-    OpenCL 1.2 is required. The concept of using clCreateImage to create a 2D image from
-    another 2D image object is based on OpenCL 2.0. This extension is written against
-    revision 29 of the OpenCL 2.0 specification and revision 30 of the OpenCL C 2.0
-    specification.
-
-Overview
-
-    The purpose of this extension is to provide OpenCL support for the Planar YUV (YCbCr)
-    image formats. NV12 format must be supported; support for other Planar YUV formats
-    that may be defined in this extension is optional.
-
-    The extension introduces two new cl_mem_flags:
-    - CL_MEM_NO_ACCESS_INTEL which should be used together with image formats for which
-      device does not support reading from or writing to at OpenCL kernels level, but are
-      still useful in other use cases.
-    - CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL which may be used to relax the memory access
-      rights specified in cl_mem_flags at memory object creation time and allow to access
-      and modify the contents of the underlying data storage in unrestricted way e.g. by
-      creating another memory object from that memory object or using dedicated device
-      mechanisms.
-
-New Procedures and Functions
-
-    None
-
-New Tokens
-
-    Accepted as <cl_mem_flags>:
-
-    CL_MEM_NO_ACCESS_INTEL                                 (1 << 24)
-    CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL                 (1 << 25)
-
-Accepted as <image_channel_order> of <cl_image_format>:
-
-    CL_NV12_INTEL                                          0x410E
-
-Accepted as arguments passed to clGetDeviceInfo:
-
-    CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL                   0x417E
-    CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL                  0x417F
-
-New Types
-
-    None    
-
-Additions to Chapter 4 of the OpenCL 2.0 Specification:
-
-    In section 4.2 "Querying Devices" modify the description of function clGetDeviceInfo:
-
-    Table 4.3 must be extended to include the following enumeration constants:
-
-+---------------------------------------+-------------+---------------------------------+
-| cl_device_info                        | Return Type | Description                     |
-+---------------------------------------+-------------+---------------------------------+
-| CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL  | size_t      | Max width of Planar YUV image   |
-|                                       |             | in pixels.                      |
-+---------------------------------------+-------------+---------------------------------+
-| CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL | size_t      | Max height of Planar YUV image  |
-|                                       |             | in pixels.                      |
-+---------------------------------------+-------------+---------------------------------+
-
-Additions to Chapter 5 of the OpenCL 2.0 Specification:
-
-    In section 5.2.1 "Creating Buffer Objects", extend table 5.3 "List of supported
-    <cl_mem_flags> values" with:
-
-+-------------------------+-------------------------------------------------------------+
-|      cl_mem_flags       |                       Description                           |
-+-------------------------+-------------------------------------------------------------+
-|                         | This flag specifies that the device will not read or write  |
-| CL_MEM_NO_ACCESS_INTEL  | to the memory object.                                       |
-|                         | CL_MEM_READ_WRITE or                                        |
-|                         | CL_MEM_WRITE_ONLY or                                        |
-|                         | CL_MEM_READ_ONLY and                                        |
-|                         | CL_MEM_NO_ACCESS_INTEL                                      |
-|                         | are mutually exclusive.                                     |
-+-------------------------+-------------------------------------------------------------+
-|                         | This flag indicates that the host and device access flags   |
-| CL_MEM_ACCESS_FLAGS_    | used together with this flag do not strictly prohibit       |
-| UNRESTRICTED_INTEL      | reading or modifying the contents of this memory object.    |
-|                         | Memory objects created from this memory object may          |
-|                         | re-specify the host and device access capabilities of the   |
-|                         | created memory object with new access capabilities, and any |
-|                         | mechanisms provided by the implementation which explicitly  |
-|                         | support certain operations on memory objects of this type   |
-|                         | are allowed to access this memory object without any        |
-|                         | restrictions.                                               |
-+-------------------------+-------------------------------------------------------------+
-
-    In section 5.3.1 "Creating Image Objects", in the table that lists the image types
-    change the CL_MEM_OBJECT_2D entry description to:
-
-+-----------------------+-------------------------------------------+
-|      Image Type       | Size of buffer that host_ptr points to    |
-+-----------------------+-------------------------------------------+
-|                       | >= image_row_pitch * image_height +       |
-| CL_MEM_OBJECT_IMAGE2D |    image_row_pitch * image_height / 2     |
-|                       |    for images with CL_NV12_INTEL          |
-|                       |    image_channel_order.                   |
-+-----------------------+-------------------------------------------+
-
-    Extend the description of clCreateImage with:
-
-    "<flags> is a bit-field [...].If <image_channel_order> of <image_format> is a Planar
-     YUV format then <flags> must include CL_MEM_HOST_NO_ACCESS.
-     [...]
-     If CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL is specified in the memory access
-     qualifier values associated with <mem_object> then <flags> can specify any host and
-     device access capabilities regardless of the memory access qualifier values
-     associated with <mem_object>."
-
-    "A 2D image can be created from another 2D image object [...].
-     Creating a 2D image from a Planar YUV image object allows users to create a new
-     image object that shares the Planar YUV image object's data store but represents
-     only the specified plane. The restrictions are:
-     - all the values specified in image_desc except for mem_object must match the image
-       descriptor information associated with mem_object, with exception where mem_object
-       is a Planar YUV image object then image_width and image_height are ignored and
-       derived from the mem_object and image_depth specifies the index of the target
-       plane the image will be created against and must be one of the following:
-
-     +---------------------+-------+-----------------------+
-     | image_channel_order | plane | image_depth specified |
-     | of mem_object       |       | in image_desc         |
-     +---------------------+-------+-----------------------+
-     | CL_NV12_INTEL       | Y     | 0                     |
-     | CL_NV12_INTEL       | UV    | 1                     |
-     +----------------------+-------+----------------------+
-
-     The derived values of image_width and image_height can be later queried using
-     clGetImageInfo.
-     - the channel data type specified in image_format must match the channel data type
-       associated with mem_object with exception to the following list of supported
-       combinations:
-
-     +---------------------+---------------------------+
-     | image_channel_order | image_channel_data_type   |
-     | of mem_object       | specified in image_format |
-     +---------------------+---------------------------+
-     | CL_NV12_INTEL       | CL_UNORM_INT8             |
-     | CL_NV12_INTEL       | CL_UNSIGNED_INT8          |
-     +---------------------+---------------------------+
-
-     - the channel order specified in image_format must match the channel order
-       associated with mem_object with exception to the following list of supported
-       combinations:
-
-     +---------------------------+-------------------------+
-     | image_channel_order       | image_channel_order of  |
-     | specified in image_format | mem_object              |
-     +---------------------------+-------------------------+
-     | CL_sBGRA                  | CL_BGRA                 |
-     | CL_BGRA                   | CL_sBGRA                |
-     | CL_sRGBA                  | CL_RGBA                 |
-     | CL_RGBA                   | CL_sRGBA                |
-     | CL_sRGB                   | CL_RGB                  |
-     | CL_RGB                    | CL_sRGB                 |
-     | CL_sRGBx                  | CL_RGBx                 |
-     | CL_RGBx                   | CL_sRGBx                |
-     | CL_DEPTH                  | CL_R                    |
-     +---------------------------+-------------------------+
-
-     If mem_object is a Planar YUV image object the channel order specified in image
-     format must be one of the following:
-
-     +---------------------------+-------------------------+-------+------------------+
-     | image_channel_order       | image_channel_order of  | plane | channel mappings |
-     | specified in image_format | mem_object              |       |                  |
-     +---------------------------+-------------------------+-------+------------------+
-     | CL_R                      | CL_NV12_INTEL           | Y     | R = Y            |
-     | CL_RG                     | CL_NV12_INTEL           | UV    | R = U, G = V     |
-     +---------------------------+-------------------------+-------+------------------+
-
-     NOTE:
-     Concurrent reading from or writing to both a Planar YUV image object and an image
-     object created from the Planar YUV image object is undefined.
-
-     Reading from or writing to an image created from a Planar YUV image and then reading
-     from or writing to the Planar YUV image in a kernel even if appropriate
-     synchronization operations (such as a barrier) are performed between the reads or
-     writes is undefined. Similarly, reading from and writing to the Planar YUV image and
-     then reading from or writing to the image created from the Planar YUV image with
-     appropriate synchronization between the reads or writes is undefined."
-
-    Modify the section about the returned error values:
-
-    "clCreateImage returns a valid non-zero image object created and <errcode_ret> is
-     set to CL_SUCCESS if the image object is created successfully. Otherwise, it returns
-     a NULL value with one of the following error values returned in <errcode_ret>:
-     [...]
-     * CL_INVALID_VALUE if an image is being created from another memory object (buffer
-       or image) under one of the following circumstances: 1) <mem_object> was created
-       with CL_MEM_WRITE_ONLY and <flags> specifies CL_MEM_READ_WRITE or
-       CL_MEM_READ_ONLY, 2) <mem_object> was created with CL_MEM_READ_ONLY and <flags>
-       specifies CL_MEM_READ_WRITE or CL_MEM_WRITE_ONLY, 3) <mem_object> was created with
-       CL_MEM_NO_ACCESS_INTEL and <flags> specifies CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY
-       or CL_MEM_READ_WRITE, 4) <flags> specifies CL_MEM_USE_HOST_PTR or
-       CL_MEM_ALLOC_HOST_PTR or CL_MEM_COPY_HOST_PTR. However, restrictions 1), 2) and 3)
-       described above do not apply if <mem_object> was created with <flag>
-       CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL.
-     * CL_INVALID_VALUE if an image is being created from another memory object (buffer
-       or image) and <mem_object> was created with CL_MEM_HOST_WRITE_ONLY and <flags>
-       specifies CL_MEM_HOST_READ_ONLY, or if <mem_object> was created with
-       CL_MEM_HOST_READ_ONLY and <flags> specifies CL_MEM_HOST_WRITE_ONLY, or if
-       <mem_object> was created with CL_MEM_HOST_NO_ACCESS and flags specifies
-       CL_MEM_HOST_READ_ONLY or CL_MEM_HOST_WRITE_ONLY. However, these restrictions do
-       not apply if <mem_object> was created with <flag>
-       CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL."
-
-    Modify the section about the memory layout of a 2D image:
-
-    "For a 2D RGB image, the image data specified by <host_ptr> is stored as a linear
-     sequence of adjacent scanlines. Each scanline is a linear sequence of image
-     elements. For 2D Planar YUV images see section 5.3.1.3 on the "Memory Layout for
-     Planar YUV Images"."
-
-    Extend table 5.6 "List of supported Image Channel Order Values" with:
-
-     +------------------------------------------------------------------+
-     | Enum values that can be specified in channel_order               |
-     +------------------------------------------------------------------+
-     | CL_NV12_INTEL. Images created with this <image_channel_order>    |
-     | value are Planar YUV images. CL_NV12_INTEL <image_channel_order> |
-     | can only be used if <image_channel_data_type> is CL_UNORM_INT8   |
-     | and <image_type> is CL_MEM_OBJECT_IMAGE2D. Number of channels in |
-     | a CL_NV12_INTEL image equals 3 and the element size refers to    |
-     | the Y plane and equals 1.                                        |
-     +------------------------------------------------------------------+
-
-    In section 5.3.1.2 "Image Descriptor", extend the description of <image_width>,
-    <image_height> and <image_depth>:
-
-    "<image_width> is the width of the image in pixels. [...] If this is a CL_NV12_INTEL
-     image, <image_width> must be a multiple of 4 and less than or equal to
-     CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL.
-
-     <image_height> is the height of the image in pixels. [...] If this is a
-     CL_NV12_INTEL image, <image_height> must be a multiple of 4 and less than or equal
-     to CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL.
-
-     <image_depth> is the depth of the image in pixels. [...] If this is a CL_NV12_INTEL
-     image, <image_depth> must be 1.
-
-    Add section 5.3.1.3 "Memory Layout for Planar YUV Images":
-
-    "In Planar YUV formats the Y, U and V components can all be stored as separate planes
-     or the U and V components can be stored combined as one plane. There are various
-     flavors of Planar YUV formats, differing in the number of planes, order, layout and
-     the subsampling methods used for the U and V components. See below for explanation
-     of the memory layout of CL_NV12_INTEL format. 
-
-     CL_NV12_INTEL image is laid out in memory in the form of two planes, Y (luma) plane
-     and an interleaved UV (chroma) plane:
-
-        <----    WIDTH   ---->
-        +------------------------+ ^
-        |YYYYYYYYYYYYYYYYYYYY^^^^| |
-        |YYYYYYYYYYYYYYYYYYYY^^^^| H
-        |YYYYYYYYYYYYYYYYYYYY^^^^| E
-        |YYYYYYYYYYYYYYYYYYYY^^^^| I  Luma plane (Y)
-        |YYYYYYYYYYYYYYYYYYYY^^^^| G
-        |YYYYYYYYYYYYYYYYYYYY^^^^| H
-        |YYYYYYYYYYYYYYYYYYYY^^^^| T
-        |YYYYYYYYYYYYYYYYYYYY^^^^| |
-        +------------------------+ v
-        |UVUVUVUVUVUVUVUVUVUV^^^^|
-        |UVUVUVUVUVUVUVUVUVUV^^^^|    Chroma plane (UV)
-        |UVUVUVUVUVUVUVUVUVUV^^^^|
-        |UVUVUVUVUVUVUVUVUVUV^^^^|
-        +------------------------+
-        <----    ROW PITCH    --->
-
-     The luma plane contains 8 bit Y samples in case of CL_NV12_INTEL format, one for
-     each pixel:
-
-               +-----+-----+-----+-----+--
-               | Y00 | Y01 | Y02 | Y03 |   ...
-               +-----+-----+-----+-----+--
-               | Y10 | Y11 | Y12 | Y13 |   ...
-               +-----+-----+-----+-----+--
-               | Y20 | Y21 | Y22 | Y23 |   ...
-               +-----+-----+-----+-----+--
-               | ... | ... | ... | ... |
-     Sample ->    0     1     2     3
-     Offset
-
-     The chroma plane contains interleaved 8 bit UV 2x2 samples in case of CL_NV12_INTEL
-     format. The chroma components are sampled only once for every other pixel and for
-     every other row of pixels:
-
-               +-----+-----+-----+-----+--
-               | U00 | V00 | U02 | V02 |   ...
-               +-----+-----+-----+-----+--
-               | U20 | V20 | U22 | V22 |   ...
-               +-----+-----+-----+-----+--
-               | ... | ... | ... | ... |
-     Sample ->    0     1     2     3
-     Offset
-
-     Using the above notation we can represent pixels like this:
-
-               +-----+-----+-----+-----+--
-               | P00 | P01 | P02 | P03 |   ...
-               +-----+-----+-----+-----+--
-               | P10 | P11 | P12 | P13 |   ...
-               +-----+-----+-----+-----+--
-               | P20 | P21 | P22 | P23 |   ...
-               +-----+-----+-----+-----+--
-               | ... | ... | ... | ... |
-
-     where:
-         P00 = Y00U00V00     P01 = Y01U00V00
-         P10 = Y10U00V00     P11 = Y11U00V00
-         ...
-         P20 = Y20U20V20     P21 = Y21U20V20
-         ...
-         P30 = Y30U20V20     P31 = Y31U20V20
-
-         etc.
-
-     The luma plane is followed immediately by the chroma plane.
-     Both the luma and the chroma planes have the same <image_row_pitch>.
-     The luma plane height is <image_height>.
-     The chroma plane height is (<image_height> / 2).
-     The luma plane width is <image_width>.
-     The chroma plane width is (<image_width> / 2)."
-
-    In section 5.3.2 "Querying List of Supported Image Formats", modify the description
-    of <flags>:
-
-    "<flags> is a bit-field that is used to specify allocation and usage information
-     about the image memory object being queried and is described in table 5.3. To get a
-     list of supported image formats that can be read from or written to by a kernel,
-     <flags> must be set to CL_MEM_READ_WRITE (get a list of images that can be read from
-     and written to by different kernel instances when correctly ordered by event
-     dependencies), CL_MEM_READ_ONLY (list of images that can be read from by a kernel)
-     or CL_MEM_WRITE_ONLY (list of images that can be written to by a kernel). To get a
-     list of supported image formats that can be both read from and written to by the
-     same kernel instance, flags must be set to CL_MEM_KERNEL_READ_AND_WRITE. To get a
-     list of images that cannot be read from nor written to by a kernel, flags must be
-     set to CL_MEM_NO_ACCESS_INTEL. Please see section 5.3.2.2 for clarification."
-
-    In section 5.3.2.1 "Minimum List of Supported Image Formats" add a description:
-
-    "For 2D image objects, the mandated minimum list of image formats that are not
-     required to be read from nor written to by a kernel and that must be supported by
-     all devices that support cl_intel_planar_yuv extension is described in table 5.8.c.
-
-     --------------------------------------------------
-     num_channels    channel_order    channel_data_type
-     ------------    -------------    -----------------
-     3               CL_NV12_INTEL    CL_UNORM_INT8
-     --------------------------------------------------
-     Table 5.8.c "Min. list of supported image formats - kernel no-access 2D Images""
-
-Additions to Chapter 6 of the OpenCL 2.0 Specification:
-
-    Extend the section 6.13.14.1.1 "Determining the border color or value":
-
-    "If the image channel order is CL_R, CL_RG, CL_RGB, CL_LUMINANCE, or a CL_NV12_INTEL
-     format's channel order, the border color is (0.0f, 0.0f, 0.0f, 1.0f)."
-
-    Extend the paragraph at the beginning of section 6.13.14.2 "Built-in Image Read
-    Functions":
-
-    "The following built-in function calls to read images with a sampler are supported.
-     Note that reading from a CL_NV12_INTEL image object is only supported by read_imagef
-     calls that take integer coordinates."
-
-    Add a note below the table in section 6.13.14.7 "Mapping image channels to color
-    values returned by read_image and color values passed to write_image to image
-    channels":
-
-    "NOTE: The mapping of CL_NV12_INTEL image channels to the appropriate components in
-     the float4 vector data type is ( V, Y, U, 1.0 )."
-
-    In section 6.13.14.5 "Built-in Image Query Functions", in table 6.26 "Built-in Image
-    Query Functions" extend the list of valid values returned by get_image_channel_order
-    built-in function with CLK_NV12_INTEL.
-
-Appendix A
-
-Sample host code:
-
-cl_image_format image_format;
-image_format.image_channel_order     = CL_NV12_INTEL;
-image_format.image_channel_data_type = CL_UNORM_INT8;
-
-cl_image_desc image_desc;
-image_desc.image_type                = CL_MEM_OBJECT_IMAGE2D;
-image_desc.image_width               = width;
-image_desc.image_height              = height;
-image_desc.image_array_size          = 0;
-image_desc.image_row_pitch           = 0;
-image_desc.image_slice_pitch         = 0;
-image_desc.num_mip_levels            = 0;
-image_desc.num_samples               = 0;
-image_desc.mem_object                = NULL;
-
-// create a CL_NV12_IMAGE
-cl_mem nv12Img = clCreateImage(context,
-                               CL_MEM_READ_ONLY | CL_MEM_HOST_NO_ACCESS |   
-                               CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL,
-                               image_format, image_desc,
-                               host_ptr, errcode_ret);
-
-// image_width & image_height are ignored for plane extraction
-image_desc.image_width               = 0;
-image_desc.image_height              = 0;
-
-// set mem_object to the full NV12 image
-image_desc.mem_object                = nv12Img;
-
-// get access to the Y plane (CL_R)
-image_desc.image_depth               = 0;
-
-// set proper image_format for the Y plane
-image_format.image_channel_order     = CL_R;
-image_format.image_channel_data_type = CL_UNORM_INT8;
-
-cl_mem nv12YplaneImg = clCreateImage(context, CL_MEM_READ_WRITE,
-                                     image_format, image_desc,
-                                     NULL, errcode_ret);
-
-// get access to the UV plane (CL_RG)
-image_desc.image_depth               = 1;
-
-// set proper image_format for the UV plane
-image_format.image_channel_order     = CL_RG;
-image_format.image_channel_data_type = CL_UNORM_INT8;
-
-cl_mem nv12UVplaneImg = clCreateImage(context, CL_MEM_READ_WRITE,
-                                      image_format, image_desc,
-                                      NULL, errcode_ret);
-// NOT SUPPORTED: transfer the whole NV12 image to the device
-// status = clEnqueueWriteImage(queue, nv12Img, true, origin, region,
-                             row_pitch, slice_pitch,
-                             ptr, 0, NULL, NULL);
-
-// write Y plane of NV12 image
-status = clEnqueueWriteImage(queue, nv12YplaneImg, true,
-                             origin, region, row_pitch, slice_pitch,
-                             ptr, 0, NULL, NULL);
-
-// write UV plane of NV12 image
-status = clEnqueueWriteImage(queue, nv12YplaneImg, true,
-                             origin, region, row_pitch, slice_pitch,
-                             ptr + uvPlaneOffset, 0, NULL, NULL);
-
-// NOT SUPPORTED: read the whole NV12 image back
-// status = clEnqueueReadImage(queue, nv12Img, true,
-                               origin, region, row_pitch, slice_pitch, 
-                               ptr, 0, NULL, NULL);
-// read Y plane of NV12 image
-status = clEnqueueReadImage(queue, nv12UVplaneImg, true,
-                            origin, region, row_pitch, slice_pitch,
-                            ptr, 0, NULL, NULL);
-
-// read UV plane of NV12 image
-status = clEnqueueReadImage(queue, nv12UVplaneImg, true,
-                            origin, region, row_pitch, slice_pitch,
-                            ptr + uvPlaneOffset, 0, NULL, NULL);
-
-Appendix B
-
-Sample kernel code:
-
-// do something with a whole NV12 image
-kernel void DoSomethingWithNV12
-(
-    ...
-    read_write image2d_t nv12Img,
-    ...
-)
-{
-    ...
-    // sample the CL_NV12_INTEL image - supported if CL_NV12_INTEL format is 
-    // available with CL_MEM_READ_ONLY or CL_MEM_READ_WRITE access flags 
-    // based on clGetSupportedImageFormats query.
-    float4 p = read_imagef(nv12Img, sampler, coord);
-    ...
-    // write to the CL_NV12_INTEL image - supported if CL_NV12_INTEL format is 
-    // available with CL_MEM_WRITE_ONLY or CL_MEM_READ_WRITE access flags 
-    // based on clGetSupportedImageFormats query.
-    write_imagef(nv12Img, coord, p);
-    ...
-}
-
-// do something with planes of an NV12 image
-kernel void DoSomethingWithNV12Planes
-(
-    ...
-    read_write image2d_t nv12ImgYPlane,
-    read_write image2d_t nv12ImgUVPlane,
-    ...
-)
-{
-    ...
-    // sample the Y & UV planes
-    float4 py = read_imagef(nv12ImgYPlane, sampler, coord);
-    float4 puv = read_imagef(nv12ImgUVPlane, sampler, coord);
-    ...
-    // write to Y & UV planes
-    write_imagef(nv12ImgYPlane, coord, py);
-    write_imagef(nv12ImgUVPlane, coord, puv);
-    ...
-}
-
-Revision History
-
-Version 1, 2016/22/11 (K.Laskowski)   - Initial version.
+https://github.com/KhronosGroup/OpenCL-Docs/blob/master/extensions/cl_intel_planar_yuv.asciidoc
diff --git a/extensions/intel/cl_intel_sharing_format_query.html b/extensions/intel/cl_intel_sharing_format_query.html
new file mode 100644
index 0000000..f24ee43
--- /dev/null
+++ b/extensions/intel/cl_intel_sharing_format_query.html
@@ -0,0 +1,1565 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<title>cl_intel_sharing_format_query</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: white; color: #222222; 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: #333333; }
+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 #dddddd; 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 #dddddd; 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 #dddddd; }
+blockquote cite { display: block; font-size: 0.8125em; color: #5e93b8; }
+blockquote cite:before { content: "\2014 \0020"; }
+blockquote cite a, blockquote cite a:visited { color: #5e93b8; }
+
+blockquote, blockquote p { line-height: 1.6; color: #333333; }
+
+/* Microformats */
+.vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; 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: white; margin-bottom: 1.25em; border: solid 1px #d8d8ce; }
+table thead, table tfoot { background: -webkit-linear-gradient(top, #add386, #90b66a); 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: white; 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: #edf2f2; }
+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: white; -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; -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 #dddddd; }
+#header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #dddddd; padding-bottom: 8px; }
+#header .details { border-bottom: 1px solid #dddddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #5e93b8; 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: #333333; }
+#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: #333333; }
+#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 #dddddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; }
+
+#toc { border-bottom: 0 solid #dddddd; 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: white; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #dddddd; 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 #dddddd; 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: white; -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 #dddddd; }
+
+#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 #dddddd; color: #5e93b8; }
+.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: white; -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: white; -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: #eeeeee; }
+.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 #666666; -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: #eeeeee; 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 #dddddd; }
+
+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: #333333; 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 #5e93b8; }
+.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: #333333; 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: #5e93b8; }
+
+.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: -webkit-linear-gradient(top, #add386, #90b66a); }
+
+tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: white; 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 white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; }
+
+.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 #dddddd; }
+
+.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: #eeeeee; }
+
+</style>
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
+<style>
+/* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
+/*pre.CodeRay {background-color:#f7f7f8;}*/
+.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
+.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
+.CodeRay .line-numbers strong{color:rgba(0,0,0,.4)}
+table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
+table.CodeRay td{vertical-align: top;line-height:1.45}
+table.CodeRay td.line-numbers{text-align:right}
+table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
+table.CodeRay td.code{padding:0 0 0 .5em}
+table.CodeRay td.code>pre{padding:0}
+.CodeRay .debug{color:#fff !important;background:#000080 !important}
+.CodeRay .annotation{color:#007}
+.CodeRay .attribute-name{color:#000080}
+.CodeRay .attribute-value{color:#700}
+.CodeRay .binary{color:#509}
+.CodeRay .comment{color:#998;font-style:italic}
+.CodeRay .char{color:#04d}
+.CodeRay .char .content{color:#04d}
+.CodeRay .char .delimiter{color:#039}
+.CodeRay .class{color:#458;font-weight:bold}
+.CodeRay .complex{color:#a08}
+.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
+.CodeRay .color{color:#099}
+.CodeRay .class-variable{color:#369}
+.CodeRay .decorator{color:#b0b}
+.CodeRay .definition{color:#099}
+.CodeRay .delimiter{color:#000}
+.CodeRay .doc{color:#970}
+.CodeRay .doctype{color:#34b}
+.CodeRay .doc-string{color:#d42}
+.CodeRay .escape{color:#666}
+.CodeRay .entity{color:#800}
+.CodeRay .error{color:#808}
+.CodeRay .exception{color:inherit}
+.CodeRay .filename{color:#099}
+.CodeRay .function{color:#900;font-weight:bold}
+.CodeRay .global-variable{color:#008080}
+.CodeRay .hex{color:#058}
+.CodeRay .integer,.CodeRay .float{color:#099}
+.CodeRay .include{color:#555}
+.CodeRay .inline{color:#000}
+.CodeRay .inline .inline{background:#ccc}
+.CodeRay .inline .inline .inline{background:#bbb}
+.CodeRay .inline .inline-delimiter{color:#d14}
+.CodeRay .inline-delimiter{color:#d14}
+.CodeRay .important{color:#555;font-weight:bold}
+.CodeRay .interpreted{color:#b2b}
+.CodeRay .instance-variable{color:#008080}
+.CodeRay .label{color:#970}
+.CodeRay .local-variable{color:#963}
+.CodeRay .octal{color:#40e}
+.CodeRay .predefined{color:#369}
+.CodeRay .preprocessor{color:#579}
+.CodeRay .pseudo-class{color:#555}
+.CodeRay .directive{font-weight:bold}
+.CodeRay .type{font-weight:bold}
+.CodeRay .predefined-type{color:inherit}
+.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
+.CodeRay .key{color:#808}
+.CodeRay .key .delimiter{color:#606}
+.CodeRay .key .char{color:#80f}
+.CodeRay .value{color:#088}
+.CodeRay .regexp .delimiter{color:#808}
+.CodeRay .regexp .content{color:#808}
+.CodeRay .regexp .modifier{color:#808}
+.CodeRay .regexp .char{color:#d14}
+.CodeRay .regexp .function{color:#404;font-weight:bold}
+.CodeRay .string{color:#d20}
+.CodeRay .string .string .string{background:#ffd0d0}
+.CodeRay .string .content{color:#d14}
+.CodeRay .string .char{color:#d14}
+.CodeRay .string .delimiter{color:#d14}
+.CodeRay .shell{color:#d14}
+.CodeRay .shell .delimiter{color:#d14}
+.CodeRay .symbol{color:#990073}
+.CodeRay .symbol .content{color:#a60}
+.CodeRay .symbol .delimiter{color:#630}
+.CodeRay .tag{color:#008080}
+.CodeRay .tag-special{color:#d70}
+.CodeRay .variable{color:#036}
+.CodeRay .insert{background:#afa}
+.CodeRay .delete{background:#faa}
+.CodeRay .change{color:#aaf;background:#007}
+.CodeRay .head{color:#f8f;background:#505}
+.CodeRay .insert .insert{color:#080}
+.CodeRay .delete .delete{color:#800}
+.CodeRay .change .change{color:#66f}
+.CodeRay .head .head{color:#f4f}
+</style>
+<link rel="stylesheet" href="../katex/katex.min.css">
+<script src="../katex/katex.min.js"></script>
+<script src="../katex/contrib/auto-render.min.js"></script>
+    <!-- Use KaTeX to render math once document is loaded, see
+         https://github.com/Khan/KaTeX/tree/master/contrib/auto-render -->
+<script>
+    document.addEventListener("DOMContentLoaded", function () {
+        renderMathInElement(
+            document.body,
+            {
+                delimiters: [
+                    { left: "$$", right: "$$", display: true},
+                    { left: "\\[", right: "\\]", display: true},
+                    { left: "$", right: "$", display: false},
+                    { left: "\\(", right: "\\)", display: false}
+                ]
+            }
+        );
+    });
+</script></head>
+<body class="book">
+<div id="header">
+<h1>cl_intel_sharing_format_query</h1>
+<div class="details">
+<span id="revnumber">version v3.0.8,</span>
+<span id="revdate">Wed, 30 Jun 2021 22:00:00 +0000</span>
+<br><span id="revremark">from git branch: master commit: 09130de814688ec7b463cb089986b807c628ead3</span>
+</div>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_name_strings"><a class="anchor" href="#_name_strings"></a>Name Strings</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><code>cl_intel_sharing_format_query</code></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_contact"><a class="anchor" href="#_contact"></a>Contact</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Ben Ashbaugh, Intel (ben 'dot' ashbaugh 'at' intel 'dot' com)</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_contributors"><a class="anchor" href="#_contributors"></a>Contributors</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Ben Ashbaugh, Intel<br>
+Jacek Danecki, Intel<br>
+Mateusz Hoppe, Intel<br>
+Krzysztof Laskowski, Intel<br>
+Eric Palmer, Intel<br>
+Pawel Wilma, Intel</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_notice"><a class="anchor" href="#_notice"></a>Notice</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright (c) 2021 Intel Corporation.  All rights reserved.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_status"><a class="anchor" href="#_status"></a>Status</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Shipping</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_version"><a class="anchor" href="#_version"></a>Version</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Built On: 2021-06-30<br>
+Revision: 1.0.0</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_dependencies"><a class="anchor" href="#_dependencies"></a>Dependencies</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This extension depends on and modifies one or more of the following interop / sharing extensions:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>cl_khr_gl_sharing</code></p>
+</li>
+<li>
+<p><code>cl_khr_dx9_media_sharing</code></p>
+</li>
+<li>
+<p><code>cl_khr_d3d10_sharing</code></p>
+</li>
+<li>
+<p><code>cl_khr_d3d11_sharing</code></p>
+</li>
+<li>
+<p><code>cl_intel_dx9_media_sharing</code></p>
+</li>
+<li>
+<p><code>cl_intel_va_api_media_sharing</code></p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>This extension is written against the OpenCL Extension specification v3.0.7, which describes <code>cl_khr_gl_sharing</code>, <code>cl_khr_dx9_media_sharing</code>, <code>cl_khr_d3d10_sharing</code>, and <code>cl_khr_d3d11_sharing</code>.
+This extension is written against version 6 of the <code>cl_intel_dx9_media_sharing</code> specification and against version 1 of the <code>cl_intel_va_api_media_sharing</code> specification.</p>
+</div>
+<div class="paragraph">
+<p>This extension does not make any changes to the core OpenCL API specification or the OpenCL C specification.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_overview"><a class="anchor" href="#_overview"></a>Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Existing interop / sharing extensions require support for a minimum set of image formats, however many OpenCL implementations may support sharing image formats above and beyond the minimum.
+This extension provides a mechanism for an application to query the set of API-specific image formats that an OpenCL implementation can accept for sharing.</p>
+</div>
+<div class="paragraph">
+<p>Note that the query functionality provided by this extension does not replace API-specific query functions or guarantee that an API-specific image with the returned format may be created.
+Additionally, some APIs may require that a buffer or image be created with particular flags or parameters to be shared with OpenCL, so this extension does not guarantee that all API-specific images of the queried formats may be shared with OpenCL.
+It does, however, guarantee that some API-specific images of the queried formats may be shared with OpenCL.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_new_api_functions"><a class="anchor" href="#_new_api_functions"></a>New API Functions</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>If <code>cl_khr_gl_sharing</code> is supported:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedGLTextureFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint num_entries,
+    cl_GLenum* gl_formats,
+    cl_uint* num_texture_formats)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If <code>cl_khr_dx9_media_sharing</code> or <code>cl_intel_dx9_media_sharing</code> is supported:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedDX9MediaSurfaceFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint plane,
+    cl_uint num_entries,
+    D3DFORMAT* dx9_formats,
+    cl_uint* num_surface_formats)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If <code>cl_khr_d3d10_sharing</code> is supported:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedD3D10TextureFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint num_entries,
+    DXGI_FORMAT* d3d10_formats,
+    cl_uint* num_texture_formats)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If <code>cl_khr_d3d11_sharing</code> is supported:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedD3D11TextureFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint plane,
+    cl_uint num_entries,
+    DXGI_FORMAT* d3d11_formats,
+    cl_uint* num_texture_formats)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If <code>cl_intel_va_api_media_sharing</code> is supported:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedVA_APIMediaSurfaceFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint plane,
+    cl_uint num_entries,
+    VAImageFormat* va_api_formats,
+    cl_uint* num_surface_formats)</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_modifications_to_extension_specifications"><a class="anchor" href="#_modifications_to_extension_specifications"></a>Modifications to Extension Specifications</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_modifications_to_cl_khr_gl_sharing"><a class="anchor" href="#_modifications_to_cl_khr_gl_sharing"></a>Modifications to cl_khr_gl_sharing:</h3>
+<div class="paragraph">
+<p>Add a new section 11.4.X - "Querying OpenGL Image Formats for Sharing":</p>
+</div>
+<div class="paragraph">
+<p>The function</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedGLTextureFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint num_entries,
+    cl_GLenum* gl_formats,
+    cl_uint* num_texture_formats)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>can be used to query the list of OpenGL internal texture formats supported for sharing with an OpenCL implementation, given <em>flags</em> indicating how the image is going to be used and <em>image_type</em> indicating the type of image to create.
+If there are multiple devices in the <em>context</em>, the returned set of image formats is the union of image formats supported by all devices in the <em>context</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>context</em> is a valid OpenCL context created from an OpenGL context.</p>
+</div>
+<div class="paragraph">
+<p><em>flags</em> is a bit-field used to specify usage information about the image memory object that will be created from the OpenGL texture.
+<em>flags</em> may be <code>CL_MEM_READ_WRITE</code>, to indicate that the image will be read from and written to by different kernel instances; <code>CL_MEM_READ_ONLY</code>, to indicate that the image will only be read from by a kernel; <code>CL_MEM_WRITE_ONLY</code>, to indicate that the image will be only written to by a kernel; or <code>CL_MEM_KERNEL_READ_AND_WRITE</code>, to indicate that the image will be both read from and written to by the same kernel instance.</p>
+</div>
+<div class="paragraph">
+<p><em>image_type</em> describes the type of image that will be created from the OpenGL texture.</p>
+</div>
+<div class="paragraph">
+<p><em>num_entries</em> specifies the number of entries that can be returned in the memory location given by <em>gl_formats</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>gl_formats</em> is a pointer to a memory location where the list of supported OpenGL internal texture formats supported for sharing is returned.
+If <em>gl_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><em>num_texture_formats</em> returns the actual total number of supported OpenGL internal texture formats for the specified <em>context</em> and <em>flags</em> for the specified <em>image_type</em>.
+If <em>num_texture_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><strong>clGetSupportedGLTextureFormatsINTEL</strong> returns <code>CL_SUCCESS</code> if the function is executed successfully.
+Otherwise, it returns one of the following errors:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>CL_INVALID_CONTEXT</code> if <em>context</em> is not a valid context, or if <em>context</em> was not created from an OpenGL context.</p>
+</li>
+<li>
+<p><code>CL_INVALID_VALUE</code> if values specified in <em>flags</em> or <em>image_type</em> are not valid, if <em>num_entries</em> is 0 and <em>gl_formats</em> is not <code>NULL</code>, or if both <em>gl_formats</em> and <em>num_texture_formats</em> are <code>NULL</code>.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_RESOURCES</code> if there is a failure to allocate resources required by the OpenCL implementation on the device.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_HOST_MEMORY</code> if there is a failure to allocate resources required by the OpenCL implementation on the host.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_modifications_to_cl_khr_dx9_media_sharing_and_cl_intel_dx9_media_sharing"><a class="anchor" href="#_modifications_to_cl_khr_dx9_media_sharing_and_cl_intel_dx9_media_sharing"></a>Modifications to cl_khr_dx9_media_sharing and cl_intel_dx9_media_sharing:</h3>
+<div class="paragraph">
+<p>Add a new section 15.7.X - "Querying DirectX 9 Media Surface Formats for Sharing" to the OpenCL Extension Specification, and/or a new section 9.13.X to the cl_intel_dx9_media_sharing extension specification:</p>
+</div>
+<div class="paragraph">
+<p>The function</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedDX9MediaSurfaceFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint plane,
+    cl_uint num_entries,
+    D3DFORMAT* dx9_formats,
+    cl_uint* num_surface_formats)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>can be used to query the list of DirectX 9 media surface formats supported for sharing with an OpenCL implementation, given <em>flags</em> indicating how the image is going to be used, <em>image_type</em> indicating the type of image to create, and optionally <em>plane</em> describing which plane will be shared for planar surface formats.
+If there are multiple devices in the <em>context</em>, the returned set of image formats is the union of Direct9 media surface formats supported by all devices in the <em>context</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>context</em> is a valid OpenCL context that supports sharing DirectX 9 media surfaces.</p>
+</div>
+<div class="paragraph">
+<p><em>flags</em> is a bit-field used to specify usage information about the image memory object that will be created from the DirectX 9 media surface.
+<em>flags</em> may be <code>CL_MEM_READ_WRITE</code>, to indicate that the image will be read from and written to by different kernel instances; <code>CL_MEM_READ_ONLY</code>, to indicate that the image will only be read from by a kernel; <code>CL_MEM_WRITE_ONLY</code>, to indicate that the image will be only written to by a kernel; or <code>CL_MEM_KERNEL_READ_AND_WRITE</code>, to indicate that the image will be both read from and written to by the same kernel instance.</p>
+</div>
+<div class="paragraph">
+<p><em>image_type</em> describes the type of image that will be created from the DirectX 9 media surface.</p>
+</div>
+<div class="paragraph">
+<p><em>plane</em> describes the plane that will be shared, for planar surface formats.
+When <em>plane</em> is equal to zero, the returned list of supported DirectX 9 media surface formats may include both planar surface formats and non-planar surface formats.</p>
+</div>
+<div class="paragraph">
+<p><em>num_entries</em> specifies the number of entries that can be returned in the memory location given by <em>dx9_formats</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>dx9_formats</em> is a pointer to a memory location where the list of supported DirectX 9 media surface formats supported for sharing is returned.
+If <em>dx9_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><em>num_surface_formats</em> returns the actual total number of supported DirectX 9 media surface formats for the specified <em>context</em> and <em>flags</em> for the specified <em>image_type</em>.
+If <em>num_surface_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><strong>clGetSupportedDX9MediaSurfaceFormatsINTEL</strong> returns <code>CL_SUCCESS</code> if the function is executed successfully.
+Otherwise, it returns one of the following errors:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>CL_INVALID_CONTEXT</code> if <em>context</em> is not a valid context, or if <em>context</em> does not support sharing DirectX 9 media surfaces.</p>
+</li>
+<li>
+<p><code>CL_INVALID_VALUE</code> if values specified in <em>flags</em> or <em>image_type</em> are not valid, if <em>num_entries</em> is 0 and <em>dx9_formats</em> is not <code>NULL</code>, or if both <em>dx9_formats</em> and <em>num_surface_formats</em> are <code>NULL</code>.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_RESOURCES</code> if there is a failure to allocate resources required by the OpenCL implementation on the device.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_HOST_MEMORY</code> if there is a failure to allocate resources required by the OpenCL implementation on the host."</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_modifications_to_cl_khr_d3d10_sharing"><a class="anchor" href="#_modifications_to_cl_khr_d3d10_sharing"></a>Modifications to cl_khr_d3d10_sharing:</h3>
+<div class="paragraph">
+<p>Add a new section 13.7.X - "Querying Direct3D 10 Texture Resource Formats for Sharing" to the OpenCL Extension Specification:</p>
+</div>
+<div class="paragraph">
+<p>The function</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedD3D10TextureFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint num_entries,
+    DXGI_FORMAT* d3d10_formats,
+    cl_uint* num_texture_formats)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>can be used to query the list of Direct3D 10 texture resource formats supported for sharing with an OpenCL implementation, given <em>flags</em> indicating how the image is going to be used and <em>image_type</em> indicating the type of image to create.
+If there are multiple devices in the <em>context</em>, the returned set of image formats is the union of Direct3D 10 texture resource formats supported by all devices in the <em>context</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>context</em> is a valid OpenCL context that supports sharing Direct3D 10 resources.</p>
+</div>
+<div class="paragraph">
+<p><em>flags</em> is a bit-field used to specify usage information about the image memory object that will be created from the Direct3D 10 texture resource.
+<em>flags</em> may be <code>CL_MEM_READ_WRITE</code>, to indicate that the image will be read from and written to by different kernel instances; <code>CL_MEM_READ_ONLY</code>, to indicate that the image will only be read from by a kernel; <code>CL_MEM_WRITE_ONLY</code>, to indicate that the image will be only written to by a kernel; or <code>CL_MEM_KERNEL_READ_AND_WRITE</code>, to indicate that the image will be both read from and written to by the same kernel instance.</p>
+</div>
+<div class="paragraph">
+<p><em>image_type</em> describes the type of image that will be created from the Direct3D 10 texture resource.</p>
+</div>
+<div class="paragraph">
+<p><em>num_entries</em> specifies the number of entries that can be returned in the memory location given by <em>d3d10_formats</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>d3d10_formats</em> is a pointer to a memory location where the list of supported Direct3D 10 texture resource formats supported for sharing is returned.
+If <em>d3d10_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><em>num_texture_formats</em> returns the actual total number of supported Direct3D 10 texture resource formats for the specified <em>context</em> and <em>flags</em> for the specified <em>image_type</em>.
+If <em>num_texture_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><strong>clGetSupportedD3D10TextureFormatsINTEL</strong> returns <code>CL_SUCCESS</code> if the function is executed successfully.
+Otherwise, it returns one of the following errors:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>CL_INVALID_CONTEXT</code> if <em>context</em> is not a valid context, or if <em>context</em> does not support sharing Direct3D 10 resources.</p>
+</li>
+<li>
+<p><code>CL_INVALID_VALUE</code> if values specified in <em>flags</em> or <em>image_type</em> are not valid, if <em>num_entries</em> is 0 and <em>d3d10_formats</em> is not <code>NULL</code>, or if both <em>d3d10_formats</em> and <em>num_texture_formats</em> are <code>NULL</code>.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_RESOURCES</code> if there is a failure to allocate resources required by the OpenCL implementation on the device.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_HOST_MEMORY</code> if there is a failure to allocate resources required by the OpenCL implementation on the host."</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_modifications_to_cl_khr_d3d11_sharing"><a class="anchor" href="#_modifications_to_cl_khr_d3d11_sharing"></a>Modifications to cl_khr_d3d11_sharing:</h3>
+<div class="paragraph">
+<p>Add a new section 14.7.X - "Querying Direct3D 11 Texture Resource Formats for Sharing" to the OpenCL Extension Specification:</p>
+</div>
+<div class="paragraph">
+<p>The function</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedD3D11TextureFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint plane,
+    cl_uint num_entries,
+    DXGI_FORMAT* d3d11_formats,
+    cl_uint* num_texture_formats)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>can be used to query the list of Direct3D 11 texture resource formats supported for sharing with an OpenCL implementation, given <em>flags</em> indicating how the image is going to be used and <em>image_type</em> indicating the type of image to create.
+If there are multiple devices in the <em>context</em>, the returned set of image formats is the union of Direct3D 11 texture resource formats supported by all devices in the <em>context</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>context</em> is a valid OpenCL context that supports sharing Direct3D 11 resources.</p>
+</div>
+<div class="paragraph">
+<p><em>flags</em> is a bit-field used to specify usage information about the image memory object that will be created from the Direct3D 11 texture resource.
+<em>flags</em> may be <code>CL_MEM_READ_WRITE</code>, to indicate that the image will be read from and written to by different kernel instances; <code>CL_MEM_READ_ONLY</code>, to indicate that the image will only be read from by a kernel; <code>CL_MEM_WRITE_ONLY</code>, to indicate that the image will be only written to by a kernel; or <code>CL_MEM_KERNEL_READ_AND_WRITE</code>, to indicate that the image will be both read from and written to by the same kernel instance.</p>
+</div>
+<div class="paragraph">
+<p><em>image_type</em> describes the type of image that will be created from the Direct3D 11 texture resource.</p>
+</div>
+<div class="paragraph">
+<p><em>plane</em> describes the plane that will be shared, for planar surface formats.
+When <em>plane</em> is equal to zero, the returned list of supported Direct3D 11 texture resource formats may include both planar texture resource formats and non-planar texture resource formats.</p>
+</div>
+<div class="paragraph">
+<p><em>num_entries</em> specifies the number of entries that can be returned in the memory location given by <em>d3d11_formats</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>d3d11_formats</em> is a pointer to a memory location where the list of supported Direct3D 11 texture resource formats supported for sharing is returned.
+If <em>d3d11_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><em>num_texture_formats</em> returns the actual total number of supported Direct3D 11 texture resource formats for the specified <em>context</em> and <em>flags</em> for the specified <em>image_type</em>.
+If <em>num_texture_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><strong>clGetSupportedD3D11TextureFormatsINTEL</strong> returns <code>CL_SUCCESS</code> if the function is executed successfully.
+Otherwise, it returns one of the following errors:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>CL_INVALID_CONTEXT</code> if <em>context</em> is not a valid context, or if <em>context</em> does not support sharing Direct3D 11 resources.</p>
+</li>
+<li>
+<p><code>CL_INVALID_VALUE</code> if values specified in <em>flags</em> or <em>image_type</em> are not valid, if <em>num_entries</em> is 0 and <em>d3d11_formats</em> is not <code>NULL</code>, or if both <em>d3d11_formats</em> and <em>num_texture_formats</em> are <code>NULL</code>.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_RESOURCES</code> if there is a failure to allocate resources required by the OpenCL implementation on the device.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_HOST_MEMORY</code> if there is a failure to allocate resources required by the OpenCL implementation on the host."</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_modifications_to_cl_intel_va_api_media_sharing"><a class="anchor" href="#_modifications_to_cl_intel_va_api_media_sharing"></a>Modifications to cl_intel_va_api_media_sharing:</h3>
+<div class="paragraph">
+<p>Add a new section 9.X.Y - "Querying VA_API Media Image Formats for Sharing" to the cl_intel_va_api_media_sharing extension specification:</p>
+</div>
+<div class="paragraph">
+<p>"The function</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>cl_int clGetSupportedVA_APIMediaSurfaceFormatsINTEL(
+    cl_context context,
+    cl_mem_flags flags,
+    cl_mem_object_type image_type,
+    cl_uint plane,
+    cl_uint num_entries,
+    VAImageFormat* va_api_formats,
+    cl_uint* num_surface_formats)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>can be used to query the list of VA_API media image formats supported for sharing with an OpenCL implementation, given <em>flags</em> indicating how the image is going to be used and <em>image_type</em> indicating the type of image to create.
+If there are multiple devices in the <em>context</em>, the returned set of image formats is the union of VA_API media image formats supported by all devices in the <em>context</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>context</em> is a valid OpenCL context that supports sharing VA_API media images.</p>
+</div>
+<div class="paragraph">
+<p><em>flags</em> is a bit-field used to specify usage information about the image memory object that will be created from the VA_API media image.
+<em>flags</em> may be <code>CL_MEM_READ_WRITE</code>, to indicate that the image will be read from and written to by different kernel instances; <code>CL_MEM_READ_ONLY</code>, to indicate that the image will only be read from by a kernel; <code>CL_MEM_WRITE_ONLY</code>, to indicate that the image will be only written to by a kernel; or <code>CL_MEM_KERNEL_READ_AND_WRITE</code>, to indicate that the image will be both read from and written to by the same kernel instance.</p>
+</div>
+<div class="paragraph">
+<p><em>image_type</em> describes the type of image that will be created from the VA_API media image.</p>
+</div>
+<div class="paragraph">
+<p><em>plane</em> describes the plane that will be shared, for planar surface formats.
+When <em>plane</em> is equal to zero, the returned list of VA_API media image formats may include both planar media image formats and non-planar media image formats.</p>
+</div>
+<div class="paragraph">
+<p><em>num_entries</em> specifies the number of entries that can be returned in the memory location given by <em>va_api_formats</em>.</p>
+</div>
+<div class="paragraph">
+<p><em>va_api_formats</em> is a pointer to a memory location where the list of supported VA_API media image formats supported for sharing is returned.
+If <em>va_api_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><em>num_surface_formats</em> returns the actual total number of supported VA_API media image formats for the specified <em>context</em> and <em>flags</em> for the specified <em>image_type</em>.
+If <em>num_surface_formats</em> is <code>NULL</code>, it is ignored.</p>
+</div>
+<div class="paragraph">
+<p><strong>clGetSupportedVA_APIMediaSurfaceFormatsINTEL</strong> returns <code>CL_SUCCESS</code> if the function is executed successfully.
+Otherwise, it returns one of the following errors:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>CL_INVALID_CONTEXT</code> if <em>context</em> is not a valid context, or if <em>context</em> does not support sharing VA_API media images.</p>
+</li>
+<li>
+<p><code>CL_INVALID_VALUE</code> if values specified in <em>flags</em> or <em>image_type</em> are not valid, if <em>num_entries</em> is 0 and <em>va_api_formats</em> is not <code>NULL</code>, or if both <em>va_api_formats</em> and <em>num_surface_formats</em> are <code>NULL</code>.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_RESOURCES</code> if there is a failure to allocate resources required by the OpenCL implementation on the device.</p>
+</li>
+<li>
+<p><code>CL_OUT_OF_HOST_MEMORY</code> if there is a failure to allocate resources required by the OpenCL implementation on the host."</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_issues"><a class="anchor" href="#_issues"></a>Issues</h2>
+<div class="sectionbody">
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>What should the name of this extension be?</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Status: <code>RESOLVED</code></p>
+</div>
+<div class="paragraph">
+<p>Discussion: The best name appears to be cl_intel_sharing_format_query.
+Another possibility is cl_intel_interop_format_query, but it seems better to have 'sharing' in the name, since all of the API-specific sharing extensions also have 'sharing' in the name, with the exception of cl_khr_egl_image.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>Do we need to say anything about cl_intel_d3d11_nv12_media_sharing in this spec?</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Status: <code>RESOLVED</code></p>
+</div>
+<div class="paragraph">
+<p>Discussion: Since cl_khr_d3d11_sharing is required by cl_intel_d3d11_nv12_media_sharing, we do not need to say anything about cl_intel_d3d11_nv12_media_sharing in this spec.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>What should the query for EGL images return?</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Status: <code>RESOLVED</code>, this spec will not support EGL sharing format queries.</p>
+</div>
+<div class="paragraph">
+<p>Discussion: The most common flow to get an EGL image to interop with appears to be:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Create a GraphicBuffer with a requested PIXEL_FORMAT</p>
+</li>
+<li>
+<p>Get an EGLClientBuffer with the getNativeBuffer() member function</p>
+</li>
+<li>
+<p>Create an EGLImageKHR by passing the EGLClientBuffer to eglCreateImageKHR()</p>
+</li>
+<li>
+<p>Create an OpenCL cl_mem from the EGLImageKHR using clCreateFromEGLImageKHR()</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>So, arguably the query for EGL images should return PIXEL_FORMATs that can be passed to the GraphicBuffer constructor to get an image to interop with, which would work with this flow, but not for other flows that could also create EGL images to interop with.</p>
+</div>
+<div class="paragraph">
+<p>Since there are multiple valid flows that can result in an EGL image to interop with, does it even make sense to have a query for EGL images?</p>
+</div>
+<div class="paragraph">
+<p>Decision: Not going to support EGL sharing format queries for now, due to the multiple "domains" that can create EGL images.
+If desired, we can always add cl_intel_egl_sharing_format_query at a later date.
+Note as well that the EGL sharing extension doesn&#8217;t have a "list of supported image formats" like the other sharing APIs, so the value of a sharing format query for EGL is already less than it is for other sharing APIs.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>What should the query for VA_API media surfaces return?</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Status: <code>RESOLVED</code></p>
+</div>
+<div class="paragraph">
+<p>Discussion: Right now it&#8217;s defined to return a VAImageFormat, which is correct, but arguably overkill since we&#8217;re only using VA_API sharing for media surfaces.
+The alternative is to return unsigned ints representing the appropriate fourcc codes.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>For OpenGL sharing, should the query include the un-sized, un-typed "base" internal formats?  Or should it only include the sized internal formats?</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Status: <code>RESOLVED</code></p>
+</div>
+<div class="paragraph">
+<p>Discussion: For the base internal formats, the user is at the mercy of the actual internal format chosen by the OpenGL driver.
+So, it may be possible that there could be OpenGL textures created with the same base internal format, where one of them is shareable with OpenCL and one of them is not, which could be confusing.
+Then again, it&#8217;s also somewhat confusing to leave the base internal formats out of the image format query since it&#8217;s likely that sharing will succeed for OpenGL textures created with base the base internal formats in many cases.</p>
+</div>
+<div class="paragraph">
+<p>Decision: This extension won&#8217;t say anything about whether the query will return of the un-sized, un-typed "base" internal formats or the sized internal formats.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>How should we handle sharing APIs like DX9 media sharing where a format may be supported for sharing for some planes (such as the individual planes of a planar YUV image) but not for other planes (such as a plane value indicating a monolithic planar YUV image)?</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Status: <code>RESOLVED</code></p>
+</div>
+<div class="paragraph">
+<p>Decision: Added a "plane" argument to the sharing format query for the following APIs:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>clGetSupportedDX9MediaSurfaceFormatsINTEL</p>
+</li>
+<li>
+<p>clGetSupportedD3D11TextureFormatsINTEL</p>
+</li>
+<li>
+<p>clGetSupportedVA_APIMediaSurfaceFormatsINTEL</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>No "plane" argument was added to these APIs, since they do not support sharing planar images:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>clGetSupportedGLTextureFormatsINTEL</p>
+</li>
+<li>
+<p>clGetSupportedD3D10TextureFormatsINTEL</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Note that the D3D10 / D3D11 sharing APIs specify the "plane" using the "subresource" argument, but for the purposes of the sharing format query we really do want this to be the "plane", since it doesn&#8217;t make sense to query for a particular "subresource".</p>
+</div>
+</div>
+</div>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_revision_history"><a class="anchor" href="#_revision_history"></a>Revision History</h2>
+<div class="sectionbody">
+<table class="tableblock frame-all grid-rows stretch">
+<colgroup>
+<col style="width: 4.7619%;">
+<col style="width: 14.2857%;">
+<col style="width: 14.2857%;">
+<col style="width: 66.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Version</th>
+<th class="tableblock halign-left valign-top">Date</th>
+<th class="tableblock halign-left valign-top">Author</th>
+<th class="tableblock halign-left valign-top">Changes</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2021-05-31</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ben Ashbaugh</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Initial public revision</strong></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Version v3.0.8<br>
+Last updated 2021-06-30 15:09:23 -0700
+</div>
+</div>
+
+<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_HTMLorMML"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/extensions/registry.py b/extensions/registry.py
index 8937ff1..13a648b 100644
--- a/extensions/registry.py
+++ b/extensions/registry.py
@@ -214,18 +214,23 @@
     'cl_intel_packed_yuv' : {
         'number' : 42,
         'flags' : { 'public' },
-        'url' : 'extensions/intel/cl_intel_packed_yuv.txt',
+        'url' : 'extensions/intel/cl_intel_packed_yuv.html',
     },
     'cl_intel_planar_yuv' : {
         'number' : 49,
         'flags' : { 'public' },
-        'url' : 'extensions/intel/cl_intel_planar_yuv.txt',
+        'url' : 'extensions/intel/cl_intel_planar_yuv.html',
     },
     'cl_intel_required_subgroup_size' : {
         'number' : 43,
         'flags' : { 'public' },
         'url' : 'extensions/intel/cl_intel_required_subgroup_size.html',
     },
+    'cl_intel_sharing_format_query' : {
+        'number' : 70,
+        'flags' : { 'public' },
+        'url' : 'extensions/intel/cl_intel_sharing_format_query.html',
+    },
     'cl_intel_simultaneous_sharing' : {
         'number' : 34,
         'flags' : { 'public' },
