[Mesa-dev] [PATCH 2/4] gallium: add new properties for clip and cull distance usage

Roland Scheidegger sroland at vmware.com
Mon Oct 19 14:31:39 PDT 2015


Yes, but I still don't see much change from getting this information
from the property rather than how tgsi_scan does it now, which is by
just using the usage mask from the output declaration. So the writes
shouldn't have to be analyzed.
(There's also a slight change in patch 4/4, namely these outputs
absolutely must be in order (xyzw) now as usage mask is determined
solely by the number of values. That might already have been the case at
least for some drivers and is probably ok for other state trackers too,
it wasn't in the docs however.)

Roland


Am 19.10.2015 um 23:10 schrieb Ilia Mirkin:
> AMD/NVIDIA hardware has a limit on how many cull/clip distances can be
> used at a time. On NVIDIA hw, there's a bitmask which you flip to
> determine if a distance is meant to clip or cull. It's nice not to
> have to analyze the output writes of a shader to tell how many clip
> distances are used.
> 
> On Mon, Oct 19, 2015 at 5:02 PM, Roland Scheidegger <sroland at vmware.com> wrote:
>> I don't have anything against new properties but why exactly is it
>> needed? As far as I can tell, clip/cull distances aren't declared as
>> arrays but just (up to two each) ordinary outputs, thus using the usage
>> masks should work just fine. Or is this handled differently by some
>> shader stages?
>>
>> Roland
>>
>> Am 18.10.2015 um 19:14 schrieb Marek Olšák:
>>> From: Marek Olšák <marek.olsak at amd.com>
>>>
>>> The TGSI usage mask can't be used, because these are declared as an output
>>> array of 2 elements.
>>> ---
>>>  src/gallium/auxiliary/tgsi/tgsi_strings.c  |  2 ++
>>>  src/gallium/docs/source/tgsi.rst           | 10 ++++++++++
>>>  src/gallium/include/pipe/p_shader_tokens.h |  4 +++-
>>>  3 files changed, 15 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c b/src/gallium/auxiliary/tgsi/tgsi_strings.c
>>> index 8271ea0..89369d6 100644
>>> --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c
>>> +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c
>>> @@ -137,6 +137,8 @@ const char *tgsi_property_names[TGSI_PROPERTY_COUNT] =
>>>     "TES_SPACING",
>>>     "TES_VERTEX_ORDER_CW",
>>>     "TES_POINT_MODE",
>>> +   "NUM_CLIPDIST_ENABLED",
>>> +   "NUM_CULLDIST_ENABLED",
>>>  };
>>>
>>>  const char *tgsi_return_type_names[TGSI_RETURN_TYPE_COUNT] =
>>> diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst
>>> index 314fe1b..01e18f3 100644
>>> --- a/src/gallium/docs/source/tgsi.rst
>>> +++ b/src/gallium/docs/source/tgsi.rst
>>> @@ -3126,6 +3126,16 @@ TES_POINT_MODE
>>>  If set to a non-zero value, this turns on point mode for the tessellator,
>>>  which means that points will be generated instead of primitives.
>>>
>>> +NUM_CLIPDIST_ENABLED
>>> +""""""""""""""""
>>> +
>>> +How many clip distance scalar outputs are enabled.
>>> +
>>> +NUM_CULLDIST_ENABLED
>>> +""""""""""""""""
>>> +
>>> +How many cull distance scalar outputs are enabled.
>>> +
>>>
>>>  Texture Sampling and Texture Formats
>>>  ------------------------------------
>>> diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
>>> index b36e0a3..e0ab901 100644
>>> --- a/src/gallium/include/pipe/p_shader_tokens.h
>>> +++ b/src/gallium/include/pipe/p_shader_tokens.h
>>> @@ -267,7 +267,9 @@ union tgsi_immediate_data
>>>  #define TGSI_PROPERTY_TES_SPACING            12
>>>  #define TGSI_PROPERTY_TES_VERTEX_ORDER_CW    13
>>>  #define TGSI_PROPERTY_TES_POINT_MODE         14
>>> -#define TGSI_PROPERTY_COUNT                  15
>>> +#define TGSI_PROPERTY_NUM_CLIPDIST_ENABLED   15
>>> +#define TGSI_PROPERTY_NUM_CULLDIST_ENABLED   16
>>> +#define TGSI_PROPERTY_COUNT                  17
>>>
>>>  struct tgsi_property {
>>>     unsigned Type         : 4;  /**< TGSI_TOKEN_TYPE_PROPERTY */
>>>
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Ddev&d=BQIFaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Vjtt0vs_iqoI31UfJxBl7yv9I2FeiaeAYgMTLKRBc_I&m=hQkE5ulMPapCOHVyT5YEDfNw9RQu-xe8U8BImEEQeLo&s=87jb0kUujQfEzRTRXPYeDmfp03eaVLdo_wK6I9QAyks&e= 



More information about the mesa-dev mailing list