mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 07:08:04 +02:00
docs: Regenerate.
This commit is contained in:
parent
da65ac6bba
commit
1a7b2f7e95
7 changed files with 2160 additions and 39 deletions
2
src/gallium/docs/build/html/.buildinfo
vendored
2
src/gallium/docs/build/html/.buildinfo
vendored
|
|
@ -1,4 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 337274cf474a8d2d6871c416a4911d5e
|
||||
config: e48279c15771d329f916579cf997b5a9
|
||||
tags: fbb0d17656682115ca4d033fb2f83ba1
|
||||
|
|
|
|||
85
src/gallium/docs/build/html/_sources/context.txt
vendored
85
src/gallium/docs/build/html/_sources/context.txt
vendored
|
|
@ -25,6 +25,21 @@ CSO objects handled by the context object:
|
|||
* :ref:`Shader`: These have two sets of methods. ``*_fs_state`` is for
|
||||
fragment shaders, and ``*_vs_state`` is for vertex shaders.
|
||||
|
||||
|
||||
Resource Binding State
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This state describes how resources in various flavours (textures,
|
||||
buffers, surfaces) are bound to the driver.
|
||||
|
||||
|
||||
* ``set_constant_buffer``
|
||||
* ``set_framebuffer_state``
|
||||
* ``set_fragment_sampler_textures``
|
||||
* ``set_vertex_sampler_textures``
|
||||
* ``set_vertex_buffers``
|
||||
|
||||
|
||||
Non-CSO State
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
|
|
@ -35,47 +50,79 @@ objects. They all follow simple, one-method binding calls, e.g.
|
|||
* ``set_edgeflags``
|
||||
* ``set_blend_color``
|
||||
* ``set_clip_state``
|
||||
* ``set_constant_buffer``
|
||||
* ``set_framebuffer_state``
|
||||
* ``set_polygon_stipple``
|
||||
* ``set_scissor_state``
|
||||
* ``set_viewport_state``
|
||||
* ``set_fragment_sampler_textures``
|
||||
* ``set_vertex_sampler_textures``
|
||||
* ``set_vertex_buffers``
|
||||
* ``set_vertex_elements``
|
||||
|
||||
Queries
|
||||
|
||||
Clearing
|
||||
^^^^^^^^
|
||||
|
||||
``clear`` initializes some or all of the surfaces currently bound to
|
||||
the framebuffer to particular RGBA, depth, or stencil values.
|
||||
|
||||
Clear is one of the most difficult concepts to nail down to a single
|
||||
interface and it seems likely that we will want to add additional
|
||||
clear paths, for instance clearing surfaces not bound to the
|
||||
framebuffer, or read-modify-write clears such as depth-only or
|
||||
stencil-only clears of packed depth-stencil buffers.
|
||||
|
||||
|
||||
Drawing
|
||||
^^^^^^^
|
||||
|
||||
Queries can be created with ``create_query`` and deleted with
|
||||
``destroy_query``. To enable a query, use ``begin_query``, and when finished,
|
||||
use ``end_query`` to stop the query. Finally, ``get_query_result`` is used
|
||||
to retrieve the results.
|
||||
|
||||
VBO Drawing
|
||||
^^^^^^^^^^^
|
||||
|
||||
``draw_arrays``
|
||||
|
||||
``draw_elements``
|
||||
|
||||
``draw_range_elements``
|
||||
|
||||
|
||||
Queries
|
||||
^^^^^^^
|
||||
|
||||
Queries gather some statistic from the 3D pipeline over one or more
|
||||
draws. Queries may be nested, though no state tracker currently
|
||||
exercises this.
|
||||
|
||||
Queries can be created with ``create_query`` and deleted with
|
||||
``destroy_query``. To enable a query, use ``begin_query``, and when finished,
|
||||
use ``end_query`` to stop the query. Finally, ``get_query_result`` is used
|
||||
to retrieve the results.
|
||||
|
||||
Flushing
|
||||
^^^^^^^^
|
||||
|
||||
``flush``
|
||||
|
||||
Surface Drawing
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
Resource Busy Queries
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
``is_texture_referenced``
|
||||
|
||||
``is_buffer_referenced``
|
||||
|
||||
|
||||
|
||||
Blitting
|
||||
^^^^^^^^
|
||||
|
||||
These methods emulate classic blitter controls. They are not guaranteed to be
|
||||
available; if they are set to NULL, then they are not present.
|
||||
|
||||
These methods operate directly on ``pipe_surface`` objects, and stand
|
||||
apart from any 3D state in the context. Blitting functionality may be
|
||||
moved to a separate abstraction at some point in the future.
|
||||
|
||||
``surface_fill`` performs a fill operation on a section of a surface.
|
||||
|
||||
``surface_copy`` blits a region of a surface to a region of another surface,
|
||||
provided that both surfaces are the same format. The source and destination
|
||||
may be the same surface, and overlapping blits are permitted.
|
||||
|
||||
``clear`` initializes entire buffers to an RGBA, depth, or stencil value,
|
||||
depending on the formats of the buffers. Use ``set_framebuffer_state`` to
|
||||
specify the buffers to clear.
|
||||
The interfaces to these calls are likely to change to make it easier
|
||||
for a driver to batch multiple blits with the same source and
|
||||
destination.
|
||||
|
||||
|
|
|
|||
1180
src/gallium/docs/build/html/_sources/tgsi.txt
vendored
1180
src/gallium/docs/build/html/_sources/tgsi.txt
vendored
File diff suppressed because it is too large
Load diff
69
src/gallium/docs/build/html/context.html
vendored
69
src/gallium/docs/build/html/context.html
vendored
|
|
@ -68,6 +68,18 @@ fragment samplers, and they are bound in groups.
|
|||
fragment shaders, and <tt class="docutils literal"><span class="pre">*_vs_state</span></tt> is for vertex shaders.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="resource-binding-state">
|
||||
<h3>Resource Binding State<a class="headerlink" href="#resource-binding-state" title="Permalink to this headline">¶</a></h3>
|
||||
<p>This state describes how resources in various flavours (textures,
|
||||
buffers, surfaces) are bound to the driver.</p>
|
||||
<ul class="simple">
|
||||
<li><tt class="docutils literal"><span class="pre">set_constant_buffer</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_framebuffer_state</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_fragment_sampler_textures</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_vertex_sampler_textures</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_vertex_buffers</span></tt></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="non-cso-state">
|
||||
<h3>Non-CSO State<a class="headerlink" href="#non-cso-state" title="Permalink to this headline">¶</a></h3>
|
||||
<p>These pieces of state are too small, variable, and/or trivial to have CSO
|
||||
|
|
@ -77,42 +89,61 @@ objects. They all follow simple, one-method binding calls, e.g.
|
|||
<li><tt class="docutils literal"><span class="pre">set_edgeflags</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_blend_color</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_clip_state</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_constant_buffer</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_framebuffer_state</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_polygon_stipple</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_scissor_state</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_viewport_state</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_fragment_sampler_textures</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_vertex_sampler_textures</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_vertex_buffers</span></tt></li>
|
||||
<li><tt class="docutils literal"><span class="pre">set_vertex_elements</span></tt></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="clearing">
|
||||
<h3>Clearing<a class="headerlink" href="#clearing" title="Permalink to this headline">¶</a></h3>
|
||||
<p><tt class="docutils literal"><span class="pre">clear</span></tt> initializes some or all of the surfaces currently bound to
|
||||
the framebuffer to particular RGBA, depth, or stencil values.</p>
|
||||
<p>Clear is one of the most difficult concepts to nail down to a single
|
||||
interface and it seems likely that we will want to add additional
|
||||
clear paths, for instance clearing surfaces not bound to the
|
||||
framebuffer, or read-modify-write clears such as depth-only or
|
||||
stencil-only clears of packed depth-stencil buffers.</p>
|
||||
</div>
|
||||
<div class="section" id="drawing">
|
||||
<h3>Drawing<a class="headerlink" href="#drawing" title="Permalink to this headline">¶</a></h3>
|
||||
<p><tt class="docutils literal"><span class="pre">draw_arrays</span></tt></p>
|
||||
<p><tt class="docutils literal"><span class="pre">draw_elements</span></tt></p>
|
||||
<p><tt class="docutils literal"><span class="pre">draw_range_elements</span></tt></p>
|
||||
</div>
|
||||
<div class="section" id="queries">
|
||||
<h3>Queries<a class="headerlink" href="#queries" title="Permalink to this headline">¶</a></h3>
|
||||
<p>Queries gather some statistic from the 3D pipeline over one or more
|
||||
draws. Queries may be nested, though no state tracker currently
|
||||
exercises this.</p>
|
||||
<p>Queries can be created with <tt class="docutils literal"><span class="pre">create_query</span></tt> and deleted with
|
||||
<tt class="docutils literal"><span class="pre">destroy_query</span></tt>. To enable a query, use <tt class="docutils literal"><span class="pre">begin_query</span></tt>, and when finished,
|
||||
use <tt class="docutils literal"><span class="pre">end_query</span></tt> to stop the query. Finally, <tt class="docutils literal"><span class="pre">get_query_result</span></tt> is used
|
||||
to retrieve the results.</p>
|
||||
</div>
|
||||
<div class="section" id="vbo-drawing">
|
||||
<h3>VBO Drawing<a class="headerlink" href="#vbo-drawing" title="Permalink to this headline">¶</a></h3>
|
||||
<p><tt class="docutils literal"><span class="pre">draw_arrays</span></tt></p>
|
||||
<p><tt class="docutils literal"><span class="pre">draw_elements</span></tt></p>
|
||||
<p><tt class="docutils literal"><span class="pre">draw_range_elements</span></tt></p>
|
||||
<div class="section" id="flushing">
|
||||
<h3>Flushing<a class="headerlink" href="#flushing" title="Permalink to this headline">¶</a></h3>
|
||||
<p><tt class="docutils literal"><span class="pre">flush</span></tt></p>
|
||||
</div>
|
||||
<div class="section" id="surface-drawing">
|
||||
<h3>Surface Drawing<a class="headerlink" href="#surface-drawing" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="resource-busy-queries">
|
||||
<h3>Resource Busy Queries<a class="headerlink" href="#resource-busy-queries" title="Permalink to this headline">¶</a></h3>
|
||||
<p><tt class="docutils literal"><span class="pre">is_texture_referenced</span></tt></p>
|
||||
<p><tt class="docutils literal"><span class="pre">is_buffer_referenced</span></tt></p>
|
||||
</div>
|
||||
<div class="section" id="blitting">
|
||||
<h3>Blitting<a class="headerlink" href="#blitting" title="Permalink to this headline">¶</a></h3>
|
||||
<p>These methods emulate classic blitter controls. They are not guaranteed to be
|
||||
available; if they are set to NULL, then they are not present.</p>
|
||||
<p>These methods operate directly on <tt class="docutils literal"><span class="pre">pipe_surface</span></tt> objects, and stand
|
||||
apart from any 3D state in the context. Blitting functionality may be
|
||||
moved to a separate abstraction at some point in the future.</p>
|
||||
<p><tt class="docutils literal"><span class="pre">surface_fill</span></tt> performs a fill operation on a section of a surface.</p>
|
||||
<p><tt class="docutils literal"><span class="pre">surface_copy</span></tt> blits a region of a surface to a region of another surface,
|
||||
provided that both surfaces are the same format. The source and destination
|
||||
may be the same surface, and overlapping blits are permitted.</p>
|
||||
<p><tt class="docutils literal"><span class="pre">clear</span></tt> initializes entire buffers to an RGBA, depth, or stencil value,
|
||||
depending on the formats of the buffers. Use <tt class="docutils literal"><span class="pre">set_framebuffer_state</span></tt> to
|
||||
specify the buffers to clear.</p>
|
||||
<p>The interfaces to these calls are likely to change to make it easier
|
||||
for a driver to batch multiple blits with the same source and
|
||||
destination.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -128,10 +159,14 @@ specify the buffers to clear.</p>
|
|||
<li><a class="reference external" href="">Context</a><ul>
|
||||
<li><a class="reference external" href="#methods">Methods</a><ul>
|
||||
<li><a class="reference external" href="#cso-state">CSO State</a></li>
|
||||
<li><a class="reference external" href="#resource-binding-state">Resource Binding State</a></li>
|
||||
<li><a class="reference external" href="#non-cso-state">Non-CSO State</a></li>
|
||||
<li><a class="reference external" href="#clearing">Clearing</a></li>
|
||||
<li><a class="reference external" href="#drawing">Drawing</a></li>
|
||||
<li><a class="reference external" href="#queries">Queries</a></li>
|
||||
<li><a class="reference external" href="#vbo-drawing">VBO Drawing</a></li>
|
||||
<li><a class="reference external" href="#surface-drawing">Surface Drawing</a></li>
|
||||
<li><a class="reference external" href="#flushing">Flushing</a></li>
|
||||
<li><a class="reference external" href="#resource-busy-queries">Resource Busy Queries</a></li>
|
||||
<li><a class="reference external" href="#blitting">Blitting</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
19
src/gallium/docs/build/html/index.html
vendored
19
src/gallium/docs/build/html/index.html
vendored
|
|
@ -49,7 +49,24 @@
|
|||
<li class="toctree-l2"><a class="reference external" href="intro.html#what-is-gallium">What is Gallium?</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference external" href="tgsi.html">TGSI</a></li>
|
||||
<li class="toctree-l1"><a class="reference external" href="tgsi.html">TGSI</a><ul>
|
||||
<li class="toctree-l2"><a class="reference external" href="tgsi.html#from-gl-nv-vertex-program">From GL_NV_vertex_program</a></li>
|
||||
<li class="toctree-l2"><a class="reference external" href="tgsi.html#gl-nv-vertex-program2">GL_NV_vertex_program2</a></li>
|
||||
<li class="toctree-l2"><a class="reference external" href="tgsi.html#gl-nv-gpu-program4">GL_NV_gpu_program4</a></li>
|
||||
<li class="toctree-l2"><a class="reference external" href="tgsi.html#gl-nv-geometry-program4">GL_NV_geometry_program4</a></li>
|
||||
<li class="toctree-l2"><a class="reference external" href="tgsi.html#glsl">GLSL</a></li>
|
||||
<li class="toctree-l2"><a class="reference external" href="tgsi.html#ps-2-x">ps_2_x</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference external" href="tgsi.html#explanation-of-symbols-used">Explanation of symbols used</a><ul>
|
||||
<li class="toctree-l2"><a class="reference external" href="tgsi.html#functions">Functions</a></li>
|
||||
<li class="toctree-l2"><a class="reference external" href="tgsi.html#keywords">Keywords</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference external" href="tgsi.html#other-tokens">Other tokens</a><ul>
|
||||
<li class="toctree-l2"><a class="reference external" href="tgsi.html#declaration-semantic">Declaration Semantic</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference external" href="screen.html">Screen</a><ul>
|
||||
<li class="toctree-l2"><a class="reference external" href="screen.html#methods">Methods</a></li>
|
||||
</ul>
|
||||
|
|
|
|||
2
src/gallium/docs/build/html/searchindex.js
vendored
2
src/gallium/docs/build/html/searchindex.js
vendored
File diff suppressed because one or more lines are too long
842
src/gallium/docs/build/html/tgsi.html
vendored
842
src/gallium/docs/build/html/tgsi.html
vendored
|
|
@ -51,6 +51,823 @@
|
|||
for describing shaders. Since Gallium is inherently shaderful, shaders are
|
||||
an important part of the API. TGSI is the only intermediate representation
|
||||
used by all drivers.</p>
|
||||
<div class="section" id="from-gl-nv-vertex-program">
|
||||
<h2>From GL_NV_vertex_program<a class="headerlink" href="#from-gl-nv-vertex-program" title="Permalink to this headline">¶</a></h2>
|
||||
<p>ARL - Address Register Load</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/a6a788a4144ea0b8be244aad870806646081b809.png" alt="dst.x = \lfloor src.x\rfloor
|
||||
|
||||
dst.y = \lfloor src.y\rfloor
|
||||
|
||||
dst.z = \lfloor src.z\rfloor
|
||||
|
||||
dst.w = \lfloor src.w\rfloor" /></p>
|
||||
</div><p>MOV - Move</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/723d0548eae0d4f8738fcf051e2e56bce034e7d4.png" alt="dst.x = src.x
|
||||
|
||||
dst.y = src.y
|
||||
|
||||
dst.z = src.z
|
||||
|
||||
dst.w = src.w" /></p>
|
||||
</div><p>LIT - Light Coefficients</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/758e5c32fbcca15fadbbf1ee7cb5967466f056e9.png" alt="dst.x = 1
|
||||
|
||||
dst.y = max(src.x, 0)
|
||||
|
||||
dst.z = (src.x > 0) ? max(src.y, 0)^{clamp(src.w, -128, 128))} : 0
|
||||
|
||||
dst.w = 1" /></p>
|
||||
</div><p>RCP - Reciprocal</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/c9bc0e532b3b63ed42567436058b919bc78442ce.png" alt="dst.x = \frac{1}{src.x}
|
||||
|
||||
dst.y = \frac{1}{src.x}
|
||||
|
||||
dst.z = \frac{1}{src.x}
|
||||
|
||||
dst.w = \frac{1}{src.x}" /></p>
|
||||
</div><p>RSQ - Reciprocal Square Root</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/70d1866ff09388f68ff5f0f88719006a59e19187.png" alt="dst.x = \frac{1}{\sqrt{|src.x|}}
|
||||
|
||||
dst.y = \frac{1}{\sqrt{|src.x|}}
|
||||
|
||||
dst.z = \frac{1}{\sqrt{|src.x|}}
|
||||
|
||||
dst.w = \frac{1}{\sqrt{|src.x|}}" /></p>
|
||||
</div><p>EXP - Approximate Exponential Base 2</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/61a735a5ca4687a35d98a8d42c127cb425b16eed.png" alt="dst.x = 2^{\lfloor src.x\rfloor}
|
||||
|
||||
dst.y = src.x - \lfloor src.x\rfloor
|
||||
|
||||
dst.z = 2^{src.x}
|
||||
|
||||
dst.w = 1" /></p>
|
||||
</div><p>LOG - Approximate Logarithm Base 2</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/f71ea96f5550b90a162f1d7a8b754eeb9b0d126e.png" alt="dst.x = \lfloor\log_2{|src.x|}\rfloor
|
||||
|
||||
dst.y = \frac{|src.x|}{2^{\lfloor\log_2{|src.x|}\rfloor}}
|
||||
|
||||
dst.z = \log_2{|src.x|}
|
||||
|
||||
dst.w = 1" /></p>
|
||||
</div><p>MUL - Multiply</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/8d727b11852ddbb13fb91083a0ce71ea2a47306f.png" alt="dst.x = src0.x \times src1.x
|
||||
|
||||
dst.y = src0.y \times src1.y
|
||||
|
||||
dst.z = src0.z \times src1.z
|
||||
|
||||
dst.w = src0.w \times src1.w" /></p>
|
||||
</div><p>ADD - Add</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/419ee673cdf363cbe29df99a84db18bf74b83cc4.png" alt="dst.x = src0.x + src1.x
|
||||
|
||||
dst.y = src0.y + src1.y
|
||||
|
||||
dst.z = src0.z + src1.z
|
||||
|
||||
dst.w = src0.w + src1.w" /></p>
|
||||
</div><p>DP3 - 3-component Dot Product</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/cd11030c4826718fe39618e48ae07d9298184a65.png" alt="dst.x = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z
|
||||
|
||||
dst.y = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z
|
||||
|
||||
dst.z = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z
|
||||
|
||||
dst.w = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z" /></p>
|
||||
</div><p>DP4 - 4-component Dot Product</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/efbae5a733577ba979c4f08fa0e1de5e31953b92.png" alt="dst.x = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z + src0.w \times src1.w
|
||||
|
||||
dst.y = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z + src0.w \times src1.w
|
||||
|
||||
dst.z = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z + src0.w \times src1.w
|
||||
|
||||
dst.w = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z + src0.w \times src1.w" /></p>
|
||||
</div><p>DST - Distance Vector</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/6d0d5702a6e475d584f295bd4f0fa80a70b70ee5.png" alt="dst.x = 1
|
||||
|
||||
dst.y = src0.y \times src1.y
|
||||
|
||||
dst.z = src0.z
|
||||
|
||||
dst.w = src1.w" /></p>
|
||||
</div><p>MIN - Minimum</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/73dec9e78c22629aa3379d21ccc96b1a5c5d2dbd.png" alt="dst.x = min(src0.x, src1.x)
|
||||
|
||||
dst.y = min(src0.y, src1.y)
|
||||
|
||||
dst.z = min(src0.z, src1.z)
|
||||
|
||||
dst.w = min(src0.w, src1.w)" /></p>
|
||||
</div><p>MAX - Maximum</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/1ad10aa070bc12ee93fca94040edb8900468ae29.png" alt="dst.x = max(src0.x, src1.x)
|
||||
|
||||
dst.y = max(src0.y, src1.y)
|
||||
|
||||
dst.z = max(src0.z, src1.z)
|
||||
|
||||
dst.w = max(src0.w, src1.w)" /></p>
|
||||
</div><p>SLT - Set On Less Than</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/b1db3ad26718bdcf3d1afeb866f1fc595230786d.png" alt="dst.x = (src0.x < src1.x) ? 1 : 0
|
||||
|
||||
dst.y = (src0.y < src1.y) ? 1 : 0
|
||||
|
||||
dst.z = (src0.z < src1.z) ? 1 : 0
|
||||
|
||||
dst.w = (src0.w < src1.w) ? 1 : 0" /></p>
|
||||
</div><p>SGE - Set On Greater Equal Than</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/bb15ac1bdb0b295273a7c57060899063cf618a95.png" alt="dst.x = (src0.x >= src1.x) ? 1 : 0
|
||||
|
||||
dst.y = (src0.y >= src1.y) ? 1 : 0
|
||||
|
||||
dst.z = (src0.z >= src1.z) ? 1 : 0
|
||||
|
||||
dst.w = (src0.w >= src1.w) ? 1 : 0" /></p>
|
||||
</div><p>MAD - Multiply And Add</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/cb4e90af76c03c927762a3c33e989ce2c41f5be5.png" alt="dst.x = src0.x \times src1.x + src2.x
|
||||
|
||||
dst.y = src0.y \times src1.y + src2.y
|
||||
|
||||
dst.z = src0.z \times src1.z + src2.z
|
||||
|
||||
dst.w = src0.w \times src1.w + src2.w" /></p>
|
||||
</div><p>SUB - Subtract</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/d96d8a97260276b9db5e903a05339b869391856f.png" alt="dst.x = src0.x - src1.x
|
||||
|
||||
dst.y = src0.y - src1.y
|
||||
|
||||
dst.z = src0.z - src1.z
|
||||
|
||||
dst.w = src0.w - src1.w" /></p>
|
||||
</div><p>LRP - Linear Interpolate</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/cf94ae7663599af8dc7ada12a43b33ca5083044a.png" alt="dst.x = src0.x \times (src1.x - src2.x) + src2.x
|
||||
|
||||
dst.y = src0.y \times (src1.y - src2.y) + src2.y
|
||||
|
||||
dst.z = src0.z \times (src1.z - src2.z) + src2.z
|
||||
|
||||
dst.w = src0.w \times (src1.w - src2.w) + src2.w" /></p>
|
||||
</div><p>CND - Condition</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/f9be0a9bff61d950cb768b8d10c66a45377f3124.png" alt="dst.x = (src2.x > 0.5) ? src0.x : src1.x
|
||||
|
||||
dst.y = (src2.y > 0.5) ? src0.y : src1.y
|
||||
|
||||
dst.z = (src2.z > 0.5) ? src0.z : src1.z
|
||||
|
||||
dst.w = (src2.w > 0.5) ? src0.w : src1.w" /></p>
|
||||
</div><p>DP2A - 2-component Dot Product And Add</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/abcd8a9f57fcaecc5e5c14835fa7438b08b4009d.png" alt="dst.x = src0.x \times src1.x + src0.y \times src1.y + src2.x
|
||||
|
||||
dst.y = src0.x \times src1.x + src0.y \times src1.y + src2.x
|
||||
|
||||
dst.z = src0.x \times src1.x + src0.y \times src1.y + src2.x
|
||||
|
||||
dst.w = src0.x \times src1.x + src0.y \times src1.y + src2.x" /></p>
|
||||
</div><p>FRAC - Fraction</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/df45d09eb32da9798269d030845962e4d92e26de.png" alt="dst.x = src.x - \lfloor src.x\rfloor
|
||||
|
||||
dst.y = src.y - \lfloor src.y\rfloor
|
||||
|
||||
dst.z = src.z - \lfloor src.z\rfloor
|
||||
|
||||
dst.w = src.w - \lfloor src.w\rfloor" /></p>
|
||||
</div><p>CLAMP - Clamp</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/56093f3e51016bf4a7784ed66cb8628202f58b2d.png" alt="dst.x = clamp(src0.x, src1.x, src2.x)
|
||||
|
||||
dst.y = clamp(src0.y, src1.y, src2.y)
|
||||
|
||||
dst.z = clamp(src0.z, src1.z, src2.z)
|
||||
|
||||
dst.w = clamp(src0.w, src1.w, src2.w)" /></p>
|
||||
</div><p>FLR - Floor</p>
|
||||
<p>This is identical to ARL.</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/a6a788a4144ea0b8be244aad870806646081b809.png" alt="dst.x = \lfloor src.x\rfloor
|
||||
|
||||
dst.y = \lfloor src.y\rfloor
|
||||
|
||||
dst.z = \lfloor src.z\rfloor
|
||||
|
||||
dst.w = \lfloor src.w\rfloor" /></p>
|
||||
</div><p>ROUND - Round</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/226c98a475a610bdeb91b4fbf51261cf8721d8f6.png" alt="dst.x = round(src.x)
|
||||
|
||||
dst.y = round(src.y)
|
||||
|
||||
dst.z = round(src.z)
|
||||
|
||||
dst.w = round(src.w)" /></p>
|
||||
</div><p>EX2 - Exponential Base 2</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/0210d258bc676109314169f2dd4320059387500c.png" alt="dst.x = 2^{src.x}
|
||||
|
||||
dst.y = 2^{src.x}
|
||||
|
||||
dst.z = 2^{src.x}
|
||||
|
||||
dst.w = 2^{src.x}" /></p>
|
||||
</div><p>LG2 - Logarithm Base 2</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/1b910bba9c9c6d11618b234335f33413d4f76ee6.png" alt="dst.x = \log_2{src.x}
|
||||
|
||||
dst.y = \log_2{src.x}
|
||||
|
||||
dst.z = \log_2{src.x}
|
||||
|
||||
dst.w = \log_2{src.x}" /></p>
|
||||
</div><p>POW - Power</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/290ad5e39fd561a8616e6eb9abc488c8615b36c7.png" alt="dst.x = src0.x^{src1.x}
|
||||
|
||||
dst.y = src0.x^{src1.x}
|
||||
|
||||
dst.z = src0.x^{src1.x}
|
||||
|
||||
dst.w = src0.x^{src1.x}" /></p>
|
||||
</div><p>XPD - Cross Product</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/751ec5401cf0d30257850404124ddad65cd5c0b2.png" alt="dst.x = src0.y \times src1.z - src1.y \times src0.z
|
||||
|
||||
dst.y = src0.z \times src1.x - src1.z \times src0.x
|
||||
|
||||
dst.z = src0.x \times src1.y - src1.x \times src0.y
|
||||
|
||||
dst.w = 1" /></p>
|
||||
</div><p>ABS - Absolute</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/ad452a9162cb4c5aeb7638cac156cf04155c968a.png" alt="dst.x = |src.x|
|
||||
|
||||
dst.y = |src.y|
|
||||
|
||||
dst.z = |src.z|
|
||||
|
||||
dst.w = |src.w|" /></p>
|
||||
</div><p>RCC - Reciprocal Clamped</p>
|
||||
<p>XXX cleanup on aisle three</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/f5fe168fde58a4d9fb87b5ef1e8b532f02f3a7cb.png" alt="dst.x = (1 / src.x) > 0 ? clamp(1 / src.x, 5.42101e-020, 1.884467e+019) : clamp(1 / src.x, -1.884467e+019, -5.42101e-020)
|
||||
|
||||
dst.y = (1 / src.x) > 0 ? clamp(1 / src.x, 5.42101e-020, 1.884467e+019) : clamp(1 / src.x, -1.884467e+019, -5.42101e-020)
|
||||
|
||||
dst.z = (1 / src.x) > 0 ? clamp(1 / src.x, 5.42101e-020, 1.884467e+019) : clamp(1 / src.x, -1.884467e+019, -5.42101e-020)
|
||||
|
||||
dst.w = (1 / src.x) > 0 ? clamp(1 / src.x, 5.42101e-020, 1.884467e+019) : clamp(1 / src.x, -1.884467e+019, -5.42101e-020)" /></p>
|
||||
</div><p>DPH - Homogeneous Dot Product</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/2049740526a3bf3b01a0793817069df1d2b217a6.png" alt="dst.x = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z + src1.w
|
||||
|
||||
dst.y = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z + src1.w
|
||||
|
||||
dst.z = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z + src1.w
|
||||
|
||||
dst.w = src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z + src1.w" /></p>
|
||||
</div><p>COS - Cosine</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/ade7e8ec73d74fb03022a40c9a69055c7a0a937b.png" alt="dst.x = \cos{src.x}
|
||||
|
||||
dst.y = \cos{src.x}
|
||||
|
||||
dst.z = \cos{src.x}
|
||||
|
||||
dst.w = \cos{src.w}" /></p>
|
||||
</div><p>DDX - Derivative Relative To X</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/5846a9ccdaf9e3c8c9ffa099acee7e80c7cc0d4b.png" alt="dst.x = partialx(src.x)
|
||||
|
||||
dst.y = partialx(src.y)
|
||||
|
||||
dst.z = partialx(src.z)
|
||||
|
||||
dst.w = partialx(src.w)" /></p>
|
||||
</div><p>DDY - Derivative Relative To Y</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/f89c54b3cac95d930ef70dffa6dc62db5fac05a6.png" alt="dst.x = partialy(src.x)
|
||||
|
||||
dst.y = partialy(src.y)
|
||||
|
||||
dst.z = partialy(src.z)
|
||||
|
||||
dst.w = partialy(src.w)" /></p>
|
||||
</div><p>KILP - Predicated Discard</p>
|
||||
<blockquote>
|
||||
discard</blockquote>
|
||||
<p>PK2H - Pack Two 16-bit Floats</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>PK2US - Pack Two Unsigned 16-bit Scalars</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>PK4B - Pack Four Signed 8-bit Scalars</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>PK4UB - Pack Four Unsigned 8-bit Scalars</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>RFL - Reflection Vector</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/6dfa1d81b7272fac743c04c8f5fbd74bb42639b4.png" alt="dst.x = 2 \times (src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z) / (src0.x \times src0.x + src0.y \times src0.y + src0.z \times src0.z) \times src0.x - src1.x
|
||||
|
||||
dst.y = 2 \times (src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z) / (src0.x \times src0.x + src0.y \times src0.y + src0.z \times src0.z) \times src0.y - src1.y
|
||||
|
||||
dst.z = 2 \times (src0.x \times src1.x + src0.y \times src1.y + src0.z \times src1.z) / (src0.x \times src0.x + src0.y \times src0.y + src0.z \times src0.z) \times src0.z - src1.z
|
||||
|
||||
dst.w = 1" /></p>
|
||||
</div><p>Considered for removal.</p>
|
||||
<p>SEQ - Set On Equal</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/5eac00cd4b387d141630ace602ed89d9a2ccc0ef.png" alt="dst.x = (src0.x == src1.x) ? 1 : 0
|
||||
dst.y = (src0.y == src1.y) ? 1 : 0
|
||||
dst.z = (src0.z == src1.z) ? 1 : 0
|
||||
dst.w = (src0.w == src1.w) ? 1 : 0" /></p>
|
||||
</div><p>SFL - Set On False</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/15f738543d3cfe86879e953e69536effdc1d97f5.png" alt="dst.x = 0
|
||||
dst.y = 0
|
||||
dst.z = 0
|
||||
dst.w = 0" /></p>
|
||||
</div><p>Considered for removal.</p>
|
||||
<p>SGT - Set On Greater Than</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/2bbfc816656154cb764d951002e595719a0cfce1.png" alt="dst.x = (src0.x > src1.x) ? 1 : 0
|
||||
dst.y = (src0.y > src1.y) ? 1 : 0
|
||||
dst.z = (src0.z > src1.z) ? 1 : 0
|
||||
dst.w = (src0.w > src1.w) ? 1 : 0" /></p>
|
||||
</div><p>SIN - Sine</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/0e5562f4fdf39c2754c17f761d76dcdb738dd233.png" alt="dst.x = \sin{src.x}
|
||||
|
||||
dst.y = \sin{src.x}
|
||||
|
||||
dst.z = \sin{src.x}
|
||||
|
||||
dst.w = \sin{src.w}" /></p>
|
||||
</div><p>SLE - Set On Less Equal Than</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/3f4ffe13f32660772fc7dbde7b56fff6308b347c.png" alt="dst.x = (src0.x <= src1.x) ? 1 : 0
|
||||
dst.y = (src0.y <= src1.y) ? 1 : 0
|
||||
dst.z = (src0.z <= src1.z) ? 1 : 0
|
||||
dst.w = (src0.w <= src1.w) ? 1 : 0" /></p>
|
||||
</div><p>SNE - Set On Not Equal</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/7a206759bbd06a8ef2385b8b7cf42b07521d36a8.png" alt="dst.x = (src0.x != src1.x) ? 1 : 0
|
||||
dst.y = (src0.y != src1.y) ? 1 : 0
|
||||
dst.z = (src0.z != src1.z) ? 1 : 0
|
||||
dst.w = (src0.w != src1.w) ? 1 : 0" /></p>
|
||||
</div><p>STR - Set On True</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/9a8aa4392d07b8c3fd7f2bc7ddee9eecd87e2c21.png" alt="dst.x = 1
|
||||
dst.y = 1
|
||||
dst.z = 1
|
||||
dst.w = 1" /></p>
|
||||
</div><p>TEX - Texture Lookup</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>TXD - Texture Lookup with Derivatives</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>TXP - Projective Texture Lookup</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>UP2H - Unpack Two 16-Bit Floats</p>
|
||||
<blockquote>
|
||||
<p>TBD</p>
|
||||
<p>Considered for removal.</p>
|
||||
</blockquote>
|
||||
<p>UP2US - Unpack Two Unsigned 16-Bit Scalars</p>
|
||||
<blockquote>
|
||||
<p>TBD</p>
|
||||
<p>Considered for removal.</p>
|
||||
</blockquote>
|
||||
<p>UP4B - Unpack Four Signed 8-Bit Values</p>
|
||||
<blockquote>
|
||||
<p>TBD</p>
|
||||
<p>Considered for removal.</p>
|
||||
</blockquote>
|
||||
<p>UP4UB - Unpack Four Unsigned 8-Bit Scalars</p>
|
||||
<blockquote>
|
||||
<p>TBD</p>
|
||||
<p>Considered for removal.</p>
|
||||
</blockquote>
|
||||
<p>X2D - 2D Coordinate Transformation</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/f94a20471877c44c7f623279934018e5c7348e83.png" alt="dst.x = src0.x + src1.x \times src2.x + src1.y \times src2.y
|
||||
dst.y = src0.y + src1.x \times src2.z + src1.y \times src2.w
|
||||
dst.z = src0.x + src1.x \times src2.x + src1.y \times src2.y
|
||||
dst.w = src0.y + src1.x \times src2.z + src1.y \times src2.w" /></p>
|
||||
</div><p>Considered for removal.</p>
|
||||
</div>
|
||||
<div class="section" id="gl-nv-vertex-program2">
|
||||
<h2>GL_NV_vertex_program2<a class="headerlink" href="#gl-nv-vertex-program2" title="Permalink to this headline">¶</a></h2>
|
||||
<p>ARA - Address Register Add</p>
|
||||
<blockquote>
|
||||
<p>TBD</p>
|
||||
<p>Considered for removal.</p>
|
||||
</blockquote>
|
||||
<p>ARR - Address Register Load With Round</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/226c98a475a610bdeb91b4fbf51261cf8721d8f6.png" alt="dst.x = round(src.x)
|
||||
|
||||
dst.y = round(src.y)
|
||||
|
||||
dst.z = round(src.z)
|
||||
|
||||
dst.w = round(src.w)" /></p>
|
||||
</div><p>BRA - Branch</p>
|
||||
<blockquote>
|
||||
<p>pc = target</p>
|
||||
<p>Considered for removal.</p>
|
||||
</blockquote>
|
||||
<p>CAL - Subroutine Call</p>
|
||||
<blockquote>
|
||||
push(pc)
|
||||
pc = target</blockquote>
|
||||
<p>RET - Subroutine Call Return</p>
|
||||
<blockquote>
|
||||
<p>pc = pop()</p>
|
||||
<p>Potential restrictions:
|
||||
times Only occurs at end of function.</p>
|
||||
</blockquote>
|
||||
<p>SSG - Set Sign</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/096db0cc9a735fa08397a0d940cb96025db3e3c8.png" alt="dst.x = (src.x > 0) ? 1 : (src.x < 0) ? -1 : 0
|
||||
|
||||
dst.y = (src.y > 0) ? 1 : (src.y < 0) ? -1 : 0
|
||||
|
||||
dst.z = (src.z > 0) ? 1 : (src.z < 0) ? -1 : 0
|
||||
|
||||
dst.w = (src.w > 0) ? 1 : (src.w < 0) ? -1 : 0" /></p>
|
||||
</div><p>CMP - Compare</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/53961253955fd2148f7cef66c79f2274c76f1954.png" alt="dst.x = (src0.x < 0) ? src1.x : src2.x
|
||||
|
||||
dst.y = (src0.y < 0) ? src1.y : src2.y
|
||||
|
||||
dst.z = (src0.z < 0) ? src1.z : src2.z
|
||||
|
||||
dst.w = (src0.w < 0) ? src1.w : src2.w" /></p>
|
||||
</div><p>KIL - Conditional Discard</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/ef0c42df6cde68a9c411ff8ce9ad1603b2715daf.png" alt="if (src.x < 0 || src.y < 0 || src.z < 0 || src.w < 0)
|
||||
discard
|
||||
endif" /></p>
|
||||
</div><p>SCS - Sine Cosine</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/1ed3a5293ecdad1b4847367fba55be005fe7f6ba.png" alt="dst.x = \cos{src.x}
|
||||
|
||||
dst.y = \sin{src.x}
|
||||
|
||||
dst.z = 0
|
||||
|
||||
dst.y = 1" /></p>
|
||||
</div><p>TXB - Texture Lookup With Bias</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>NRM - 3-component Vector Normalise</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/a6403ef2be1ec6b8eafb37e12b4e44adf240444e.png" alt="dst.x = src.x / (src.x \times src.x + src.y \times src.y + src.z \times src.z)
|
||||
|
||||
dst.y = src.y / (src.x \times src.x + src.y \times src.y + src.z \times src.z)
|
||||
|
||||
dst.z = src.z / (src.x \times src.x + src.y \times src.y + src.z \times src.z)
|
||||
|
||||
dst.w = 1" /></p>
|
||||
</div><p>DIV - Divide</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/f8d904588ef4d267803f5aee2f5789d9eda5b0e4.png" alt="dst.x = \frac{src0.x}{src1.x}
|
||||
|
||||
dst.y = \frac{src0.y}{src1.y}
|
||||
|
||||
dst.z = \frac{src0.z}{src1.z}
|
||||
|
||||
dst.w = \frac{src0.w}{src1.w}" /></p>
|
||||
</div><p>DP2 - 2-component Dot Product</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/052e6cb10c4892efcc9dfdd69fd3480adbae7bba.png" alt="dst.x = src0.x \times src1.x + src0.y \times src1.y
|
||||
|
||||
dst.y = src0.x \times src1.x + src0.y \times src1.y
|
||||
|
||||
dst.z = src0.x \times src1.x + src0.y \times src1.y
|
||||
|
||||
dst.w = src0.x \times src1.x + src0.y \times src1.y" /></p>
|
||||
</div><p>TXL - Texture Lookup With LOD</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>BRK - Break</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>IF - If</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>BGNFOR - Begin a For-Loop</p>
|
||||
<blockquote>
|
||||
<p>dst.x = floor(src.x)
|
||||
dst.y = floor(src.y)
|
||||
dst.z = floor(src.z)</p>
|
||||
<dl class="docutils">
|
||||
<dt>if (dst.y <= 0)</dt>
|
||||
<dd>pc = [matching ENDFOR] + 1</dd>
|
||||
</dl>
|
||||
<p>endif</p>
|
||||
<dl class="docutils">
|
||||
<dt>Note: The destination must be a loop register.</dt>
|
||||
<dd>The source must be a constant register.</dd>
|
||||
</dl>
|
||||
<p>Considered for cleanup / removal.</p>
|
||||
</blockquote>
|
||||
<p>REP - Repeat</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>ELSE - Else</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>ENDIF - End If</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>ENDFOR - End a For-Loop</p>
|
||||
<blockquote>
|
||||
<p>dst.x = dst.x + dst.z
|
||||
dst.y = dst.y - 1.0</p>
|
||||
<dl class="docutils">
|
||||
<dt>if (dst.y > 0)</dt>
|
||||
<dd>pc = [matching BGNFOR instruction] + 1</dd>
|
||||
</dl>
|
||||
<p>endif</p>
|
||||
<p>Note: The destination must be a loop register.</p>
|
||||
<p>Considered for cleanup / removal.</p>
|
||||
</blockquote>
|
||||
<p>ENDREP - End Repeat</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>PUSHA - Push Address Register On Stack</p>
|
||||
<blockquote>
|
||||
<p>push(src.x)
|
||||
push(src.y)
|
||||
push(src.z)
|
||||
push(src.w)</p>
|
||||
<p>Considered for cleanup / removal.</p>
|
||||
</blockquote>
|
||||
<p>POPA - Pop Address Register From Stack</p>
|
||||
<blockquote>
|
||||
<p>dst.w = pop()
|
||||
dst.z = pop()
|
||||
dst.y = pop()
|
||||
dst.x = pop()</p>
|
||||
<p>Considered for cleanup / removal.</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="section" id="gl-nv-gpu-program4">
|
||||
<h2>GL_NV_gpu_program4<a class="headerlink" href="#gl-nv-gpu-program4" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Support for these opcodes indicated by a special pipe capability bit (TBD).</p>
|
||||
<p>CEIL - Ceiling</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/03e47c613e946131569cb8ab9b88ae7b31a7a436.png" alt="dst.x = \lceil src.x\rceil
|
||||
|
||||
dst.y = \lceil src.y\rceil
|
||||
|
||||
dst.z = \lceil src.z\rceil
|
||||
|
||||
dst.w = \lceil src.w\rceil" /></p>
|
||||
</div><p>I2F - Integer To Float</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/fa38e14d5e8d8fcf15c70890e66ae5727443e531.png" alt="dst.x = (float) src.x
|
||||
|
||||
dst.y = (float) src.y
|
||||
|
||||
dst.z = (float) src.z
|
||||
|
||||
dst.w = (float) src.w" /></p>
|
||||
</div><p>NOT - Bitwise Not</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/ae28f3acd0883602c612198d7bcd7fc277972f31.png" alt="dst.x = ~src.x
|
||||
|
||||
dst.y = ~src.y
|
||||
|
||||
dst.z = ~src.z
|
||||
|
||||
dst.w = ~src.w" /></p>
|
||||
</div><p>TRUNC - Truncate</p>
|
||||
<p>XXX how is this different from floor?</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/4a413dd124842171577a13c5de2f45c92f1a0c59.png" alt="dst.x = trunc(src.x)
|
||||
|
||||
dst.y = trunc(src.y)
|
||||
|
||||
dst.z = trunc(src.z)
|
||||
|
||||
dst.w = trunc(src.w)" /></p>
|
||||
</div><p>SHL - Shift Left</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/6d8f34db37f5d0909f568cbd49dbb9bbd376629d.png" alt="dst.x = src0.x << src1.x
|
||||
|
||||
dst.y = src0.y << src1.x
|
||||
|
||||
dst.z = src0.z << src1.x
|
||||
|
||||
dst.w = src0.w << src1.x" /></p>
|
||||
</div><p>SHR - Shift Right</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/8bb711dcf8af2b6a34bd4cb19311c1c2c445ef5e.png" alt="dst.x = src0.x >> src1.x
|
||||
|
||||
dst.y = src0.y >> src1.x
|
||||
|
||||
dst.z = src0.z >> src1.x
|
||||
|
||||
dst.w = src0.w >> src1.x" /></p>
|
||||
</div><p>AND - Bitwise And</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/a37f2da4dd31c01e7c3afd0adab9bdf27c9d4805.png" alt="dst.x = src0.x & src1.x
|
||||
|
||||
dst.y = src0.y & src1.y
|
||||
|
||||
dst.z = src0.z & src1.z
|
||||
|
||||
dst.w = src0.w & src1.w" /></p>
|
||||
</div><p>OR - Bitwise Or</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/84549dcb2fc79ba332fa86d8b6bdac239d32097f.png" alt="dst.x = src0.x | src1.x
|
||||
|
||||
dst.y = src0.y | src1.y
|
||||
|
||||
dst.z = src0.z | src1.z
|
||||
|
||||
dst.w = src0.w | src1.w" /></p>
|
||||
</div><p>MOD - Modulus</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/10d8720201a3a554b1610687157a80fae1871f6d.png" alt="dst.x = src0.x \bmod src1.x
|
||||
|
||||
dst.y = src0.y \bmod src1.y
|
||||
|
||||
dst.z = src0.z \bmod src1.z
|
||||
|
||||
dst.w = src0.w \bmod src1.w" /></p>
|
||||
</div><p>XOR - Bitwise Xor</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/0f7e82c35f1b87f2d11da3fbc639085a54a5e7ec.png" alt="dst.x = src0.x ^ src1.x
|
||||
|
||||
dst.y = src0.y ^ src1.y
|
||||
|
||||
dst.z = src0.z ^ src1.z
|
||||
|
||||
dst.w = src0.w ^ src1.w" /></p>
|
||||
</div><p>SAD - Sum Of Absolute Differences</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/a4a04906e15ff687e62dcad0046baa9ae05eabb5.png" alt="dst.x = |src0.x - src1.x| + src2.x
|
||||
|
||||
dst.y = |src0.y - src1.y| + src2.y
|
||||
|
||||
dst.z = |src0.z - src1.z| + src2.z
|
||||
|
||||
dst.w = |src0.w - src1.w| + src2.w" /></p>
|
||||
</div><p>TXF - Texel Fetch</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>TXQ - Texture Size Query</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>CONT - Continue</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
</div>
|
||||
<div class="section" id="gl-nv-geometry-program4">
|
||||
<h2>GL_NV_geometry_program4<a class="headerlink" href="#gl-nv-geometry-program4" title="Permalink to this headline">¶</a></h2>
|
||||
<p>EMIT - Emit</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>ENDPRIM - End Primitive</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
</div>
|
||||
<div class="section" id="glsl">
|
||||
<h2>GLSL<a class="headerlink" href="#glsl" title="Permalink to this headline">¶</a></h2>
|
||||
<p>BGNLOOP - Begin a Loop</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>BGNSUB - Begin Subroutine</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>ENDLOOP - End a Loop</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>ENDSUB - End Subroutine</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>NOP - No Operation</p>
|
||||
<blockquote>
|
||||
Do nothing.</blockquote>
|
||||
<p>NRM4 - 4-component Vector Normalise</p>
|
||||
<div class="math">
|
||||
<p><img src="_images/math/740c183de3654a7e7ee772a640badd3b2844da81.png" alt="dst.x = \frac{src.x}{src.x \times src.x + src.y \times src.y + src.z \times src.z + src.w \times src.w}
|
||||
|
||||
dst.y = \frac{src.y}{src.x \times src.x + src.y \times src.y + src.z \times src.z + src.w \times src.w}
|
||||
|
||||
dst.z = \frac{src.z}{src.x \times src.x + src.y \times src.y + src.z \times src.z + src.w \times src.w}
|
||||
|
||||
dst.w = \frac{src.w}{src.x \times src.x + src.y \times src.y + src.z \times src.z + src.w \times src.w}" /></p>
|
||||
</div></div>
|
||||
<div class="section" id="ps-2-x">
|
||||
<h2>ps_2_x<a class="headerlink" href="#ps-2-x" title="Permalink to this headline">¶</a></h2>
|
||||
<p>CALLNZ - Subroutine Call If Not Zero</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>IFC - If</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
<p>BREAKC - Break Conditional</p>
|
||||
<blockquote>
|
||||
TBD</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="explanation-of-symbols-used">
|
||||
<h1>Explanation of symbols used<a class="headerlink" href="#explanation-of-symbols-used" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="functions">
|
||||
<h2>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h2>
|
||||
<blockquote>
|
||||
<p><img class="math" src="_images/math/49428192d366caf373c0af3c3261687f12b4c883.png" alt="|x|"/> Absolute value of <cite>x</cite>.</p>
|
||||
<p><img class="math" src="_images/math/1a7cd7095a9b123f81967d8d3b14d1e02b0174e7.png" alt="\lceil x \rceil"/> Ceiling of <cite>x</cite>.</p>
|
||||
<dl class="docutils">
|
||||
<dt>clamp(x,y,z) Clamp x between y and z.</dt>
|
||||
<dd>(x < y) ? y : (x > z) ? z : x</dd>
|
||||
</dl>
|
||||
<p><img class="math" src="_images/math/441416e660d25335f27e55334ac2a06e51541c97.png" alt="\lfloor x\rfloor"/> Floor of <cite>x</cite>.</p>
|
||||
<p><img class="math" src="_images/math/1ce288a883e98c3d1027d27f6246e7d3fdc4d78c.png" alt="\log_2{x}"/> Logarithm of <cite>x</cite>, base 2.</p>
|
||||
<dl class="docutils">
|
||||
<dt>max(x,y) Maximum of x and y.</dt>
|
||||
<dd>(x > y) ? x : y</dd>
|
||||
<dt>min(x,y) Minimum of x and y.</dt>
|
||||
<dd>(x < y) ? x : y</dd>
|
||||
</dl>
|
||||
<p>partialx(x) Derivative of x relative to fragment’s X.</p>
|
||||
<p>partialy(x) Derivative of x relative to fragment’s Y.</p>
|
||||
<p>pop() Pop from stack.</p>
|
||||
<p><img class="math" src="_images/math/8f9af910fe749481919573c0dd2b132118f19d19.png" alt="x^y"/> <cite>x</cite> to the power <cite>y</cite>.</p>
|
||||
<p>push(x) Push x on stack.</p>
|
||||
<p>round(x) Round x.</p>
|
||||
<p>trunc(x) Truncate x.</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="section" id="keywords">
|
||||
<h2>Keywords<a class="headerlink" href="#keywords" title="Permalink to this headline">¶</a></h2>
|
||||
<blockquote>
|
||||
<p>discard Discard fragment.</p>
|
||||
<p>dst First destination register.</p>
|
||||
<p>dst0 First destination register.</p>
|
||||
<p>pc Program counter.</p>
|
||||
<p>src First source register.</p>
|
||||
<p>src0 First source register.</p>
|
||||
<p>src1 Second source register.</p>
|
||||
<p>src2 Third source register.</p>
|
||||
<p>target Label of target instruction.</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="other-tokens">
|
||||
<h1>Other tokens<a class="headerlink" href="#other-tokens" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="declaration-semantic">
|
||||
<h2>Declaration Semantic<a class="headerlink" href="#declaration-semantic" title="Permalink to this headline">¶</a></h2>
|
||||
<blockquote>
|
||||
<p>Follows Declaration token if Semantic bit is set.</p>
|
||||
<p>Since its purpose is to link a shader with other stages of the pipeline,
|
||||
it is valid to follow only those Declaration tokens that declare a register
|
||||
either in INPUT or OUTPUT file.</p>
|
||||
<p>SemanticName field contains the semantic name of the register being declared.
|
||||
There is no default value.</p>
|
||||
<p>SemanticIndex is an optional subscript that can be used to distinguish
|
||||
different register declarations with the same semantic name. The default value
|
||||
is 0.</p>
|
||||
<p>The meanings of the individual semantic names are explained in the following
|
||||
sections.</p>
|
||||
</blockquote>
|
||||
<div class="section" id="face">
|
||||
<h3>FACE<a class="headerlink" href="#face" title="Permalink to this headline">¶</a></h3>
|
||||
<blockquote>
|
||||
<p>Valid only in a fragment shader INPUT declaration.</p>
|
||||
<p>FACE.x is negative when the primitive is back facing. FACE.x is positive
|
||||
when the primitive is front facing.</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
@ -59,6 +876,31 @@ used by all drivers.</p>
|
|||
</div>
|
||||
<div class="sphinxsidebar">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference external" href="">TGSI</a><ul>
|
||||
<li><a class="reference external" href="#from-gl-nv-vertex-program">From GL_NV_vertex_program</a></li>
|
||||
<li><a class="reference external" href="#gl-nv-vertex-program2">GL_NV_vertex_program2</a></li>
|
||||
<li><a class="reference external" href="#gl-nv-gpu-program4">GL_NV_gpu_program4</a></li>
|
||||
<li><a class="reference external" href="#gl-nv-geometry-program4">GL_NV_geometry_program4</a></li>
|
||||
<li><a class="reference external" href="#glsl">GLSL</a></li>
|
||||
<li><a class="reference external" href="#ps-2-x">ps_2_x</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference external" href="#explanation-of-symbols-used">Explanation of symbols used</a><ul>
|
||||
<li><a class="reference external" href="#functions">Functions</a></li>
|
||||
<li><a class="reference external" href="#keywords">Keywords</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference external" href="#other-tokens">Other tokens</a><ul>
|
||||
<li><a class="reference external" href="#declaration-semantic">Declaration Semantic</a><ul>
|
||||
<li><a class="reference external" href="#face">FACE</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="intro.html"
|
||||
title="previous chapter">Introduction</a></p>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue