-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Brian Paul wrote:
> Ian Romanick wrote:
>>
>> I see some commits have gone into the Gallium tree for Cell
>> infrastructure.  What are the near-term (i.e., in the next week or so)
>> plans?  Since I'm working in this area, I want to avoid duplication of
>> effort. :)
>>
>> I've got some code that I'm working on that is almost ready to commit.
>> I took the softpipe code and modified it to generate quads in groups and
>> pass the whole group down the pipeline.  Once that was done, I moved the
>> triangle setup code onto the SPE.  SPE generates quads for one triangle
>> at a time.  The quads get sent back to the PPE in fixed size groups.
>> The synchronization mechanism currently used is, frankly, crap.  That
>> code is pretty close to good.  Once it is 100% golden, I'll start moving
>> the other stages to the SPEs in short order.
>>
>> This is currently driven by a simple event loop on the SPE that reads
>> from a mailbox.  Right now there are only two messages from the PPE:
>> start producing quads from a triangle and continue generating a group.
>> It should be easy to add more messages (i.e., to load shader code, etc.).
> 
> Your approach sounds a bit different than the tile-oriented approach 
> we've been planning.  I'm not sure I follow the flow of things.  Maybe 
> you could explain it a little more?

Right now the SPEs are just doing triangle setup.  I did this because it
seemed to be the easiest part to move to the SPEs in isolation.  Though,
I could I have started at the other end of the pipeline.  The PPE sends
the SPE information about the triangle, and the SPE generates the quads.

This can easily transition to a tile-based approach.  Once we have a
group of quads, we know which tiles contain those quads.  The quads can
the be regrouped an processed in tile order.  Quads can then be
processed on the the triangle-setup SPE or distributed to other SPEs.
At some point we'll want to tune this by scan converting by tile in
Hibert curve order.  In the meantime we can probably distribute the
quads using a radix sort or similar.

http://www.cgl.uwaterloo.ca/Projects/rendering/Papers/hilbertraster.pdf

Interestingly, on a G5 I got a 10% - 20% performance improvement by
doing quads in groups instead of sending on quad down the pipe at a
time.  We could probably optimize the non-Cell multi-processor case
similarly.  Have one core (thread) do triangle-setup.  Other cores
(threads) wait for a group of quads in one tile to be ready and process
the group when available, etc.

> So far, I've just been getting makefiles working and dabbling in some 
> initial PPU/SPU communication code/tests.  I also found some 
> texture/pixel format issues with the current Gallium code due to the 
> Cell being big-endian.  I'll try to check in some of these fixes soon.
> 
> We also need to finish up some Xlib winsys work so that we can get the 
> Cell driver to produce images in on-screen X windows.  The current Xlib 
> winsys still has dependencies on softpipe that need to be removed.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)

iD8DBQFHVxPcX1gOwKyEAw8RAhm7AJ4hGPNW0t6EesePCPEWg/6comfxHwCffGJv
/qtCoUR7qdZ135aoHJojk6g=
=Ml8X
-----END PGP SIGNATURE-----

-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to