[Mesa-dev] RFC: reworked Gallium provoking vertex code
Brian Paul
brianp at vmware.com
Wed May 5 16:56:07 PDT 2010
José Fonseca wrote:
> On Wed, 2010-05-05 at 11:34 -0700, Brian Paul wrote:
>> Commit ddb0e18f6c5582d4d2cc59ffd16ad9c4639ed059 changed some of the
>> draw module code relating to provoking vertex. The change was in the
>> right direction, but incomplete (and broke the glean clipFlat test).
>>
>> The attached patch reworks the provoking vertex code and fixes the
>> regressions.
>>
>> This is a bit complicated, but it builds on two principles:
>>
>> 1. When the gallium driver draws a triangle, it always follows the
>> current provoking vertex convention.
>>
>> 2. Whenever any per-triangle function is called in the draw pipeline,
>> it always follows the current provoking vertex convention.
>>
>> Assuming those two things, the other changes build logically on top of
>> that.
>>
>> Since gallium does not support first provoking vertex for quads or
>> quad strips, when we decompose those into triangles we have to obey
>> rules 1&2 above. So, now there are separate QUAD_FIRST_PV and
>> QUAD_LAST_PV macros in the draw module's decomposition code instead of
>> one QUAD macro.
>>
>> This patch fixes the softpipe driver, but not llvmpipe. I'll do that
>> next if this looks OK w/ everyone.
>>
>> I'm also updating the glean clipFlat test to do more exhaustive
>> testing of provoking vertex.
>
> Hi Brian,
>
> Sorry for opening Pandora's box without full grasp of the consequences.
>
> I do agree with the principles you outlined, and the patch looks correct
> to me.
>
> I've also tested here with clipping DCT on softpipe and there are no
> regressions. D3D doesn't cover quads or polygons though.
>
> There is still a bit of old code in sp_prim_vbuf.c that's commented out
> which should probably be removed.
Yeah, and edge flags are broken in a few places. I think I'm nearly
done fixing that too...
-Brian
More information about the mesa-dev
mailing list