rename upstream-man-pages to upstream-doc
[clinton/guile-figl.git] / upstream-man-pages / man4 / xhtml / glMemoryBarrier.xml
diff --git a/upstream-man-pages/man4/xhtml/glMemoryBarrier.xml b/upstream-man-pages/man4/xhtml/glMemoryBarrier.xml
deleted file mode 100644 (file)
index d5a3a79..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
-<!-- saved from url=(0013)about:internet -->
-<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="opengl-man.css" /><title>glMemoryBarrier - OpenGL 4 Reference Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.69.1" /></head><body><div class="refentry" lang="en" xml:lang="en"><a id="glMemoryBarrier"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glMemoryBarrier — defines a barrier ordering memory transactions</p></div><div class="refsynopsisdiv"><h2>C Specification</h2><div class="funcsynopsis"><p><code class="funcdef">void <b class="fsfunc">glMemoryBarrier</b>(</code>GLbitfield <var class="pdparam">barriers</var><code>)</code>;</p></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="parameters"></a><h2>Parameters</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>barriers</code></em></span></dt><dd><p>
-                    Specifies the barriers to insert. Must be a bitwise combination of <code class="constant">GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT</code>,
-                    <code class="constant">GL_ELEMENT_ARRAY_BARRIER_BIT</code>, <code class="constant">GL_UNIFORM_BARRIER_BIT</code>, <code class="constant">GL_TEXTURE_FETCH_BARRIER_BIT</code>,
-                    <code class="constant">GL_SHADER_IMAGE_ACCESS_BARRIER_BIT</code>, <code class="constant">GL_COMMAND_BARRIER_BIT</code>, <code class="constant">GL_PIXEL_BUFFER_BARRIER_BIT</code>,
-                    <code class="constant">GL_TEXTURE_UPDATE_BARRIER_BIT</code>, <code class="constant">GL_BUFFER_UPDATE_BARRIER_BIT</code>,
-                    <code class="constant">GL_FRAMEBUFFER_BARRIER_BIT</code>, <code class="constant">GL_TRANSFORM_FEEDBACK_BARRIER_BIT</code>, <code class="constant">GL_ATOMIC_COUNTER_BARRIER_BIT</code>,
-                    or <code class="constant">GL_SHADER_STORAGE_BARRIER_BIT</code>.
-                    If the special value <code class="constant">GL_ALL_BARRIER_BITS</code> is specified, all supported barriers will be inserted.
-                </p></dd></dl></div></div><div class="refsect1" lang="en" xml:lang="en"><a id="description"></a><h2>Description</h2><p>
-            <code class="function">glMemoryBarrier</code> defines a barrier ordering the memory transactions issued prior to the
-            command relative to those issued after the barrier. For the purposes of
-            this ordering, memory transactions performed by shaders are considered to
-            be issued by the rendering command that triggered the execution of the
-            shader.  <em class="parameter"><code>barriers</code></em> is a bitfield indicating the set of operations that
-            are synchronized with shader stores; the bits used in <em class="parameter"><code>barriers</code></em> are as
-            follows:
-        </p><p>
-            </p><div class="variablelist"><dl><dt><span class="term"><code class="constant">GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT</code></span></dt><dd><p>
-                        If set, vertex data sourced from
-                        buffer objects after the barrier will reflect data written by shaders
-                        prior to the barrier.  The set of buffer objects affected by this bit
-                        is derived from the buffer object bindings used for
-                        generic vertex attributes derived from the <code class="constant">GL_VERTEX_ATTRIB_ARRAY_BUFFER</code> bindings.
-                    </p></dd><dt><span class="term"><code class="constant">GL_ELEMENT_ARRAY_BARRIER_BIT</code></span></dt><dd><p>
-                        If set, vertex array indices sourced from
-                        buffer objects after the barrier will reflect data written by shaders
-                        prior to the barrier.  The buffer objects affected by this bit are
-                        derived from the <code class="constant">GL_ELEMENT_ARRAY_BUFFER</code> binding.
-                    </p></dd><dt><span class="term"><code class="constant">GL_UNIFORM_BARRIER_BIT</code></span></dt><dd><p>
-                        Shader uniforms sourced from buffer objects after the barrier will reflect data
-                        written by shaders prior to the barrier.
-                    </p></dd><dt><span class="term"><code class="constant">GL_TEXTURE_FETCH_BARRIER_BIT</code></span></dt><dd><p>
-                        Texture fetches from shaders, including
-                        fetches from buffer object memory via buffer textures, after the
-                        barrier will reflect data written by shaders prior to the barrier.
-                    </p></dd><dt><span class="term"><code class="constant">GL_SHADER_IMAGE_ACCESS_BARRIER_BIT</code></span></dt><dd><p>
-                        Memory accesses using shader image
-                        load, store, and atomic built-in functions issued after the barrier
-                        will reflect data written by shaders prior to the barrier.
-                        Additionally, image stores and atomics issued after the barrier will
-                        not execute until all memory accesses (e.g., loads, stores, texture
-                        fetches, vertex fetches) initiated prior to the barrier complete.
-                    </p></dd><dt><span class="term"><code class="constant">GL_COMMAND_BARRIER_BIT</code></span></dt><dd><p>
-                        Command data sourced from buffer objects by
-                        Draw*Indirect commands after the barrier will reflect data written by
-                        shaders prior to the barrier.  The buffer objects affected by this bit
-                        are derived from the <code class="constant">GL_DRAW_INDIRECT_BUFFER</code> binding.
-                     </p></dd><dt><span class="term"><code class="constant">GL_PIXEL_BUFFER_BARRIER_BIT</code></span></dt><dd><p>
-                        Reads and writes of buffer objects via the
-                        <code class="constant">GL_PIXEL_PACK_BUFFER</code> and <code class="constant">GL_PIXEL_UNPACK_BUFFER</code>
-                        bindings (via <a href="glReadPixels.xml"><span class="citerefentry"><span class="refentrytitle">glReadPixels</span></span></a>,
-                        <a href="glTexSubImage.xml"><span class="citerefentry"><span class="refentrytitle">glTexSubImage</span></span></a>, etc.) after the
-                        barrier will reflect data written by shaders prior to the barrier.
-                        Additionally, buffer object writes issued after the barrier will wait
-                        on the completion of all shader writes initiated prior to the barrier.
-                    </p></dd><dt><span class="term"><code class="constant">GL_TEXTURE_UPDATE_BARRIER_BIT</code></span></dt><dd><p>
-                        Writes to a texture via <code class="function">glTex(Sub)Image*</code>,
-                        <code class="function">glCopyTex(Sub)Image*</code>, <code class="function">glCompressedTex(Sub)Image*</code>, and reads via
-                        <a href="glGetTexImage.xml"><span class="citerefentry"><span class="refentrytitle">glGetTexImage</span></span></a> after the barrier will reflect data written by shaders
-                        prior to the barrier.  Additionally, texture writes from these
-                        commands issued after the barrier will not execute until all shader
-                        writes initiated prior to the barrier complete.
-                    </p></dd><dt><span class="term"><code class="constant">GL_BUFFER_UPDATE_BARRIER_BIT</code></span></dt><dd><p>
-                        Reads or writes via <a href="glBufferSubData.xml"><span class="citerefentry"><span class="refentrytitle">glBufferSubData</span></span></a>,
-                        <a href="glCopyBufferSubData.xml"><span class="citerefentry"><span class="refentrytitle">glCopyBufferSubData</span></span></a>,
-                        or <a href="glGetBufferSubData.xml"><span class="citerefentry"><span class="refentrytitle">glGetBufferSubData</span></span></a>, or
-                        to buffer object memory mapped by <a href="glMapBuffer.xml"><span class="citerefentry"><span class="refentrytitle">glMapBuffer</span></span></a>
-                        or <a href="glMapBufferRange.xml"><span class="citerefentry"><span class="refentrytitle">glMapBufferRange</span></span></a> after the barrier
-                        will reflect data written by shaders prior to the barrier.
-                        Additionally, writes via these commands issued after the barrier will
-                        wait on the completion of any shader writes to the same memory
-                        initiated prior to the barrier.
-                    </p></dd><dt><span class="term"><code class="constant">GL_FRAMEBUFFER_BARRIER_BIT</code></span></dt><dd><p>
-                        Reads and writes via framebuffer object
-                        attachments after the barrier will reflect data written by shaders
-                        prior to the barrier.  Additionally, framebuffer writes issued after
-                        the barrier will wait on the completion of all shader writes issued
-                        prior to the barrier.
-                    </p></dd><dt><span class="term"><code class="constant">GL_TRANSFORM_FEEDBACK_BARRIER_BIT</code></span></dt><dd><p>
-                        Writes via transform feedback
-                        bindings after the barrier will reflect data written by shaders prior
-                        to the barrier.  Additionally, transform feedback writes issued after
-                        the barrier will wait on the completion of all shader writes issued
-                        prior to the barrier.
-                    </p></dd><dt><span class="term"><code class="constant">GL_ATOMIC_COUNTER_BARRIER_BIT</code></span></dt><dd><p>
-                        Accesses to atomic counters after the
-                        barrier will reflect writes prior to the barrier.
-                    </p></dd><dt><span class="term"><code class="constant">GL_SHADER_STORAGE_BARRIER_BIT</code></span></dt><dd><p>
-                        Accesses to shader storage blocks after the
-                        barrier will reflect writes prior to the barrier.
-                    </p></dd></dl></div><p>
-        </p><p>
-            If <em class="parameter"><code>barriers</code></em> is <code class="constant">GL_ALL_BARRIER_BITS</code>, shader memory accesses
-            will be synchronized relative to all the operations described above.
-        </p><p>
-            Implementations may cache buffer object and texture image memory that
-            could be written by shaders in multiple caches; for example, there may be
-            separate caches for texture, vertex fetching, and one or more caches for
-            shader memory accesses.  Implementations are not required to keep these
-            caches coherent with shader memory writes.  Stores issued by one
-            invocation may not be immediately observable by other pipeline stages or
-            other shader invocations because the value stored may remain in a cache
-            local to the processor executing the store, or because data overwritten by
-            the store is still in a cache elsewhere in the system.  When <code class="function">glMemoryBarrier</code>
-            is called, the GL flushes and/or invalidates any caches relevant to the
-            operations specified by the <em class="parameter"><code>barriers</code></em> parameter to ensure consistent
-            ordering of operations across the barrier.
-        </p><p>
-            To allow for independent shader invocations to communicate by reads and
-            writes to a common memory address, image variables in the OpenGL Shading
-            Language may be declared as "coherent".  Buffer object or texture image
-            memory accessed through such variables may be cached only if caches are
-            automatically updated due to stores issued by any other shader invocation.
-            If the same address is accessed using both coherent and non-coherent
-            variables, the accesses using variables declared as coherent will observe
-            the results stored using coherent variables in other invocations.  Using
-            variables declared as "coherent" guarantees only that the results of
-            stores will be immediately visible to shader invocations using
-            similarly-declared variables; calling <code class="function">glMemoryBarrier</code> is required to ensure
-            that the stores are visible to other operations.
-        </p><p>
-            The following guidelines may be helpful in choosing when to use coherent
-            memory accesses and when to use barriers.
-        </p><p>
-            </p><div class="itemizedlist"><ul type="disc"><li><p>Data that are read-only or constant may be accessed without using
-                coherent variables or calling MemoryBarrier().  Updates to the
-                read-only data via API calls such as BufferSubData will invalidate
-                shader caches implicitly as required.</p></li><li><p>Data that are shared between shader invocations at a fine granularity
-                (e.g., written by one invocation, consumed by another invocation) should
-                use coherent variables to read and write the shared data.</p></li><li><p>Data written by one shader invocation and consumed by other shader
-                invocations launched as a result of its execution ("dependent
-                invocations") should use coherent variables in the producing shader
-                invocation and call memoryBarrier() after the last write.  The consuming
-                shader invocation should also use coherent variables.</p></li><li><p>Data written to image variables in one rendering pass and read by the
-                shader in a later pass need not use coherent variables or
-                memoryBarrier().  Calling MemoryBarrier() with the
-                SHADER_IMAGE_ACCESS_BARRIER_BIT set in <em class="parameter"><code>barriers</code></em> between passes is
-                necessary.</p></li><li><p>Data written by the shader in one rendering pass and read by another
-                mechanism (e.g., vertex or index buffer pulling) in a later pass need
-                not use coherent variables or memoryBarrier().  Calling
-                <code class="function">glMemoryBarrier</code> with the appropriate bits set in <em class="parameter"><code>barriers</code></em> between
-                passes is necessary.</p></li></ul></div><p>
-        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="notes"></a><h2>Notes</h2><p>
-            <code class="function">glMemoryBarrier</code> is available only if the GL version is 4.2 or higher.
-        </p><p>
-            <code class="constant">GL_SHADER_STORAGE_BARRIER_BIT</code> is available only if the GL version is 4.3 or higher.
-        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="errors"></a><h2>Errors</h2><p>
-            <code class="constant">GL_INVALID_VALUE</code> is generated if <em class="parameter"><code>barriers</code></em> contains any bits
-            other than those listed above, or is not the special value <code class="constant">GL_ALL_BARRIER_BITS</code>.
-        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="seealso"></a><h2>See Also</h2><p>
-            <a href="glBindImageTexture.xml"><span class="citerefentry"><span class="refentrytitle">glBindImageTexture</span></span></a>,
-            <a href="glBufferData.xml"><span class="citerefentry"><span class="refentrytitle">glBufferData</span></span></a>,
-            <a href="glMapBuffer.xml"><span class="citerefentry"><span class="refentrytitle">glMapBuffer</span></span></a>,
-            <a href="glMapBufferRange.xml"><span class="citerefentry"><span class="refentrytitle">glMapBufferRange</span></span></a>,
-            <a href="glFlushMappedBufferRange.xml"><span class="citerefentry"><span class="refentrytitle">glFlushMappedBufferRange</span></span></a>
-        </p></div><div class="refsect1" lang="en" xml:lang="en"><a id="Copyright"></a><h2>Copyright</h2><p>
-            Copyright <span class="trademark"></span>© 2011 Khronos Group. 
-            This material may be distributed subject to the terms and conditions set forth in 
-            the Open Publication License, v 1.0, 8 June 1999.
-            <a href="http://opencontent.org/openpub/" target="_top">http://opencontent.org/openpub/</a>.
-        </p></div></div></body></html>