Scratching that itch

Article: Tile-based Rasterization in Nvidia GPUs
By: Montaray Jack (none.delete@this.none.org), August 6, 2016 9: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/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?