|  | <!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>clCreateFromGLBuffer(3)</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"> | 
|  | <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="manpage"> | 
|  | <div id="header"> | 
|  | <h1>clCreateFromGLBuffer(3) Manual Page</h1> | 
|  | <h2 id="_name">Name</h2> | 
|  | <div class="sectionbody"> | 
|  | <p>clCreateFromGLBuffer - Creates an OpenCL buffer object from an OpenGL buffer object.</p> | 
|  | </div> | 
|  | </div> | 
|  | <div id="content"> | 
|  | <div class="sect1"> | 
|  | <h2 id="_c_specification">C Specification</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="listingblock"> | 
|  | <div class="content"> | 
|  | <pre class="highlight"><code class="language-c" data-lang="c">cl_mem clCreateFromGLBuffer(cl_context context, | 
|  | cl_mem_flags flags, | 
|  | GLuint bufobj, | 
|  | cl_int * errcode_ret)</code></pre> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <h2 id="_parameters">Parameters</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="ulist"> | 
|  | <ul> | 
|  | <li> | 
|  | <p><em>context</em> - A valid OpenCL context created from an OpenGL context.</p> | 
|  | </li> | 
|  | <li> | 
|  | <p><em>flags</em> - A bit-field that is used to specify usage information. Refer | 
|  | to the table for <a href="clCreateBuffer.html">clCreateBuffer</a> for a description of <em>flags</em>. Only | 
|  | <code>CL_MEM_READ_ONLY</code>, <code>CL_MEM_WRITE_ONLY</code> and <code>CL_MEM_READ_WRITE</code> values | 
|  | specified in the table at <a href="clCreateBuffer.html">clCreateBuffer</a> can be used.</p> | 
|  | </li> | 
|  | <li> | 
|  | <p><em>bufobj</em> - The name of a GL buffer object. The data store of the GL | 
|  | buffer object must have have been previously created by calling OpenGL | 
|  | function <code>glBufferData</code>, although its contents need not be initialized. | 
|  | The size of the data store will be used to determine the size of the CL | 
|  | buffer object.</p> | 
|  | </li> | 
|  | <li> | 
|  | <p><em>errcode_ret</em> - Returns an appropriate error code as described below. If | 
|  | <em>errcode_ret</em> is NULL, no error code is returned.</p> | 
|  | </li> | 
|  | </ul> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <h2 id="_description">Description</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="paragraph"> | 
|  | <p>The size of the GL buffer object data store at the time <code>clCreateFromGLBuffer</code> is called will be used as the size of buffer object returned by <code>clCreateFromGLBuffer</code>. | 
|  | If the state of a GL buffer object is modified through the GL API (e.g. | 
|  | <code>glBufferData</code>) while there exists a corresponding CL buffer object, subsequent use of the CL buffer object will result in undefined behavior.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>The <a href="clRetainMemObject.html">clRetainMemObject</a> and | 
|  | <a href="clReleaseMemObject.html">clReleaseMemObject</a> functions can be used to retain and release the buffer object.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>The CL buffer object created using <code>clCreateFromGLBuffer</code> can also be used to create a CL 1D image buffer object.</p> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <h2 id="_notes">Notes</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="paragraph"> | 
|  | <p>General information about GL sharing follows.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>The OpenCL specification in section 9.7 defines how to share data with | 
|  | texture and buffer objects in a parallel OpenGL implementation, but does not | 
|  | define how the association between an OpenCL context and an OpenGL context | 
|  | or share group is established. This extension defines optional attributes to | 
|  | OpenCL context creation routines which associate a GL context or share group | 
|  | object with a newly created OpenCL context. If this extension is supported | 
|  | by an implementation, the string "cl_khr_gl_sharing" will be present in the | 
|  | <code>CL_DEVICE_EXTENSIONS</code> string described in the table of allowed values for | 
|  | <em>param_name</em> for <a href="clGetDeviceInfo.html">clGetDeviceInfo</a> or in the <code>CL_PLATFORM_EXTENSIONS</code> | 
|  | string described in the table of allowed values for <em>param_name</em> for | 
|  | <a href="clGetPlatformInfo.html">clGetPlatformInfo</a>.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>This section discusses OpenCL functions that allow applications to use | 
|  | OpenGL buffer, texture, and renderbuffer objects as OpenCL memory objects. | 
|  | This allows efficient sharing of data between OpenCL and OpenGL. The OpenCL | 
|  | API may be used to execute kernels that read and/or write memory objects | 
|  | that are also OpenGL objects.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>An OpenCL image object may be created from an OpenGL texture or renderbuffer | 
|  | object. An OpenCL buffer object may be created from an OpenGL buffer object.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>Any supported OpenGL object defined within the GL share group object, or the | 
|  | share group associated with the GL context from which the CL context is | 
|  | created, may be shared, with the exception of the default OpenGL objects | 
|  | (i.e. objects named zero), which may not be shared.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <div class="title">OpenGL and Corresponding OpenCL Image Formats</div> | 
|  | <p>The table below (Table 9.4) describes the list of GL texture internal | 
|  | formats and the corresponding CL image formats. | 
|  | If a GL texture object with an internal format from the table below is | 
|  | successfully created by OpenGL, then there is guaranteed to be a mapping to | 
|  | one of the corresponding CL image format(s) in that table. | 
|  | Texture objects created with other OpenGL internal formats may (but are not | 
|  | guaranteed to) have a mapping to a CL image format; if such mappings exist, | 
|  | they are guaranteed to preserve all color components, data types, and at | 
|  | least the number of bits/component actually allocated by OpenGL for that | 
|  | format.</p> | 
|  | </div> | 
|  | <table class="tableblock frame-all grid-all stretch"> | 
|  | <colgroup> | 
|  | <col style="width: 50%;"> | 
|  | <col style="width: 50%;"> | 
|  | </colgroup> | 
|  | <thead> | 
|  | <tr> | 
|  | <th class="tableblock halign-left valign-top">GL internal format</th> | 
|  | <th class="tableblock halign-left valign-top">CL image format (channel order, channel data type)</th> | 
|  | </tr> | 
|  | </thead> | 
|  | <tbody> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA8</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_UNORM_INT8 or CL_BGRA, CL_UNORM_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_SRGBA8_ALPHA8</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_sRGBA, CL_UNORM_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA</code>, | 
|  | <code>GL_UNSIGNED_INT_8_8_8_8_REV</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_UNORM_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_BGRA</code>, | 
|  | <code>GL_UNSIGNED_INT_8_8_8_8_REV</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_BGRA, CL_UNORM_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA8I, GL_RGBA8I_EXT</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_SIGNED_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA16I, GL_RGBA16I_EXT</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_SIGNED_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA32I, GL_RGBA32I_EXT</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_SIGNED_INT32</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA8UI, GL_RGBA8UI_EXT</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_UNSIGNED_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA16UI, GL_RGBA16UI_EXT</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_UNSIGNED_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA32UI, GL_RGBA32UI_EXT</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_UNSIGNED_INT32</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA8_SNORM</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_SNORM_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA16</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_UNORM_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA16_SNORM</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_SNORM_INT166</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA16F, GL_RGBA16F_ARB</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_HALF_FLOAT</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RGBA32F, GL_RGBA32F_ARB</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RGBA, CL_FLOAT</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R8</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_UNORM_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R8_SNORM</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_SNORM_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R16</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_UNORM_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R16_SNORM</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_SNORM_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R16F</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_HALF_FLOAT</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R32F</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_FLOAT</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R8I</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_SIGNED_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R16I</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_SIGNED_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R32I</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_SIGNED_INT32</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R8UI</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_UNSIGNED_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R16UI</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_UNSIGNED_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_R32UI</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_R, CL_UNSIGNED_INT32</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG8</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_UNORM_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG8_SNORM</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_SNORM_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG16</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_UNORM_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG16_SNORM</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_SNORM_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG16F</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_HALF_FLOAT</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG32F</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_FLOAT</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG8I</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_SIGNED_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG16I</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_SIGNED_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG32I</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_SIGNED_INT32</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG8UI</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_UNSIGNED_INT8</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG16UI</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_UNSIGNED_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_RG32UI</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_RG, CL_UNSIGNED_INT32</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | </tbody> | 
|  | </table> | 
|  | <div class="paragraph"> | 
|  | <p>If the <a href="cl_khr_gl_depth_images.html">cl_khr_gl_depth_images</a> extension is enabled, the following | 
|  | new image formats are added to table 9.4 in section 9.6.3.1 of the OpenCL | 
|  | 2.0 extension specification. If a GL texture object with an internal format | 
|  | from table 9.4 is successfully created by OpenGL, then there is guaranteed | 
|  | to be a mapping to one of the corresponding CL image format(s) in that | 
|  | table.</p> | 
|  | </div> | 
|  | <table class="tableblock frame-all grid-all stretch"> | 
|  | <colgroup> | 
|  | <col style="width: 50%;"> | 
|  | <col style="width: 50%;"> | 
|  | </colgroup> | 
|  | <thead> | 
|  | <tr> | 
|  | <th class="tableblock halign-left valign-top">GL internal format</th> | 
|  | <th class="tableblock halign-left valign-top">CL image format (channel order, channel data type)</th> | 
|  | </tr> | 
|  | </thead> | 
|  | <tbody> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_DEPTH_COMPONENT32F</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_DEPTH, CL_FLOAT</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_DEPTH_COMPONENT16</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_DEPTH, CL_UNORM_INT16</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_DEPTH24_STENCIL8</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_DEPTH_STENCIL, CL_UNORM_INT24</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | <tr> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>GL_DEPTH32F_STENCIL8</code></p> | 
|  | </div></div></td> | 
|  | <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> | 
|  | <p><code>CL_DEPTH_STENCIL, CL_FLOAT</code></p> | 
|  | </div></div></td> | 
|  | </tr> | 
|  | </tbody> | 
|  | </table> | 
|  | <div class="paragraph"> | 
|  | <div class="title">Lifetime of [GL] Shared Objects</div> | 
|  | <p>An OpenCL memory object created from an OpenGL object (hereinafter refered | 
|  | to as a "shared CL/GL object") remains valid as long as the corresponding GL | 
|  | object has not been deleted. If the GL object is deleted through the GL API | 
|  | (e.g. <code>glDeleteBuffers</code>, <code>glDeleteTextures</code>, or <code>glDeleteRenderbuffers</code>), | 
|  | subsequent use of the CL buffer or image object will result in undefined | 
|  | behavior, including but not limited to possible CL errors and data | 
|  | corruption, but may not result in program termination.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>The CL context and corresponding command-queues are dependent on the | 
|  | existence of the GL share group object, or the share group associated with | 
|  | the GL context from which the CL context is created. If the GL share group | 
|  | object or all GL contexts in the share group are destroyed, any use of the | 
|  | CL context or command-queue(s) will result in undefined behavior, which may | 
|  | include program termination. Applications should destroy the CL | 
|  | command-queue(s) and CL context before destroying the corresponding GL share | 
|  | group or contexts.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <div class="title">Synchronizing OpenCL and OpenGL Access</div> | 
|  | <p>In order to ensure data integrity, the application is responsible for | 
|  | synchronizing access to shared CL/GL objects by their respective APIs. | 
|  | Failure to provide such synchronization may result in race conditions and | 
|  | other undefined behavior including non-portability between implementations.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>Prior to calling <a href="clEnqueueAcquireGLObjects.html">clEnqueueAcquireGLObjects</a>, the application must | 
|  | ensure that any pending GL operations which access the objects specified in | 
|  | <em>mem_objects</em> have completed. This may be accomplished portably by issuing | 
|  | and waiting for completion of a <code>glFinish</code> command on all GL contexts with | 
|  | pending references to these objects. Implementations may offer more | 
|  | efficient synchronization methods; for example on some platforms calling | 
|  | <code>glFlush</code> may be sufficient, or synchronization may be implicit within a | 
|  | thread, or there may be vendor-specific extensions that enable placing a | 
|  | fence in the GL command stream and waiting for completion of that fence in | 
|  | the CL command queue. Note that no synchronization methods other than | 
|  | <code>glFinish</code> are portable between OpenGL implementations at this time.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>When the extension <a href="cl_khr_egl_event.html">cl_khr_egl_event</a> is supported: Prior to calling | 
|  | <a href="clEnqueueAcquireGLObjects.html">clEnqueueAcquireGLObjects</a>, the application must ensure that any | 
|  | pending EGL or EGL client API operations which access the objects specified | 
|  | in <em>mem_objects</em> have completed. If the <a href="cl_khr_egl_event.html">cl_khr_egl_event</a> extension | 
|  | is supported and the EGL context in question supports fence sync objects, | 
|  | <em>explicit synchronisation</em> can be achieved as set out in section 5.7.1. If | 
|  | the <a href="cl_khr_egl_event.html">cl_khr_egl_event</a> extension is not supported, completion of EGL | 
|  | client API commands may be determined by issuing and waiting for completion | 
|  | of commands such as <code>glFinish</code> or <code>vgFinish</code> on all client API contexts with | 
|  | pending references to these objects. Some implementations may offer other | 
|  | efficient synchronization methods. If such methods exist they will be | 
|  | described in platform-specific documentation. Note that no synchronization | 
|  | methods other than <code>glFinish</code> and <code>vgFinish</code> are portable between all EGL | 
|  | client API implementations and all OpenCL implementations. While this is the | 
|  | only way to ensure completion that is portable to all platforms, these are | 
|  | expensive operation and their use should be avoided if the | 
|  | <a href="cl_khr_egl_event.html">cl_khr_egl_event</a> extension is supported on a platform.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>Similarly, after calling <a href="clEnqueueReleaseGLObjects.html">clEnqueueReleaseGLObjects</a>, the application is | 
|  | responsible for ensuring that any pending OpenCL operations which access the | 
|  | objects specified in <em>mem_objects</em> have completed prior to executing | 
|  | subsequent GL commands which reference these objects. This may be | 
|  | accomplished portably by calling <a href="clWaitForEvents.html">clWaitForEvents</a> with the event object | 
|  | returned by <a href="clEnqueueReleaseGLObjects.html">clEnqueueReleaseGLObjects</a>, or by calling <a href="clFinish.html">clFinish</a>. | 
|  | As above, some implementations may offer more efficient methods.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>The application is responsible for maintaining the proper order of | 
|  | operations if the CL and GL contexts are in separate threads.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>If a GL context is bound to a thread other than the one in which | 
|  | <a href="clEnqueueReleaseGLObjects.html">clEnqueueReleaseGLObjects</a> is called, changes to any of the objects in | 
|  | <em>mem_objects</em> may not be visible to that context without additional steps | 
|  | being taken by the application. For an OpenGL 3.1 (or later) context, the | 
|  | requirements are described in Appendix D ("Shared Objects and Multiple | 
|  | Contexts") of the OpenGL 3.1 Specification. For prior versions of OpenGL, | 
|  | the requirements are implementation-dependent.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>Attempting to access the data store of an OpenGL object after it has been | 
|  | acquired by OpenCL and before it has been released will result in undefined | 
|  | behavior. Similarly, attempting to access a shared CL/GL object from OpenCL | 
|  | before it has been acquired by the OpenCL command queue, or after it has | 
|  | been released, will result in undefined behavior.</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p>If the <a href="cl_khr_gl_event.html">cl_khr_gl_event</a> extension is supported, | 
|  | then the OpenCL implementation will ensure that any such pending OpenGL | 
|  | operations are complete for an OpenGL context bound to the same thread as | 
|  | the OpenCL context. This is referred to as implicit synchronization.</p> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <h2 id="_errors">Errors</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="paragraph"> | 
|  | <p>Returns a valid non-zero OpenCL buffer object and <em>errcode_ret</em> is set to <code>CL_SUCCESS</code> if the buffer object is created successfully. | 
|  | Otherwise, it returns a NULL value with one of the following error values returned in <em>errcode_ret</em>:</p> | 
|  | </div> | 
|  | <div class="ulist"> | 
|  | <ul> | 
|  | <li> | 
|  | <p><code>CL_INVALID_CONTEXT</code> if <em>context</em> is not a valid context or was not created from a GL context.</p> | 
|  | </li> | 
|  | <li> | 
|  | <p><code>CL_INVALID_VALUE</code> if values specified in <em>flags</em> are not valid.</p> | 
|  | </li> | 
|  | <li> | 
|  | <p><code>CL_INVALID_GL_OBJECT</code> if <em>bufobj</em> is not a GL buffer object or is a GL buffer object but does not have an existing data store or the size of the buffer is 0.</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 class="sect1"> | 
|  | <h2 id="_see_also">See Also</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="paragraph"> | 
|  | <p><a href="cl_khr_gl_sharing.html">cl_khr_gl_sharing</a>, | 
|  | <a href="cl_khr_gl_event.html">cl_khr_gl_event</a>, | 
|  | <a href="clCreateBuffer.html">clCreateBuffer</a>, | 
|  | <a href="clCreateFromGLTexture.html">clCreateFromGLTexture</a></p> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <h2 id="_document_notes">Document Notes</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="paragraph"> | 
|  | <p>For more information, see the OpenCL Extension Specification at URL</p> | 
|  | </div> | 
|  | <div class="paragraph"> | 
|  | <p><a href="https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_Ext.html#clCreateFromGLBuffer" class="bare">https://www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_Ext.html#clCreateFromGLBuffer</a></p> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div class="sect1"> | 
|  | <h2 id="_copyright">Copyright</h2> | 
|  | <div class="sectionbody"> | 
|  | <div class="paragraph"> | 
|  | <p>Copyright (c) 2014-2020 Khronos Group. This work is licensed under a | 
|  | <a href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener">Creative Commons | 
|  | Attribution 4.0 International License</a>.</p> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | <div id="footer"> | 
|  | <div id="footer-text"> | 
|  | Version V2.2-11-107-g6eaa3d2-dirty<br> | 
|  | Last updated 2020-02-24 09:46:37 -0800 | 
|  | </div> | 
|  | </div> | 
|  |  | 
|  | <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_HTMLorMML"></script> | 
|  | </body> | 
|  | </html> |