Article: Tile-based Rasterization in Nvidia GPUs

Article: Tile-based Rasterization in Nvidia GPUs
By: steve m (steve.marton.delete@this.gmail.com), May 10, 2017 4:16 pm
Room: Moderated Discussions
David, have you re-assessed your statement that Nvidia uses a tile cache? Because that assessment is most likely false.

dispatch order

From your video it's clear that a single tile is not finalized before subsequent tiles are written to.

If you had a cache that was the size of a "tile", you would lose most gains if you decided to flush it before it's finished, to start rendering the next tile, and then the next, just to flush them halfway, and come back to finish rendering to the first tile. You're only utilizing your cache properly if you finish all work in it before you flush it. There's no indication of such a strategy here. Do you disagree?

What you are actually seeing is simply smart pixel shader dispatch order.

It seems clear to me that the coarse rasterizer can see more than one triangle at a time, and it has a fairly large output buffer. So it can buffer up several triangles per coarse tile, and dispatch those out of order to the fine rasterizer, which then dispatches the pixel shader wavefronts to the shader cores. But that's all it is. And you can see screen shots of AMD GCN GPUs with similar patterns showing definite out of order dispatch.

The GPU can use different strategies for shader dispatch order based on the numerous resources it has to juggle (attributes, interpolants, VGPR pressure limiting waves in flight, etc.), and based on the tiled memory layout of the render target (we all know render targets are not stored linearly in memory, again to optimize spacial coherence with respect to triangles on screen, especially small triangles).

The GPU presumably dispatches in an order that maximizes cache coherence, coherence with render target tiling, and maybe coherence in the various internal buffers (not "tile" buffers). Generally some sort of spacial coherence is implied by all that.

This test would be way more interesting with real world data, ie: finely tesselated meshes. In this case I think there would be little difference between the behavior of different GPUs, showing that there's no huge gain either way.

Not to mention multiple draw calls, where draw calls are obviously serialized (for all intents and purposes, though we know this is not quite true if we look at a shader thread trace).

However, your lofty claim has infected the internet, going so far that even Wikipedia quotes you on the Maxwell page, and links to the page on tile based deferred renderers, which Maxwell is obviously not. You did not make clear in your article that this has nothing to do with TBDR. And you didn't even mention in your video that if the triangles were from separate draw calls, there would be no such out of order dispatch. When people hear "tiled" they think TBDR aka PowerVR. People read a lot into these types of claims, so you could be more careful in your statements.
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Article: Tile-based Rasterization in Nvidia GPUsDavid Kanter2016/07/31 11:01 PM
  Article: Tile-based Rasterization in Nvidia GPUsBenjamin2016/08/01 01:22 AM
    GM, M = Maxwell, Tile = YesJohn H2016/08/01 04:59 AM
      GM, M = Maxwell, Tile = YesDavid Kanter2016/08/01 07:33 AM
        Updated articleDavid Kanter2016/08/01 07:35 AM
    Article: Tile-based Rasterization in Nvidia GPUsDavid Kanter2017/01/17 04:56 PM
      Optimus (d*mn, it isn't blue now)blue2017/01/19 05:34 PM
    Probably not in earlier MaxwellsDavid Kanter2017/01/17 04:56 PM
  Article: Tile-based Rasterization in Nvidia GPUsDan2016/08/01 02:12 AM
    Article: Tile-based Rasterization in Nvidia GPUsGionatan Danti2016/08/01 02:20 AM
      Article: Tile-based Rasterization in Nvidia GPUsSimon Farnsworth2016/08/01 03:00 AM
      Article: Tile-based Rasterization in Nvidia GPUsGiGNiC2016/08/01 03:30 AM
      Not deferred, still immediate-modeDavid Kanter2016/08/01 06:25 AM
        Not deferred, still immediate-modeRob Clark2016/08/01 08:44 AM
          Not deferred, still immediate-modeRob Clark2016/08/01 09:12 AM
            Not deferred, still immediate-modeSeni2016/08/01 11:25 AM
              Not deferred, still immediate-modeRob Clark2016/08/01 01:38 PM
              Not deferred, still immediate-modevvid2016/08/02 11:59 PM
            Not deferred, still immediate-modePhilip Taylor2016/08/01 03:55 PM
              Not deferred, still immediate-modeRob Clark2016/08/01 04:56 PM
                Not deferred, still immediate-modePhilip Taylor2016/08/01 06:33 PM
                  Not deferred, still immediate-modePhilip Taylor2016/08/02 03:46 PM
                    Not deferred, still immediate-modePhilip Taylor2016/08/03 12:36 PM
    Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2016/08/01 05:48 AM
      Article: Tile-based Rasterization in Nvidia GPUsExophase2016/08/01 10:35 AM
        Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2016/08/04 12:22 AM
  Article: Tile-based Rasterization in Nvidia GPUsGionatan Danti2016/08/01 02:16 AM
    Not deferred, still immediate-modeDavid Kanter2016/08/01 06:40 AM
  Article: Tile-based Rasterization in Nvidia GPUsJohn H2016/08/01 05:13 AM
    Article: Tile-based Rasterization in Nvidia GPUsAndrei Frumusanu2016/08/01 05:21 AM
      Article: Tile-based Rasterization in Nvidia GPUsblue2016/08/01 07:58 AM
        Article: Tile-based Rasterization in Nvidia GPUsAndrei Frumusanu2016/08/01 09:38 AM
          Article: Tile-based Rasterization in Nvidia GPUsblue2016/08/01 12:02 PM
  Article: Tile-based Rasterization in Nvidia GPUsKlimax2016/08/01 06:14 AM
    Article: Tile-based Rasterization in Nvidia GPUsAaron Spink2016/08/01 06:29 AM
  Everybody using tilesvvid2016/08/01 08:45 AM
    Everybody using tilesRob Clark2016/08/01 08:49 AM
      Everybody using tileswumpus2016/08/01 10:29 AM
        Everybody using tilesSimon Farnsworth2016/08/01 12:01 PM
          Everybody using tileswumpus2016/08/02 06:57 AM
            Everybody using tilesSimon Farnsworth2016/08/02 07:12 AM
  Testing MethodologyDavid2016/08/01 12:22 PM
    Testing MethodologyJoel H2016/08/01 12:57 PM
      Testing MethodologyDavid2016/08/01 03:09 PM
  Flicker?Wanderer2016/08/01 04:08 PM
    Flicker?Philip Taylor2016/08/01 04:30 PM
      Flicker?Beastian2016/08/01 08:33 PM
    Flicker?David Kanter2016/08/01 05:19 PM
      Flicker?Wanderer2016/08/02 06:14 AM
  Article: Tile-based Rasterization in Nvidia GPUsPM2016/08/01 05:39 PM
    Article: Tile-based Rasterization in Nvidia GPUsGiGNiC2016/08/02 11:03 AM
    GCN Imagesvvid2016/08/02 11:22 PM
      GCN ImagesVertexMaster2016/08/04 09:06 AM
        GCN Imagesvvid2016/08/04 10:30 AM
          GCN ImagesVertexMaster2016/08/04 03:38 PM
            GCN Imagesvvid2016/08/05 02:30 AM
              GCN ImagesVertexMaster2016/08/05 04:16 AM
                TBDRvvid2016/08/05 08:15 AM
                GCN1.2?vvid2016/08/07 03:33 AM
  Sorry, this is not a tile based renderer.Peter McGuinness2016/08/02 07:11 AM
    Render != RasterizeDavid Kanter2016/08/02 07:30 AM
      Render != RasterizePeter McGuinness2016/08/02 07:43 AM
        Render != RasterizeDavid Kanter2016/08/02 08:45 AM
          Render != RasterizePeter McGuinness2016/08/02 09:05 AM
            Render != RasterizePhilip Taylor2016/08/02 05:53 PM
              Render != RasterizePeter McGuinness2016/08/02 08:41 PM
                Render != RasterizePhilip Taylor2016/08/03 02:41 AM
                  Render != RasterizePeter McGuinness2016/08/04 11:34 AM
                    Render != RasterizePhilip Taylor2016/08/04 03:06 PM
                      Render != RasterizeMontaray Jack2016/08/05 01:26 PM
                        Render != RasterizeJouni Osmala2016/08/05 10:49 PM
                          Render != RasterizeMegol2016/08/06 02:30 AM
                            Render != RasterizeJouni Osmala2016/08/06 08:08 AM
                              Scratching that itchMontaray Jack2016/08/06 09:42 AM
                            Render != RasterizeMontaray Jack2016/08/06 09:08 AM
  Article: Tile-based Rasterization in Nvidia GPUsDoug Patel2016/08/02 08:39 AM
  Article: Tile-based Rasterization in Nvidia GPUsMontaray Jack2016/08/02 09:35 AM
    Article: Tile-based Rasterization in Nvidia GPUsdglow2016/08/02 04:08 PM
      Article: Tile-based Rasterization in Nvidia GPUsMontaray Jack2016/08/03 03:43 AM
        Article: Tile-based Rasterization in Nvidia GPUsdglow2016/08/03 06:04 AM
          Article: Tile-based Rasterization in Nvidia GPUsmarees2016/08/03 11:46 AM
      Article: Tile-based Rasterization in Nvidia GPUsDavid Kanter2016/08/04 07:03 AM
        Article: Tile-based Rasterization in Nvidia GPUsMontaray Jack2016/08/04 10:47 AM
    Oh god, the spambots have finally found us (NT)Anon2017/01/17 04:27 AM
      Delete the messages ASAPGtoo2017/01/17 02:19 PM
  Article: Tile-based Rasterization in Nvidia GPUssteve m2017/05/10 04:16 PM
    Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2017/05/10 06:15 PM
      Article: Tile-based Rasterization in Nvidia GPUssteve m2017/05/11 09:11 AM
        Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2017/05/12 01:15 AM
          Article: Tile-based Rasterization in Nvidia GPUssteve m2017/05/16 10:49 AM
            Article: Tile-based Rasterization in Nvidia GPUsGabriele Svelto2017/05/17 04:43 AM
              Article: Tile-based Rasterization in Nvidia GPUssteve m2017/05/17 07:35 PM
                Article: Tile-based Rasterization in Nvidia GPUspocak2017/05/18 03:19 PM
                  Article: Tile-based Rasterization in Nvidia GPUsDavid Kanter2017/05/20 06:55 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell green?