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