Scratching that itch

Article: Tile-based Rasterization in Nvidia GPUs
By: Montaray Jack (none.delete@this.none.org), August 6, 2016 10:42 am
Room: Moderated Discussions
Jouni Osmala (a.delete@this.b.c) on August 6, 2016 9:08 am wrote:
> Megol (golem960.delete@this.gmail.com) on August 6, 2016 3:30 am wrote:
> > Jouni Osmala (a.delete@this.b.c) on August 5, 2016 11:49 pm wrote:
> > > > > Regarding the vertex buffer: what you described is the same as how I was interpreting
> > > > > it already (but probably not expressing clearly), so I agree :-)
> > > > >
> > > > > > I'll suggest that you submit triangles scattered around the whole
> > > > > > screen so that you don't have a single consistent submission pattern
> > > > > > that covers the entire screen.
> > > > >
> > > > > I've tried scattering small triangles with "x += 1.0 + sin(VertexID / 3); y -= 1.0
> > > > > + sin(1.7 * (VertexID / 3));" and the behaviour is essentially the same as before.
> > > > >
> > > > > If I set it to 21 floats per vertex, it first draws the first approximately 128 triangles: It
> > > > > starts by drawing all those triangles in order, clipped to the top-left 256x512 px region, then
> > > > > it moves onto the next region and draws them all again, etc, until it's filled the screen. Then
> > > > > it starts again with the next ~128 triangles in the top-left region and repeats.
> > > > >
> > > > > If I set it to 17-20 floats per vertex, it's similar but draws ~256 triangles in each iteration.
> > > > >
> > > > > If I set it to 16 floats per vertex, it's similar but draws ~384 triangles in each iteration.
> > > > >
> > > > > The numbers don't match up exactly, but I think that indicates there's an approximately 64KB buffer
> > > > > for vertex-shaded primitives. Once that buffer is nearly full (or at the end of a draw call), the
> > > > > rasteriser starts processing all the triangles in that buffer (multiple times, once per 256x512 region),
> > > > > and when it's finished it waits for another 64KB of data before starting the next pass.
> > > > >
> > > > > (Those numbers are from code that puts unique values in every vertex output. If there
> > > > > are duplicate values then it draws more triangles in each pass, so I believe the
> > > > > buffer contains compressed data, which makes it more confusing to analyse.)
> > > > >
> > > > > The hypothesised 0.5MB tile cache/buffer/etc comes from
> > > > > those 256x512 regions (at 32bpp, no MSAA, no depth):
> > > > > it's reading and writing the framebuffer in those regions many times as it iterates over the few hundred
> > > > > triangles, but it's careful not to access two regions at
> > > > > once, which makes sense if they have 0.5MB of dedicated
> > > > > memory for it (though I suppose it could still make sense if it's just sharing L2 or something).
> > > >
> > > > Welcome to the world of black box reverse engineering. This is just the kind
> > > > of stuff we had to do to figure out in order to write the Nouveau driver.
> > > >
> > > > While you're at it take a look at the machine code being sent to the GPU, figure out all the
> > > > MMIO locations, caches, registers et cetera, and put sensible human readable assembler tags
> > > > on the machine code. Meanwhile you'll have thousands of people whining at you that you're taking
> > > > too long, or that it will never be as fast as the closed binary driver. The Slashdot crowd might
> > > > even take up a funding campaign, as if money can help you figure out things faster.
> > > >
> > > > Laugh, I'm trying be funny behind the bitterness.
> > >
> > > Its parallerisable work with high minimum skill level, while little amount of money will not
> > > help, amount that could get more high skilled individuals spend more time on it should help
> > > as long as it's enough to over come effect it has on volunteers who don't get paid.
> > > Or maybe even splitting work to small competitions where first one
> > > to get verifiable results on X gets the price money if they want.
> >
> > What you are suggesting sounds like having a competition between pregnant women about
> > who will give birth of a healthy baby first. I wouldn't call that parallelizable.
>
> Totally opposite to your analogy. If there are multiple competition on MMIO locations,
> caches, registers etc... Then its more like many people competing on many different smaller
> issues. There is need to actually smartly split the work to separate competitions.

It also depends on what the Real goal is. I know that I was motivated by wanting to understand how a GPU works and helping out the Linux and OpenSource community was the second motivation, a working driver is only a side effect then. Hiring other people won't help me understand how it works, but it may make the driver complete faster.

< 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? 🍊