Render != Rasterize

Article: Tile-based Rasterization in Nvidia GPUs
By: Philip Taylor (philip.delete@this.zaynar.co.uk), August 2, 2016 6:53 pm
Room: Moderated Discussions
Peter McGuinness (peter.mcguinness.delete@this.gobrach.com) on August 2, 2016 10:05 am wrote:
>
> > The distinction here is that they are keeping the tile data in
> > on-chip buffers. Normally, that would be streamed out to DRAM.
>
> They are not. That's why you can see partly rendered tiles; they ARE writing out the results
> pixel by pixel as soon as each triangle is rasterised and not waiting for tile completion.

I don't think that's right - the reason you see partly-rendered tiles is that the pixel shader stops after a certain number of invocations, so none of the possibly-on-chip tile buffers will get updated any further, and they will eventually get flushed to RAM then displayed. The demo doesn't show that they are in on-chip buffers, it just shows the sequence that pixel shaders are invoked in - but it shows a sequence that is primarily grouped by location rather than by triangle index, which only makes sense if it was designed to benefit from some kind of large tile cache.

> > You are welcome to call it what you wish, but I chose the term that seemed most appropriate
> > to me. How would you distinguish between a TBDR and a TBR in your mind?
>
> There is an established taxonomy of GPU architectures. AMD and nvidia both use immediate mode, intel
> has used both immediate and TBR in various GPUs, they currently seem to use immediate. IMG uses TBDR
> with the 'deferred' designator to indicate that pixel shading is delayed until after visibility determination
> is complete (where possible) and ARM uses TBIR with the 'immediate' designator to indicate that they
> don't use that optimisation so the term 'tile based immediate mode' is already taken.

I think that's right - the significant difference is that Mali/PowerVR(/Adreno) defer all the rasterisation until they've done the vertex processing for every draw call in the entire frame, whereas NVIDIA only seems to defer rasterisation until it's done the vertex processing for up to a few thousand triangles of a single draw call; and older immediate-mode GPUs don't defer much at all.

In all cases, the deferring is done to support reordering of triangles to be more cache-friendly, which implies grouping them into tiles. But people normally say "tile-based" for GPUs that defer the entire frame, which has significant costs (latency, DRAM needed for the processed vertexes, awkward fit to the OpenGL API, etc) and one main benefit (zero wasted framebuffer DRAM traffic when used properly). From what I've seen, NVIDIA's approach has none of those costs, and doesn't have the same benefit either (it's not going to reduce framebuffer traffic at all in cases of overdraw between multiple draw calls; it's only going to help in much more limited cases). Calling it tile-based will make people think it's far more like mobile GPUs than it really is.

Maybe call it a "rasterizer triangle reorderer and tile cache" plus some adjectives like "large" or "new" or "improved".
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Article: Tile-based Rasterization in Nvidia GPUsDavid Kanter2016/08/01 12:01 AM
  Article: Tile-based Rasterization in Nvidia GPUsBenjamin2016/08/01 02:22 AM
    GM, M = Maxwell, Tile = YesJohn H2016/08/01 05:59 AM
      GM, M = Maxwell, Tile = YesDavid Kanter2016/08/01 08:33 AM
        Updated articleDavid Kanter2016/08/01 08:35 AM
    Article: Tile-based Rasterization in Nvidia GPUsDavid Kanter2017/01/17 05:56 PM
      Optimus (d*mn, it isn't blue now)blue2017/01/19 06:34 PM
    Probably not in earlier MaxwellsDavid Kanter2017/01/17 05:56 PM
  Article: Tile-based Rasterization in Nvidia GPUsDan2016/08/01 03:12 AM
    Article: Tile-based Rasterization in Nvidia GPUsGionatan Danti2016/08/01 03:20 AM
      Article: Tile-based Rasterization in Nvidia GPUsSimon Farnsworth2016/08/01 04:00 AM
      Article: Tile-based Rasterization in Nvidia GPUsGiGNiC2016/08/01 04:30 AM
      Not deferred, still immediate-modeDavid Kanter2016/08/01 07:25 AM
        Not deferred, still immediate-modeRob Clark2016/08/01 09:44 AM
          Not deferred, still immediate-modeRob Clark2016/08/01 10:12 AM
            Not deferred, still immediate-modeSeni2016/08/01 12:25 PM
              Not deferred, still immediate-modeRob Clark2016/08/01 02:38 PM
              Not deferred, still immediate-modevvid2016/08/03 12:59 AM
            Not deferred, still immediate-modePhilip Taylor2016/08/01 04:55 PM
              Not deferred, still immediate-modeRob Clark2016/08/01 05:56 PM
                Not deferred, still immediate-modePhilip Taylor2016/08/01 07:33 PM
                  Not deferred, still immediate-modePhilip Taylor2016/08/02 04:46 PM
                    Not deferred, still immediate-modePhilip Taylor2016/08/03 01:36 PM
    Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2016/08/01 06:48 AM
      Article: Tile-based Rasterization in Nvidia GPUsExophase2016/08/01 11:35 AM
        Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2016/08/04 01:22 AM
  Article: Tile-based Rasterization in Nvidia GPUsGionatan Danti2016/08/01 03:16 AM
    Not deferred, still immediate-modeDavid Kanter2016/08/01 07:40 AM
  Article: Tile-based Rasterization in Nvidia GPUsJohn H2016/08/01 06:13 AM
    Article: Tile-based Rasterization in Nvidia GPUsAndrei Frumusanu2016/08/01 06:21 AM
      Article: Tile-based Rasterization in Nvidia GPUsblue2016/08/01 08:58 AM
        Article: Tile-based Rasterization in Nvidia GPUsAndrei Frumusanu2016/08/01 10:38 AM
          Article: Tile-based Rasterization in Nvidia GPUsblue2016/08/01 01:02 PM
  Article: Tile-based Rasterization in Nvidia GPUsKlimax2016/08/01 07:14 AM
    Article: Tile-based Rasterization in Nvidia GPUsAaron Spink2016/08/01 07:29 AM
  Everybody using tilesvvid2016/08/01 09:45 AM
    Everybody using tilesRob Clark2016/08/01 09:49 AM
      Everybody using tileswumpus2016/08/01 11:29 AM
        Everybody using tilesSimon Farnsworth2016/08/01 01:01 PM
          Everybody using tileswumpus2016/08/02 07:57 AM
            Everybody using tilesSimon Farnsworth2016/08/02 08:12 AM
  Testing MethodologyDavid2016/08/01 01:22 PM
    Testing MethodologyJoel H2016/08/01 01:57 PM
      Testing MethodologyDavid2016/08/01 04:09 PM
  Flicker?Wanderer2016/08/01 05:08 PM
    Flicker?Philip Taylor2016/08/01 05:30 PM
      Flicker?Beastian2016/08/01 09:33 PM
    Flicker?David Kanter2016/08/01 06:19 PM
      Flicker?Wanderer2016/08/02 07:14 AM
  Article: Tile-based Rasterization in Nvidia GPUsPM2016/08/01 06:39 PM
    Article: Tile-based Rasterization in Nvidia GPUsGiGNiC2016/08/02 12:03 PM
    GCN Imagesvvid2016/08/03 12:22 AM
      GCN ImagesVertexMaster2016/08/04 10:06 AM
        GCN Imagesvvid2016/08/04 11:30 AM
          GCN ImagesVertexMaster2016/08/04 04:38 PM
            GCN Imagesvvid2016/08/05 03:30 AM
              GCN ImagesVertexMaster2016/08/05 05:16 AM
                TBDRvvid2016/08/05 09:15 AM
                GCN1.2?vvid2016/08/07 04:33 AM
  Sorry, this is not a tile based renderer.Peter McGuinness2016/08/02 08:11 AM
    Render != RasterizeDavid Kanter2016/08/02 08:30 AM
      Render != RasterizePeter McGuinness2016/08/02 08:43 AM
        Render != RasterizeDavid Kanter2016/08/02 09:45 AM
          Render != RasterizePeter McGuinness2016/08/02 10:05 AM
            Render != RasterizePhilip Taylor2016/08/02 06:53 PM
              Render != RasterizePeter McGuinness2016/08/02 09:41 PM
                Render != RasterizePhilip Taylor2016/08/03 03:41 AM
                  Render != RasterizePeter McGuinness2016/08/04 12:34 PM
                    Render != RasterizePhilip Taylor2016/08/04 04:06 PM
                      Render != RasterizeMontaray Jack2016/08/05 02:26 PM
                        Render != RasterizeJouni Osmala2016/08/05 11:49 PM
                          Render != RasterizeMegol2016/08/06 03:30 AM
                            Render != RasterizeJouni Osmala2016/08/06 09:08 AM
                              Scratching that itchMontaray Jack2016/08/06 10:42 AM
                            Render != RasterizeMontaray Jack2016/08/06 10:08 AM
  Article: Tile-based Rasterization in Nvidia GPUsDoug Patel2016/08/02 09:39 AM
  Article: Tile-based Rasterization in Nvidia GPUsMontaray Jack2016/08/02 10:35 AM
    Article: Tile-based Rasterization in Nvidia GPUsdglow2016/08/02 05:08 PM
      Article: Tile-based Rasterization in Nvidia GPUsMontaray Jack2016/08/03 04:43 AM
        Article: Tile-based Rasterization in Nvidia GPUsdglow2016/08/03 07:04 AM
          Article: Tile-based Rasterization in Nvidia GPUsmarees2016/08/03 12:46 PM
      Article: Tile-based Rasterization in Nvidia GPUsDavid Kanter2016/08/04 08:03 AM
        Article: Tile-based Rasterization in Nvidia GPUsMontaray Jack2016/08/04 11:47 AM
    Oh god, the spambots have finally found us (NT)Anon2017/01/17 05:27 AM
      Delete the messages ASAPGtoo2017/01/17 03:19 PM
  Article: Tile-based Rasterization in Nvidia GPUssteve m2017/05/10 05:16 PM
    Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2017/05/10 07:15 PM
      Article: Tile-based Rasterization in Nvidia GPUssteve m2017/05/11 10:11 AM
        Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2017/05/12 02:15 AM
          Article: Tile-based Rasterization in Nvidia GPUssteve m2017/05/16 11:49 AM
            Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2017/05/17 05:43 AM
              Article: Tile-based Rasterization in Nvidia GPUssteve m2017/05/17 08:35 PM
                Article: Tile-based Rasterization in Nvidia GPUspocak2017/05/18 04:19 PM
                  Article: Tile-based Rasterization in Nvidia GPUsDavid Kanter2017/05/20 07:55 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell tangerine? 🍊