[Mesa-dev] [PATCH 0/2 v2] Add support for clip distances in Gallium
Ian Romanick
idr at freedesktop.org
Tue Dec 13 12:40:55 PST 2011
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.
>> 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.
More information about the mesa-dev
mailing list