diff options
Diffstat (limited to 'src/gallium/docs/build/html/tgsi.html')
-rw-r--r-- | src/gallium/docs/build/html/tgsi.html | 1029 |
1 files changed, 0 insertions, 1029 deletions
diff --git a/src/gallium/docs/build/html/tgsi.html b/src/gallium/docs/build/html/tgsi.html deleted file mode 100644 index 7954e1de40e..00000000000 --- a/src/gallium/docs/build/html/tgsi.html +++ /dev/null @@ -1,1029 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - - <title>TGSI — Gallium v0.3 documentation</title> - <link rel="stylesheet" href="_static/default.css" type="text/css" /> - <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT: '', - VERSION: '0.3', - COLLAPSE_MODINDEX: false, - FILE_SUFFIX: '.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <link rel="top" title="Gallium v0.3 documentation" href="index.html" /> - <link rel="next" title="Screen" href="screen.html" /> - <link rel="prev" title="Introduction" href="intro.html" /> - </head> - <body> - <div class="related"> - <h3>Navigation</h3> - <ul> - <li class="right" style="margin-right: 10px"> - <a href="genindex.html" title="General Index" - accesskey="I">index</a></li> - <li class="right" > - <a href="screen.html" title="Screen" - accesskey="N">next</a> |</li> - <li class="right" > - <a href="intro.html" title="Introduction" - accesskey="P">previous</a> |</li> - <li><a href="index.html">Gallium v0.3 documentation</a> »</li> - </ul> - </div> - - <div class="document"> - <div class="documentwrapper"> - <div class="bodywrapper"> - <div class="body"> - - <div class="section" id="tgsi"> -<h1>TGSI<a class="headerlink" href="#tgsi" title="Permalink to this headline">¶</a></h1> -<p>TGSI, Tungsten Graphics Shader Instructions, is an intermediate language -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="instruction-set"> -<h2>Instruction Set<a class="headerlink" href="#instruction-set" title="Permalink to this headline">¶</a></h2> -<div class="section" id="from-gl-nv-vertex-program"> -<h3>From GL_NV_vertex_program<a class="headerlink" href="#from-gl-nv-vertex-program" title="Permalink to this headline">¶</a></h3> -<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="from-gl-nv-vertex-program2"> -<h3>From GL_NV_vertex_program2<a class="headerlink" href="#from-gl-nv-vertex-program2" title="Permalink to this headline">¶</a></h3> -<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="from-gl-nv-gpu-program4"> -<h3>From GL_NV_gpu_program4<a class="headerlink" href="#from-gl-nv-gpu-program4" title="Permalink to this headline">¶</a></h3> -<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="from-gl-nv-geometry-program4"> -<h3>From GL_NV_geometry_program4<a class="headerlink" href="#from-gl-nv-geometry-program4" title="Permalink to this headline">¶</a></h3> -<p>EMIT - Emit</p> -<blockquote> -TBD</blockquote> -<p>ENDPRIM - End Primitive</p> -<blockquote> -TBD</blockquote> -</div> -<div class="section" id="from-glsl"> -<h3>From GLSL<a class="headerlink" href="#from-glsl" title="Permalink to this headline">¶</a></h3> -<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"> -<h3>ps_2_x<a class="headerlink" href="#ps-2-x" title="Permalink to this headline">¶</a></h3> -<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"> -<h2>Explanation of symbols used<a class="headerlink" href="#explanation-of-symbols-used" title="Permalink to this headline">¶</a></h2> -<div class="section" id="functions"> -<h3>Functions<a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h3> -<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"> -<h3>Keywords<a class="headerlink" href="#keywords" title="Permalink to this headline">¶</a></h3> -<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"> -<h2>Other tokens<a class="headerlink" href="#other-tokens" title="Permalink to this headline">¶</a></h2> -<div class="section" id="declaration-semantic"> -<h3>Declaration Semantic<a class="headerlink" href="#declaration-semantic" title="Permalink to this headline">¶</a></h3> -<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="tgsi-semantic-position"> -<h4>TGSI_SEMANTIC_POSITION<a class="headerlink" href="#tgsi-semantic-position" title="Permalink to this headline">¶</a></h4> -<p>Position, sometimes known as HPOS or WPOS for historical reasons, is the -location of the vertex in space, in <tt class="docutils literal"><span class="pre">(x,</span> <span class="pre">y,</span> <span class="pre">z,</span> <span class="pre">w)</span></tt> format. <tt class="docutils literal"><span class="pre">x</span></tt>, <tt class="docutils literal"><span class="pre">y</span></tt>, and <tt class="docutils literal"><span class="pre">z</span></tt> -are the Cartesian coordinates, and <tt class="docutils literal"><span class="pre">w</span></tt> is the homogenous coordinate and used -for the perspective divide, if enabled.</p> -<p>As a vertex shader output, position should be scaled to the viewport. When -used in fragment shaders, position will —</p> -<p>XXX — wait a minute. Should position be in [0,1] for x and y?</p> -<p>XXX additionally, is there a way to configure the perspective divide? it’s -accelerated on most chipsets AFAIK...</p> -<p>Position, if not specified, usually defaults to <tt class="docutils literal"><span class="pre">(0,</span> <span class="pre">0,</span> <span class="pre">0,</span> <span class="pre">1)</span></tt>, and can -be partially specified as <tt class="docutils literal"><span class="pre">(x,</span> <span class="pre">y,</span> <span class="pre">0,</span> <span class="pre">1)</span></tt> or <tt class="docutils literal"><span class="pre">(x,</span> <span class="pre">y,</span> <span class="pre">z,</span> <span class="pre">1)</span></tt>.</p> -<p>XXX usually? can we solidify that?</p> -</div> -<div class="section" id="tgsi-semantic-color"> -<h4>TGSI_SEMANTIC_COLOR<a class="headerlink" href="#tgsi-semantic-color" title="Permalink to this headline">¶</a></h4> -<p>Colors are used to, well, color the primitives. Colors are always in -<tt class="docutils literal"><span class="pre">(r,</span> <span class="pre">g,</span> <span class="pre">b,</span> <span class="pre">a)</span></tt> format.</p> -<p>If alpha is not specified, it defaults to 1.</p> -</div> -<div class="section" id="tgsi-semantic-bcolor"> -<h4>TGSI_SEMANTIC_BCOLOR<a class="headerlink" href="#tgsi-semantic-bcolor" title="Permalink to this headline">¶</a></h4> -<p>Back-facing colors are only used for back-facing polygons, and are only valid -in vertex shader outputs. After rasterization, all polygons are front-facing -and COLOR and BCOLOR end up occupying the same slots in the fragment, so -all BCOLORs effectively become regular COLORs in the fragment shader.</p> -</div> -<div class="section" id="tgsi-semantic-fog"> -<h4>TGSI_SEMANTIC_FOG<a class="headerlink" href="#tgsi-semantic-fog" title="Permalink to this headline">¶</a></h4> -<p>The fog coordinate historically has been used to replace the depth coordinate -for generation of fog in dedicated fog blocks. Gallium, however, does not use -dedicated fog acceleration, placing it entirely in the fragment shader -instead.</p> -<p>The fog coordinate should be written in <tt class="docutils literal"><span class="pre">(f,</span> <span class="pre">0,</span> <span class="pre">0,</span> <span class="pre">1)</span></tt> format. Only the first -component matters when writing from the vertex shader; the driver will ensure -that the coordinate is in this format when used as a fragment shader input.</p> -</div> -<div class="section" id="tgsi-semantic-psize"> -<h4>TGSI_SEMANTIC_PSIZE<a class="headerlink" href="#tgsi-semantic-psize" title="Permalink to this headline">¶</a></h4> -<p>PSIZE, or point size, is used to specify point sizes per-vertex. It should -be in <tt class="docutils literal"><span class="pre">(p,</span> <span class="pre">n,</span> <span class="pre">x,</span> <span class="pre">f)</span></tt> format, where <tt class="docutils literal"><span class="pre">p</span></tt> is the point size, <tt class="docutils literal"><span class="pre">n</span></tt> is the minimum -size, <tt class="docutils literal"><span class="pre">x</span></tt> is the maximum size, and <tt class="docutils literal"><span class="pre">f</span></tt> is the fade threshold.</p> -<p>XXX this is arb_vp. is this what we actually do? should double-check...</p> -<p>When using this semantic, be sure to set the appropriate state in the -<a class="reference external" href="cso/rasterizer.html#rasterizer"><em>Rasterizer</em></a> first.</p> -</div> -<div class="section" id="tgsi-semantic-generic"> -<h4>TGSI_SEMANTIC_GENERIC<a class="headerlink" href="#tgsi-semantic-generic" title="Permalink to this headline">¶</a></h4> -<p>Generic semantics are nearly always used for texture coordinate attributes, -in <tt class="docutils literal"><span class="pre">(s,</span> <span class="pre">t,</span> <span class="pre">r,</span> <span class="pre">q)</span></tt> format. <tt class="docutils literal"><span class="pre">t</span></tt> and <tt class="docutils literal"><span class="pre">r</span></tt> may be unused for certain kinds -of lookups, and <tt class="docutils literal"><span class="pre">q</span></tt> is the level-of-detail bias for biased sampling.</p> -<p>These attributes are called “generic” because they may be used for anything -else, including parameters, texture generation information, or anything that -can be stored inside a four-component vector.</p> -</div> -<div class="section" id="tgsi-semantic-normal"> -<h4>TGSI_SEMANTIC_NORMAL<a class="headerlink" href="#tgsi-semantic-normal" title="Permalink to this headline">¶</a></h4> -<p>XXX no clue.</p> -</div> -<div class="section" id="tgsi-semantic-face"> -<h4>TGSI_SEMANTIC_FACE<a class="headerlink" href="#tgsi-semantic-face" title="Permalink to this headline">¶</a></h4> -<p>FACE is the facing bit, to store the facing information for the fragment -shader. <tt class="docutils literal"><span class="pre">(f,</span> <span class="pre">0,</span> <span class="pre">0,</span> <span class="pre">1)</span></tt> is the format. The first component will be positive -when the fragment is front-facing, and negative when the component is -back-facing.</p> -</div> -<div class="section" id="tgsi-semantic-edgeflag"> -<h4>TGSI_SEMANTIC_EDGEFLAG<a class="headerlink" href="#tgsi-semantic-edgeflag" title="Permalink to this headline">¶</a></h4> -<p>XXX no clue</p> -</div> -</div> -</div> -</div> - - - </div> - </div> - </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="#instruction-set">Instruction Set</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="#from-gl-nv-vertex-program2">From GL_NV_vertex_program2</a></li> -<li><a class="reference external" href="#from-gl-nv-gpu-program4">From GL_NV_gpu_program4</a></li> -<li><a class="reference external" href="#from-gl-nv-geometry-program4">From GL_NV_geometry_program4</a></li> -<li><a class="reference external" href="#from-glsl">From 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="#tgsi-semantic-position">TGSI_SEMANTIC_POSITION</a></li> -<li><a class="reference external" href="#tgsi-semantic-color">TGSI_SEMANTIC_COLOR</a></li> -<li><a class="reference external" href="#tgsi-semantic-bcolor">TGSI_SEMANTIC_BCOLOR</a></li> -<li><a class="reference external" href="#tgsi-semantic-fog">TGSI_SEMANTIC_FOG</a></li> -<li><a class="reference external" href="#tgsi-semantic-psize">TGSI_SEMANTIC_PSIZE</a></li> -<li><a class="reference external" href="#tgsi-semantic-generic">TGSI_SEMANTIC_GENERIC</a></li> -<li><a class="reference external" href="#tgsi-semantic-normal">TGSI_SEMANTIC_NORMAL</a></li> -<li><a class="reference external" href="#tgsi-semantic-face">TGSI_SEMANTIC_FACE</a></li> -<li><a class="reference external" href="#tgsi-semantic-edgeflag">TGSI_SEMANTIC_EDGEFLAG</a></li> -</ul> -</li> -</ul> -</li> -</ul> -</li> -</ul> - - <h4>Previous topic</h4> - <p class="topless"><a href="intro.html" - title="previous chapter">Introduction</a></p> - <h4>Next topic</h4> - <p class="topless"><a href="screen.html" - title="next chapter">Screen</a></p> - <h3>This Page</h3> - <ul class="this-page-menu"> - <li><a href="_sources/tgsi.txt" - rel="nofollow">Show Source</a></li> - </ul> - <div id="searchbox" style="display: none"> - <h3>Quick search</h3> - <form class="search" action="search.html" method="get"> - <input type="text" name="q" size="18" /> - <input type="submit" value="Go" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> - <p class="searchtip" style="font-size: 90%"> - Enter search terms or a module, class or function name. - </p> - </div> - <script type="text/javascript">$('#searchbox').show(0);</script> - </div> - </div> - <div class="clearer"></div> - </div> - <div class="related"> - <h3>Navigation</h3> - <ul> - <li class="right" style="margin-right: 10px"> - <a href="genindex.html" title="General Index" - >index</a></li> - <li class="right" > - <a href="screen.html" title="Screen" - >next</a> |</li> - <li class="right" > - <a href="intro.html" title="Introduction" - >previous</a> |</li> - <li><a href="index.html">Gallium v0.3 documentation</a> »</li> - </ul> - </div> - <div class="footer"> - © Copyright 2009, VMWare, X.org, Nouveau. - Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.3. - </div> - </body> -</html>
\ No newline at end of file |