[Mesa-dev] [PATCH-RFC] draw: Rewrite primitive decomposer

Chia-I Wu olvaffe at gmail.com
Fri Aug 6 06:33:56 PDT 2010


On Fri, Aug 6, 2010 at 6:03 PM, Henri Verbeet <hverbeet at gmail.com> wrote:
> On 5 August 2010 18:51, Chia-I Wu <olvaffe at gmail.com> wrote:
>> The GL rule is last vertex last for each primitive.  The D3D rule is first
>> vertex first.  My idea is to have draw_decompose_tmp.h use a local variable,
>> last_vertex_last, to select the rules.  In draw_gs_tmp.h and
>> draw_so_emit_tmp.h, last_vertex_last is TRUE when the new settable flags is
>> TRUE.  However, in draw_pt_decompse.h, where the rules no longer matter,
>> last_vertex_last is set to !(flatshade && flatshade_first).
> Doesn't ARB_provoking_vertex control that for GL?
The decomposers are using the provoking convention to decide the
decomposition rule.  That is, tri_strip [0, 1, 2, 3] is decomposed to

  tri [0, 1, 2] and [2, 1, 3], when GL_LAST_VERTEX_CONVENTION
  tri [0, 1, 2] and [1, 3, 2], when GL_FIRST_VERTEX_CONVENTION

That is fine when GS is not active.  But when GS is active, and when
the second triangle is processed, gl_PositionIn[0] could be vertex 2
or vertex 1 depending on the convention.  Now that is not desirable.

The decomposers should not depend on the provoking convention to
decide how to decompose, at least for those decomposers before GS.

-- 
olv at LunarG.com


More information about the mesa-dev mailing list