<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="generator" content="rustdoc">
    <meta name="description" content="API documentation for the Rust `BufferCmd` struct in crate `ocl`.">
    <meta name="keywords" content="rust, rustlang, rust-lang, BufferCmd">

    <title>ocl::builders::BufferCmd - Rust</title>

    <link rel="stylesheet" type="text/css" href="../../normalize.css">
    <link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle">
    
    <link rel="stylesheet" type="text/css" href="../../dark.css">
    <link rel="stylesheet" type="text/css" href="../../main.css" id="themeStyle">
    <script src="../../storage.js"></script>
    

    
    
</head>
<body class="rustdoc struct">
    <!--[if lte IE 8]>
    <div class="warning">
        This old browser is unsupported and will most likely display funky
        things.
    </div>
    <![endif]-->

    

    <nav class="sidebar">
        <div class="sidebar-menu">&#9776;</div>
        
        <p class='location'>Struct BufferCmd</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#methods">Methods</a><div class="sidebar-links"><a href="#method.read">read</a><a href="#method.write">write</a><a href="#method.map">map</a><a href="#method.copy">copy</a><a href="#method.copy_to_image">copy_to_image</a><a href="#method.gl_acquire">gl_acquire</a><a href="#method.gl_release">gl_release</a><a href="#method.fill">fill</a><a href="#method.queue">queue</a><a href="#method.block">block</a><a href="#method.offset">offset</a><a href="#method.rect">rect</a><a href="#method.ewait">ewait</a><a href="#method.enew">enew</a><a href="#method.enq">enq</a></div></div><p class='location'><a href='../index.html'>ocl</a>::<wbr><a href='index.html'>builders</a></p><script>window.sidebarCurrent = {name: 'BufferCmd', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div>
    </nav>

    <div class="theme-picker">
        <button id="theme-picker" aria-label="Pick another theme!">
            <img src="../../brush.svg" width="18" alt="Pick another theme!">
        </button>
        <div id="theme-choices"></div>
    </div>
    <script src="../../theme.js"></script>
    <nav class="sub">
        <form class="search-form js-only">
            <div class="search-container">
                <input class="search-input" name="search"
                       autocomplete="off"
                       placeholder="Click or press ‘S’ to search, ‘?’ for more options…"
                       type="search">
            </div>
        </form>
    </nav>

    <section id='main' class="content">
<h1 class='fqn'><span class='in-band'>Struct <a href='../index.html'>ocl</a>::<wbr><a href='index.html'>builders</a>::<wbr><a class="struct" href=''>BufferCmd</a></span><span class='out-of-band'><span id='render-detail'>
                   <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
                       [<span class='inner'>&#x2212;</span>]
                   </a>
               </span><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#164-173' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'><div class="docblock attributes">#[must_use = "commands do nothing unless enqueued"]
</div>pub struct BufferCmd&lt;'c, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'c + <a class="trait" href="../../ocl/traits/trait.OclPrm.html" title="trait ocl::traits::OclPrm">OclPrm</a>,&nbsp;</span> { /* fields omitted */ }</pre><div class='docblock'><p>A buffer command builder used to enqueue reads, writes, fills, and copies.</p>
<p>Create one by using <code>Buffer::cmd</code> or with shortcut methods such as
<code>Buffer::read</code> and <code>Buffer::write</code>.</p>
<h2 id="examples" class="section-header"><a href="#examples">Examples</a></h2>
<div class='information'><div class='tooltip ignore'>ⓘ<span class='tooltiptext'>This example is not tested</span></div></div><pre class="rust rust-example-rendered ignore">
<span class="comment">// Copies one buffer to another:</span>
<span class="ident">src_buffer</span>.<span class="ident">copy</span>(<span class="kw-2">&amp;</span><span class="ident">dst_buffer</span>, <span class="number">0</span>, <span class="ident">dst_buffer</span>.<span class="ident">len</span>()).<span class="ident">enq</span>().<span class="ident">unwrap</span>();

<span class="comment">// Writes from a vector to an buffer, waiting on an event:</span>
<span class="ident">buffer</span>.<span class="ident">write</span>(<span class="kw-2">&amp;</span><span class="ident">src_vec</span>).<span class="ident">ewait</span>(<span class="kw-2">&amp;</span><span class="ident">event</span>).<span class="ident">enq</span>().<span class="ident">unwrap</span>();

<span class="comment">// Reads from a buffer into a vector, waiting on an event list and</span>
<span class="comment">// filling a new empty event:</span>
<span class="ident">buffer</span>.<span class="ident">read</span>(<span class="kw-2">&amp;</span><span class="ident">dst_vec</span>).<span class="ident">ewait</span>(<span class="kw-2">&amp;</span><span class="ident">event_list</span>).<span class="ident">enew</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">empty_event</span>).<span class="ident">enq</span>().<span class="ident">unwrap</span>();

<span class="comment">// Reads without blocking:</span>
<span class="ident">buffer</span>.<span class="ident">read</span>(<span class="kw-2">&amp;</span><span class="ident">dst_vec</span>).<span class="ident">block</span>(<span class="bool-val">false</span>).<span class="ident">enew</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">empty_event</span>).<span class="ident">enq</span>().<span class="ident">unwrap</span>();
</pre>
</div>
                    <h2 id='methods' class='small-section-header'>
                      Methods<a href='#methods' class='anchor'></a>
                    </h2>
                <h3 id='impl' class='impl'><span class='in-band'><code>impl&lt;'c, T&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'c + <a class="trait" href="../../ocl/traits/trait.OclPrm.html" title="trait ocl::traits::OclPrm">OclPrm</a>,&nbsp;</span></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#176-594' title='goto source code'>[src]</a></span></h3>
<div class='docblock'><p>[UNSTABLE]: All methods still in a state of flux.</p>
</div><div class='impl-items'><h4 id='method.read' class="method"><span id='read.v' class='invisible'><code>pub fn <a href='#method.read' class='fnname'>read</a>&lt;'d, R&gt;(self, dst_data: R) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;ReadDst&lt;'d, T&gt;&gt;,&nbsp;</span></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#208-216' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies that this command will be a read operation.</p>
<p>After calling this method, the blocking state of this command will
be unchanged.</p>
<h3 id="panics" class="section-header"><a href="#panics">Panics</a></h3>
<p>The command operation kind must not have already been specified.</p>
<h3 id="more-information" class="section-header"><a href="#more-information">More Information</a></h3>
<p>See <a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/clEnqueueReadBuffer.html">SDK</a> docs for more details.</p>
</div><h4 id='method.write' class="method"><span id='write.v' class='invisible'><code>pub fn <a href='#method.write' class='fnname'>write</a>&lt;'d, W&gt;(self, src_data: W) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferWriteCmd.html" title="struct ocl::builders::BufferWriteCmd">BufferWriteCmd</a>&lt;'c, 'd, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;W: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;WriteSrc&lt;'d, T&gt;&gt;,&nbsp;</span></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#229-237' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies that this command will be a write operation.</p>
<h3 id="panics-1" class="section-header"><a href="#panics-1">Panics</a></h3>
<p>The command operation kind must not have already been specified</p>
<h3 id="more-information-1" class="section-header"><a href="#more-information-1">More Information</a></h3>
<p>See <a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/clEnqueueWriteBuffer.html">SDK</a> docs for more details.</p>
</div><h4 id='method.map' class="method"><span id='map.v' class='invisible'><code>pub fn <a href='#method.map' class='fnname'>map</a>(self) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferMapCmd.html" title="struct ocl::builders::BufferMapCmd">BufferMapCmd</a>&lt;'c, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#261-266' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies that this command will be a map operation.</p>
<p>Enqueuing a map command will map a region of a buffer into the host
address space and return a <a href="struct.MemMap.html"><code>MemMap</code></a> or <a href="async/struct.FutureMemMap.html"><code>FutureMemMap</code></a>, allowing
access to this mapped region. Accessing memory via a <a href="struct.MemMap.html"><code>MemMap</code></a> is
exactly like using a <a href="https://doc.rust-lang.org/std/primitive.slice.html">slice</a>.</p>
<p>If <code>.block(..)</code> has been set it will be ignored. Non-blocking map
commands are enqueued using <code>::enq_async</code>.</p>
<h2 id="panics-2" class="section-header"><a href="#panics-2">Panics</a></h2>
<p>The command operation kind must not have already been specified</p>
<h3 id="more-information-2" class="section-header"><a href="#more-information-2">More Information</a></h3>
<p>See <a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/clEnqueueMapBuffer.html">SDK</a> docs for more details.</p>
</div><h4 id='method.copy' class="method"><span id='copy.v' class='invisible'><code>pub fn <a href='#method.copy' class='fnname'>copy</a>&lt;'d, M&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst_buffer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'d </a>M, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst_offset: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;len: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<br>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;'d: 'c,<br>&nbsp;&nbsp;&nbsp;&nbsp;M: <a class="trait" href="../../ocl_core/types/abs/trait.AsMem.html" title="trait ocl_core::types::abs::AsMem">AsMem</a>&lt;T&gt;,&nbsp;</span></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#289-300' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies that this command will be a copy operation.</p>
<p>If <code>.block(..)</code> has been set it will be ignored.</p>
<p><code>dst_offset</code> defaults to <code>0</code>, <code>len</code> defaults to the full length of the
source buffer.</p>
<h2 id="errors" class="section-header"><a href="#errors">Errors</a></h2>
<p>If this is a rectangular copy, <code>dst_offset</code> and <code>len</code> must be None.</p>
<h2 id="panics-3" class="section-header"><a href="#panics-3">Panics</a></h2>
<p>The command operation kind must not have already been specified</p>
<h3 id="more-information-3" class="section-header"><a href="#more-information-3">More Information</a></h3>
<p>See <a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/clEnqueueCopyBuffer.html">SDK</a> docs for more details.</p>
</div><h4 id='method.copy_to_image' class="method"><span id='copy_to_image.v' class='invisible'><code>pub fn <a href='#method.copy_to_image' class='fnname'>copy_to_image</a>&lt;'d&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;image: &amp;'d <a class="struct" href="../../ocl_core/types/abs/struct.Mem.html" title="struct ocl_core::types::abs::Mem">MemCore</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst_origin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 3]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;region: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 3]</a><br>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;'d: 'c,&nbsp;</span></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#310-317' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies that this command will be a copy to image operation.</p>
<p>If <code>.block(..)</code> has been set it will be ignored.</p>
<h2 id="panics-4" class="section-header"><a href="#panics-4">Panics</a></h2>
<p>The command operation kind must not have already been specified</p>
</div><h4 id='method.gl_acquire' class="method"><span id='gl_acquire.v' class='invisible'><code>pub fn <a href='#method.gl_acquire' class='fnname'>gl_acquire</a>(self) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#327-332' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies that this command will acquire a GL buffer.</p>
<p>If <code>.block(..)</code> has been set it will be ignored.</p>
<h2 id="panics-5" class="section-header"><a href="#panics-5">Panics</a></h2>
<p>The command operation kind must not have already been specified</p>
</div><h4 id='method.gl_release' class="method"><span id='gl_release.v' class='invisible'><code>pub fn <a href='#method.gl_release' class='fnname'>gl_release</a>(self) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#342-347' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies that this command will release a GL buffer.</p>
<p>If <code>.block(..)</code> has been set it will be ignored.</p>
<h2 id="panics-6" class="section-header"><a href="#panics-6">Panics</a></h2>
<p>The command operation kind must not have already been specified</p>
</div><h4 id='method.fill' class="method"><span id='fill.v' class='invisible'><code>pub fn <a href='#method.fill' class='fnname'>fill</a>(self, pattern: T, len: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#366-371' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies that this command will be a fill operation.</p>
<p>If <code>.block(..)</code> has been set it will be ignored.</p>
<p><code>pattern</code> is the vector or scalar value to repeat contiguously. <code>len</code>
is the overall size expressed in units of sizeof(T) If <code>len</code> is <code>None</code>,
the pattern will fill the entire buffer, otherwise, <code>len</code> must be
divisible by sizeof(<code>pattern</code>).</p>
<p>As an example if you want to fill the first 100 <code>cl_float4</code> sized
elements of a buffer, <code>pattern</code> would be a <code>cl_float4</code> and <code>len</code> would
be 400.</p>
<h2 id="panics-7" class="section-header"><a href="#panics-7">Panics</a></h2>
<p>The command operation kind must not have already been specified</p>
</div><h4 id='method.queue' class="method"><span id='queue.v' class='invisible'><code>pub fn <a href='#method.queue' class='fnname'>queue</a>(self, queue: &amp;'c <a class="struct" href="../../ocl/struct.Queue.html" title="struct ocl::Queue">Queue</a>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#378-381' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies a queue to use for this call only.</p>
<p>Overrides the buffer's default queue if one is set. If no default
queue is set, this method <strong>must</strong> be called before enqueuing the
command.</p>
</div><h4 id='method.block' class="method"><span id='block.v' class='invisible'><code>pub unsafe fn <a href='#method.block' class='fnname'>block</a>(self, block: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#406-409' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies whether or not to block the current thread until completion.</p>
<p>Ignored if this is not a read or write operation.</p>
<p>Default is <code>block = true</code>.</p>
<h2 id="safety" class="section-header"><a href="#safety">Safety</a></h2>
<p>When performing non-blocking reads or writes, the caller must ensure
that the data being read from or written to is not accessed improperly
until the command completes. Use events (<code>Event::wait_for</code>) or the
command queue (<code>Queue::finish</code>) to synchronize.</p>
<p>If possible, prefer instead to use <a href="builders/struct.BufferMapCmd.html"><code>::map</code></a> with <a href="builders/struct.BufferMapCmd.html#method.enq_async"><code>::enq_async</code></a> for
optimal performance and data integrity.</p>
</div><h4 id='method.offset' class="method"><span id='offset.v' class='invisible'><code>pub fn <a href='#method.offset' class='fnname'>offset</a>(self, offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#417-424' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Sets the linear offset for an operation.</p>
<h2 id="panics-8" class="section-header"><a href="#panics-8">Panics</a></h2>
<p>The 'shape' may not have already been set to rectangular by the
<code>::rect</code> function.</p>
</div><h4 id='method.rect' class="method"><span id='rect.v' class='invisible'><code>pub fn <a href='#method.rect' class='fnname'>rect</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;src_origin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 3]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst_origin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 3]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;region: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 3]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;src_row_pitch_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;src_slc_pitch_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst_row_pitch_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst_slc_pitch_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#433-445' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies that this will be a rectangularly shaped operation
(the default being linear).</p>
<p>Row and slice pitches must all be expressed in bytes.</p>
<p>Only valid for 'read', 'write', and 'copy' modes. Will error if used
with any other mode.</p>
</div><h4 id='method.ewait' class="method"><span id='ewait.v' class='invisible'><code>pub fn <a href='#method.ewait' class='fnname'>ewait</a>&lt;'e, Ewl&gt;(self, ewait: Ewl) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;'e: 'c,<br>&nbsp;&nbsp;&nbsp;&nbsp;Ewl: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="enum" href="../../ocl/builders/enum.ClWaitListPtrEnum.html" title="enum ocl::builders::ClWaitListPtrEnum">ClWaitListPtrEnum</a>&lt;'e&gt;&gt;,&nbsp;</span></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#475-479' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies an event or list of events to wait on before the command
will run.</p>
<p>When events generated using the <code>::enew</code> method of <strong>other</strong>,
previously enqueued commands are passed here (either individually or
as part of an <a href="struct.EventList.html"><code>EventList</code></a>), this command will not execute until
those commands have completed.</p>
<p>Using events can compliment the use of queues to order commands by
creating temporal dependencies between them (where commands in one
queue must wait for the completion of commands in another). Events can
also supplant queues altogether when, for example, using out-of-order
queues.</p>
<h1 id="example" class="section-header"><a href="#example">Example</a></h1>
<div class='information'><div class='tooltip ignore'>ⓘ<span class='tooltiptext'>This example is not tested</span></div></div><pre class="rust rust-example-rendered ignore">
<span class="comment">// Create an event list:</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">event_list</span> <span class="op">=</span> <span class="ident">EventList</span>::<span class="ident">new</span>();
<span class="comment">// Enqueue a kernel on `queue_1`, creating an event representing the kernel</span>
<span class="comment">// command in our list:</span>
<span class="ident">kernel</span>.<span class="ident">cmd</span>().<span class="ident">queue</span>(<span class="kw-2">&amp;</span><span class="ident">queue_1</span>).<span class="ident">enew</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">event_list</span>).<span class="ident">enq</span>()<span class="question-mark">?</span>;
<span class="comment">// Read from a buffer using `queue_2`, ensuring the read does not begin until</span>
<span class="comment">// after the kernel command has completed:</span>
<span class="ident">buffer</span>.<span class="ident">read</span>(<span class="ident">rwvec</span>.<span class="ident">clone</span>()).<span class="ident">queue</span>(<span class="kw-2">&amp;</span><span class="ident">queue_2</span>).<span class="ident">ewait</span>(<span class="kw-2">&amp;</span><span class="ident">event_list</span>).<span class="ident">enq_async</span>()<span class="question-mark">?</span>;</pre>
</div><h4 id='method.enew' class="method"><span id='enew.v' class='invisible'><code>pub fn <a href='#method.enew' class='fnname'>enew</a>&lt;'e, En&gt;(self, enew: En) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferCmd.html" title="struct ocl::builders::BufferCmd">BufferCmd</a>&lt;'c, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;'e: 'c,<br>&nbsp;&nbsp;&nbsp;&nbsp;En: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="enum" href="../../ocl/builders/enum.ClNullEventPtrEnum.html" title="enum ocl::builders::ClNullEventPtrEnum">ClNullEventPtrEnum</a>&lt;'e&gt;&gt;,&nbsp;</span></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#512-516' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Specifies the destination to store a new, optionally created event
associated with this command.</p>
<p>The destination can be a mutable reference to an empty event (created
using <a href="struct.Event.html#method.empty"><code>Event::empty</code></a>) or a mutable reference to an event list.</p>
<p>After this command is enqueued, the event in the destination can be
passed to the <code>::ewait</code> method of another command. Doing so will cause
the other command to wait until this command has completed before
executing.</p>
<p>Using events can compliment the use of queues to order commands by
creating temporal dependencies between them (where commands in one
queue must wait for the completion of commands in another). Events can
also supplant queues altogether when, for example, using out-of-order
queues.</p>
<h1 id="example-1" class="section-header"><a href="#example-1">Example</a></h1>
<div class='information'><div class='tooltip ignore'>ⓘ<span class='tooltiptext'>This example is not tested</span></div></div><pre class="rust rust-example-rendered ignore">
<span class="comment">// Create an event list:</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">event</span> <span class="op">=</span> <span class="ident">Event</span>::<span class="ident">empty</span>();
<span class="comment">// Enqueue a kernel on `queue_1`, creating an event representing the kernel</span>
<span class="comment">// command in our list:</span>
<span class="ident">kernel</span>.<span class="ident">cmd</span>().<span class="ident">queue</span>(<span class="kw-2">&amp;</span><span class="ident">queue_1</span>).<span class="ident">enew</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">event</span>).<span class="ident">enq</span>()<span class="question-mark">?</span>;
<span class="comment">// Read from a buffer using `queue_2`, ensuring the read does not begin until</span>
<span class="comment">// after the kernel command has completed:</span>
<span class="ident">buffer</span>.<span class="ident">read</span>(<span class="ident">rwvec</span>.<span class="ident">clone</span>()).<span class="ident">queue</span>(<span class="kw-2">&amp;</span><span class="ident">queue_2</span>).<span class="ident">ewait</span>(<span class="kw-2">&amp;</span><span class="ident">event</span>).<span class="ident">enq_async</span>()<span class="question-mark">?</span>;</pre>
</div><h4 id='method.enq' class="method"><span id='enq.v' class='invisible'><code>pub fn <a href='#method.enq' class='fnname'>enq</a>(self) -&gt; <a class="type" href="../../ocl/error/type.Result.html" title="type ocl::error::Result">OclResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#519-593' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Enqueues this command.</p>
</div></div></section>
    <section id='search' class="content hidden"></section>

    <section class="footer"></section>

    <aside id="help" class="hidden">
        <div>
            <h1 class="hidden">Help</h1>

            <div class="shortcuts">
                <h2>Keyboard Shortcuts</h2>

                <dl>
                    <dt><kbd>?</kbd></dt>
                    <dd>Show this help dialog</dd>
                    <dt><kbd>S</kbd></dt>
                    <dd>Focus the search field</dd>
                    <dt><kbd>↑</kbd></dt>
                    <dd>Move up in search results</dd>
                    <dt><kbd>↓</kbd></dt>
                    <dd>Move down in search results</dd>
                    <dt><kbd>↹</kbd></dt>
                    <dd>Switch tab</dd>
                    <dt><kbd>&#9166;</kbd></dt>
                    <dd>Go to active search result</dd>
                    <dt><kbd>+</kbd></dt>
                    <dd>Expand all sections</dd>
                    <dt><kbd>-</kbd></dt>
                    <dd>Collapse all sections</dd>
                </dl>
            </div>

            <div class="infos">
                <h2>Search Tricks</h2>

                <p>
                    Prefix searches with a type followed by a colon (e.g.
                    <code>fn:</code>) to restrict the search to a given type.
                </p>

                <p>
                    Accepted types are: <code>fn</code>, <code>mod</code>,
                    <code>struct</code>, <code>enum</code>,
                    <code>trait</code>, <code>type</code>, <code>macro</code>,
                    and <code>const</code>.
                </p>

                <p>
                    Search functions by type signature (e.g.
                    <code>vec -> usize</code> or <code>* -> vec</code>)
                </p>
            </div>
        </div>
    </aside>

    

    <script>
        window.rootPath = "../../";
        window.currentCrate = "ocl";
    </script>
    <script src="../../main.js"></script>
    <script defer src="../../search-index.js"></script>
</body>
</html>