Everybody using tiles

Article: Tile-based Rasterization in Nvidia GPUs
By: Simon Farnsworth (simon.delete@this.farnz.org.uk), August 2, 2016 8:12 am
Room: Moderated Discussions
wumpus (lost.delete@this.in-a.cave.net) on August 2, 2016 7:57 am wrote:
> Simon Farnsworth (simon.delete@this.farnz.org.uk) on August 1, 2016 1:01 pm wrote:
> > wumpus (lost.delete@this.in-a.cave.net) on August 1, 2016 11:29 am wrote:
> > > Rob Clark (robdclark.delete@this.gmail.com) on August 1, 2016 9:49 am wrote:
> > > > vvid (no.delete@this.thanks.com) on August 1, 2016 9:45 am wrote:
> > > > > Nvidia uses tiles since ~NV20.
> > > > >
> > > > > These small rectangles on video are ROP tiles (collection of pixels placed at
> > > > > adjacent location in the same memory bank) and can be compressed (nv40+).
> > > > >
> > > > > http://www.google.ch/patents/US7545382
> > > > > http://www.freepatentsonline.com/y2015/0154733.html
> > > > > https://kernel.googlesource.com/pub/scm/linux/kernel/git/mchehab/linux-media/+/media/v4.7-2/drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv40.c
> > > > >
> > > > > Specific ordering pattern is likely a result of non-linear (swizzled)
> > > > > memory layout of ROP tiles grouped in a second level structure.
> > > > >
> > > > > AMD uses 8x8 tiles. It is highly intergrated with HSR system.
> > > > >
> > > >
> > > > "tile" is a bit of an overloaded term. What you are describing above is tiled format (ie. layout
> > > > of pixels in memory), which is a different thing from an internal tile buffer (ie. tiler gpu)
> > > >
> > >
> > > I'll have to watch the video, but it seems to me that "tiling" is largely a means of increasing
> > > cache hits while rendering (if not Nvidia's method, at least it can be used that way). Note
> > > that even when not deferred, unless the API/engine is specifically designed to spit out tiles
> > > (and likely even then) it is going to add roughly one frame of latency (because you presumably
> > > have to collect enough polygons to bother with each tile). This isn't a terribly good long
> > > term thing to do with VR on the horizon (which appears to want latency above all else).
> >
> > I don't see how you get the added frame of latency; both OpenGL
> > and Vulkan have concepts that effectively delimit
> > individual frames, and even a full-frame IMR is allowed to
> > batch the drawing up until you hit the "end of rendering"
> > command (be it glFlush(), glSwapBuffers(), or the more powerful Vulkan synchronization primitives).
>
> I don't see how "allowed" == "required". From the demo it appears that the ATI
> board simply draws the triangles as they appear, no latency involved (of course
> they could be waiting to receive all the triangles first, but that seems weird).
>
At least with AMD cards, I've seen them batch up the rendering commands until a glFlush(), glFinish() or eglSwapBuffers(); however, that does not add much latency (microseconds at most), because it still renders extremely quickly - it just waits for the application to indicate "you have all data for this frame" before it first sends the data to the hardware command queue, then schedules presentation of the frame for the first VSync interrupt after the hardware completes rendering.

There's thus no need for an entire frame of latency - you buffer until you get an "all rendering complete for this frame" marker, and then render at full speed ready to present at the earliest possible opportunity.
< 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? 🍊