[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