<?xml version="1.0" encoding="UTF-8" standalone="yes"?><oembed><version><![CDATA[1.0]]></version><provider_name><![CDATA[The ryg blog]]></provider_name><provider_url><![CDATA[https://fgiesen.wordpress.com]]></provider_url><author_name><![CDATA[fgiesen]]></author_name><author_url><![CDATA[https://fgiesen.wordpress.com/author/fgiesen/]]></author_url><title><![CDATA[A trip through the Graphics Pipeline 2011:&nbsp;Index]]></title><type><![CDATA[link]]></type><html><![CDATA[<p>Welcome.</p>
<p>This is the index page for a series of blog posts I&#8217;m currently writing about the D3D/OpenGL graphics pipelines <em>as actually implemented by GPUs</em>. A lot of this is well known among graphics programmers, and there&#8217;s tons of papers on various bits and pieces of it, but one bit I&#8217;ve been annoyed with is that while there&#8217;s both broad overviews and very detailed information on individual components, there&#8217;s not much in between, and what little there is is mostly out of date.</p>
<p>This series is intended for graphics programmers that know a modern 3D API (at least OpenGL 2.0+ or D3D9+) well and want to know how it all looks under the hood. It&#8217;s <em>not</em> a description of the graphics pipeline for novices; if you haven&#8217;t used a 3D API, most if not all of this will be completely useless to you. I&#8217;m also assuming a working understanding of contemporary hardware design &#8211; you should at the very least know what registers, FIFOs, caches and pipelines are, and understand how they work. Finally, you need a working understanding of at least basic parallel programming mechanisms. A GPU is a massively parallel computer, there&#8217;s no way around it.</p>
<p>Some readers have commented that this is a really low-level description of the graphics pipeline and GPUs; well, it all depends on where you&#8217;re standing. GPU architects would call this a <em>high-level</em> description of a GPU. Not quite as high-level as the multicolored flowcharts you tend to see on hardware review sites whenever a new GPU generation arrives; but, to be honest, that kind of reporting tends to have a very low information density, even when it&#8217;s done well. Ultimately, it&#8217;s not meant to explain how anything actually <em>works</em> &#8211; it&#8217;s just technology porn that&#8217;s trying to show off shiny new gizmos. Well, I try to be a bit more substantial here, which unfortunately means less colors and less benchmark results, but instead lots and lots of text, a few mono-colored diagrams and even some (<em>shudder</em>) equations. If that&#8217;s okay with you, then here&#8217;s the index:</p>
<ul>
<li><a href="https://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-1/">Part 1</a>: Introduction; the Software stack.</li>
<li><a href="https://fgiesen.wordpress.com/2011/07/02/a-trip-through-the-graphics-pipeline-2011-part-2/">Part 2</a>: GPU memory architecture and the Command Processor.</li>
<li><a href="https://fgiesen.wordpress.com/2011/07/03/a-trip-through-the-graphics-pipeline-2011-part-3/">Part 3</a>: 3D pipeline overview, vertex processing.</li>
<li><a href="https://fgiesen.wordpress.com/2011/07/04/a-trip-through-the-graphics-pipeline-2011-part-4/">Part 4</a>: Texture samplers.</li>
<li><a href="https://fgiesen.wordpress.com/2011/07/05/a-trip-through-the-graphics-pipeline-2011-part-5/">Part 5</a>: Primitive Assembly, Clip/Cull, Projection, and Viewport transform.</li>
<li><a href="https://fgiesen.wordpress.com/2011/07/06/a-trip-through-the-graphics-pipeline-2011-part-6/">Part 6</a>: (Triangle) rasterization and setup.</li>
<li><a href="https://fgiesen.wordpress.com/2011/07/08/a-trip-through-the-graphics-pipeline-2011-part-7/">Part 7</a>: Z/Stencil processing, 3 different ways.</li>
<li><a href="https://fgiesen.wordpress.com/2011/07/10/a-trip-through-the-graphics-pipeline-2011-part-8/">Part 8</a>: Pixel processing &#8211; &#8220;fork phase&#8221;.</li>
<li><a href="https://fgiesen.wordpress.com/2011/07/12/a-trip-through-the-graphics-pipeline-2011-part-9/">Part 9</a>: Pixel processing &#8211; &#8220;join phase&#8221;.</li>
<li><a href="https://fgiesen.wordpress.com/2011/07/20/a-trip-through-the-graphics-pipeline-2011-part-10/">Part 10</a>: Geometry Shaders.</li>
<li><a href="https://fgiesen.wordpress.com/2011/08/14/a-trip-through-the-graphics-pipeline-2011-part-11/">Part 11</a>: Stream-Out.</li>
<li><a href="https://fgiesen.wordpress.com/2011/09/06/a-trip-through-the-graphics-pipeline-2011-part-12/">Part 12</a>: Tessellation.</li>
<li><a href="https://fgiesen.wordpress.com/2011/10/09/a-trip-through-the-graphics-pipeline-2011-part-13/">Part 13</a>: Compute Shaders.</li>
</ul>
<p>
  <a rel="license" href="http://creativecommons.org/publicdomain/zero/1.0/"><br />
    <img src="https://i0.wp.com/i.creativecommons.org/p/zero/1.0/88x31.png" style="border-style:none;" alt="CC0" /><br />
  </a><br />
  <br />
  To the extent possible under law,<br />
  <a rel="dct:publisher" href="https://fgiesen.wordpress.com"><br />
    <span>Fabian Giesen</span></a><br />
  has waived all copyright and related or neighboring rights to<br />
  <span>A trip through the Graphics Pipeline 2011</span>.</p>
]]></html><thumbnail_url><![CDATA[https://i0.wp.com/i.creativecommons.org/p/zero/1.0/88x31.png?fit=440%2C330]]></thumbnail_url><thumbnail_width><![CDATA[88]]></thumbnail_width><thumbnail_height><![CDATA[31]]></thumbnail_height></oembed>