[Nouveau] SLI development
Ilia Mirkin
imirkin at alum.mit.edu
Fri Mar 20 10:50:43 PDT 2015
On Fri, Mar 20, 2015 at 1:40 PM, Gediminas Jakutis <gediminas at varciai.lt> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Good day!
>
> - From Nouveau feature matrix page:
>>SLI or even multicard setups are very rare among developers.
>>You should start hacking with us, if you have such a setup.
>
> I have two GTX 770 cards running in SLI[1] and would like to help bringing
> SLI capability into Nouveau.
>
> I would gladly write code for it and I am a competent C programmer per se
> (C is my main language). But, I don't have much experience with graphics
> programming and have very little experience when it comes to "talking" with
> hardware directly. Thus, I am not confident I would manage to do it
> properly. I would like to at least try, nonetheless.
>
> Any pointers on where to start and/or what things to research first?
One of the main issues with SLI is that it's unclear what to do. We
have all the tools in place to be able to do it, just don't know what
to do with that capability :)
Let's say you wanted to, oh, I don't know... render a triangle. A
really big triangle, to a 8Kx8K texture (or 16Kx16K). How would you
leverage multiple graphics cards to help with that?
One way to look at it is to take a line from tiled renderers and just
consider that you have 2 tiles (or however many GPU's you have), do a
binning pass, and then re-render the fragment shader across all GPU's.
[Or screw the binning pass, just do the render on both GPU's but to
different viewports. That could present complications for shaders that
want to operate on global state with things like ARB_ssbo/etc though.
But you could just kick them off the SLI path if they do anything you
don't like.]
Another approach is to keep track of which draw depends on what, and
if you're executing a draw, allow another draw to execute on another
GPU if it has no dependencies on that first draw's output. Perhaps
there are other things still you might do.
Not that I want to discourage you from working on this, but there will
be a LOT or roadblocks, from trivial things to actually getting mesa
to feed 2 GPUs to a single driver, to the fact that the driver isn't
really structured to take advantage of this.
If you're looking to contribute to nouveau, I'd recommend you join
#nouveau on freenode and discuss there. Perhaps there are other
projects you'd be equally interested in but are more immediately
actionable. And then you could build up the knowledge to eventually
tackle SLI.
Cheers,
-ilia
More information about the Nouveau
mailing list