On Mon, 2009-05-18 at 08:31 -0700, Corbin Simpson wrote:
> Roland Scheidegger wrote:
> > On 18.05.2009 12:55, Keith Whitwell wrote:
> >> It's very easy for a driver to get smooth lines & points, line stipple,
> >> unfilled polygons, etc, working under gallium -- basically just fall
> >> back to software t&l and the draw module will do them for you.
> >>
> >> They are still hardware-rasterized, but we need to do
> >> software-transformation to tweak the geometry to cover the bounding area
> >> of the primitive.  Then we set a special 'smoothing' fragment shader and
> >> pass the primitives back into the driver.
> >>
> >> As long as you already support switching between hwtnl and swtnl (or
> >> just swtnl all the time) this is very easy for the driver.
> > Yes, though some hardware doesn't require software t&l for this but can
> > do that somehow, however need some handwaving. For instance radeon r300
> > hardware (I assumed this was what Corbin was refering to) has GA_LINE_S0
> > reg with description "S texture coordinate value generated for vertex 0
> > of an antialiased line; 32-bit IEEE float format. Typical 0.0.". Not
> > sure how it's supposed to work however, the coord generation looks like
> > "line sprite" to me... i965 can do coverage value calculation and so I
> > think wouldn't need sw tnl neither.
> 
> That's the idea. My technique is actually along the lines of "Ooh, this 
> register looks interesting, I'll bug Alex until he tells me what it 
> does." Tends to work out very well. :3
> 
> r300 is special in that only the actual PVS (vert shader engine) and UCP 
> (user clipping) are missing from SW TCL chipsets; the viewport 
> transform, vert fetcher, texgen/primitive stuffing, etc. are all still 
> present and usable.

It's a big win to be able to hand (regular) clipping off to hardware,
and obviously viewport transformation as that comes after clipping in
the transformation pipeline.

If/when you get around to it, you can tell the draw module that you can
do hardware clipping by calling

  void draw_set_driver_clipping( struct draw_context *draw,
                               boolean bypass_clipping );

This means in most cases, the draw module can just do vertex
transformation and avoid things like primitive assembly, the draw_pipe_*
pipeline, etc.  It's a major win.


> Anyway, I think I've learned enough to be able to implement the rest of 
> rasterizer state. I've got plenty of bugs elsewhere, like the entire 
> r3xx fragment shader setup, so I'm not needing extra stuff, but I've 
> always wondered about those flags.
> 

No worries...

Keith


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables 
unlimited royalty-free distribution of the report engine 
for externally facing server and web deployment. 
http://p.sf.net/sfu/businessobjects
_______________________________________________
Mesa3d-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to