[Mesa-dev] [PATCH 0/2 v2] Add support for clip distances in Gallium
Jose Fonseca
jfonseca at vmware.com
Tue Dec 13 13:09:14 PST 2011
----- Original Message -----
> On 12/13/2011 12:26 PM, Bryan Cain wrote:
> > On 12/13/2011 02:11 PM, Jose Fonseca wrote:
> >> ----- Original Message -----
> >>> This is an updated version of the patch set I sent to the list a
> >>> few
> >>> hours
> >>> ago.
> >>> There is now a TGSI property called
> >>> TGSI_PROPERTY_NUM_CLIP_DISTANCES
> >>> that drivers can use to determine how many of the 8 available
> >>> clip
> >>> distances
> >>> are actually used by a shader.
> >> Can't the info in TGSI_PROPERTY_NUM_CLIP_DISTANCES be easily
> >> derived from the shader, and queried through
> >> src/gallium/auxiliary/tgsi/tgsi_scan.h ?
> >
> > No. The clip distances can be indirectly addressed (there are up
> > to 2
> > of them in vec4 form for a total of 8 floats), which makes it
> > impossible
> > to determine which ones are used by analyzing the shader.
>
> The description is almost complete. :) The issue is that the shader
> may
> declare
>
> out float gl_ClipDistance[4];
>
> the use non-constant addressing of the array. The compiler knows
> that
> gl_ClipDistance has at most 4 elements, but post-hoc analysis would
> not
> be able to determine that. Often the fixed-function hardware (see
> below) needs to know which clip distance values are actually written.
But don't all the clip distances written by the shader need to be declared?
E.g.:
DCL OUT[0], CLIPDIST[0]
DCL OUT[1], CLIPDIST[1]
DCL OUT[2], CLIPDIST[2]
DCL OUT[3], CLIPDIST[3]
therefore a trivial analysis of the declarations convey that?
> >> Could you also elaborate on why TGSI_SEMANTIC_CLIPDIST is useful
> >> for the drivers? I personally don't have nothing against it, but
> >> just like to understand why it makes a difference.
> >>
> >> Jose
> >
> > Unless my understanding of clip distances is wrong, the GPU uses
> > clip
> > distances to decide whether a vertex should be clipped, and thus
> > needs
> > to know which of the vertex shader outputs are clip distances.
>
> Right. Clip distance is generally written to a special register that
> some fixed-function hardware uses to do clipping.
Right. Don't know what I was thinking...
Jose
More information about the mesa-dev
mailing list