On 01.06.2009 23:29, Patrice Mandin wrote: > Le Mon, 01 Jun 2009 10:46:45 -0700 > Corbin Simpson <[email protected]> a écrit: > >> Patrice Mandin wrote: >>> Le Mon, 01 Jun 2009 03:24:39 +0200 >>> Roland Scheidegger <[email protected]> a écrit: >>> >>>> Yes, seems so. In fact if you take a newer spec it'll list >>>> BlendEquationSeparate as promoted to core in 2.0. >>>> >>>>> Ah OK. Then I think I should write some test for renouveau, so I check >>>>> what Nvidia do when using these functions on nv30. >>>> AFAIK Nvidia did BlendFuncSeparate in software for nv20/25 so I'd guess >>>> it could be the same for BlendEquationSeparate for nv30. Though maybe >>>> the chip is flexible enough somehow to not require this. >>> Well, from the simple renouveau test we currently have, a fragment >>> program is used on nv30 for this function, so currently no change is >>> required in Mesa. However nv30 gallium backend should be modified to >>> take this into account. >> If there are other chipsets that cannot do true separate alpha blend, we >> can always use PIPE_CAP to let Mesa know, and Mesa can do the fragment >> program alteration itself. (r3xx and r4xx also have this, so it might be >> useful later on.) > > I did more tests. I think I was wrong, in fact, when using > BlendEquationSeparate functions, no triangle rendering command is sent > to the gpu, so I suppose it's all software rendering. The shader > program is a single instruction to set current color, plus it resend > all tcl engine state. > > But it's good news if a fragment program can do this instead, so adding > the PIPE_CAP should be useful, if other cards need it also.
How do you do this with a fragment shader? I think if you wanted to do this, you'd need to redirect all normal rendering as opaque to a temporary surface. Then, you could use a fragment shader for doing the blend (using the temporary surface and the destination surface as textures), outputting to another temporary surface. Then copy back the 2nd temporary to the original destination. Maybe... Not sure though why r3xx gets mentioned here, should easily handle this (even r200 can do it...) Roland ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ Mesa3d-dev mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mesa3d-dev
