[Mesa-dev] [RFC] gallium/hud: fix issue w/ tgsi_to_nir

Rob Clark robdclark at gmail.com
Thu Jun 25 05:33:52 PDT 2015


hmm, well I still think tgsi.rst should get some clarification, if for
no other reason than I misunderstood it (and therefore sooner or later
I guess someone else will too)..

I can take a shot at a doc patch..

BR,
-R

On Thu, Jun 25, 2015 at 8:00 AM, Marek Olšák <maraeo at gmail.com> wrote:
> This documentation was only written for TEMPs. I agree that TEMP
> indexing doesn't necessarily need arrays to work, but INPUT and OUTPUT
> indexing always needs them.
>
> Marek
>
> On Thu, Jun 25, 2015 at 1:31 AM, Rob Clark <robdclark at gmail.com> wrote:
>> tgsi.rst currently says:
>>
>> ----
>> If no ArrayID is specified with an indirect addressing operand the whole
>> register file might be accessed by this operand. This is strongly discouraged
>> and will prevent packing of scalar/vec2 arrays and effective alias analysis.
>> ----
>>
>> I'd be pretty happy to remove it and replace it w/ something to the
>> effect of indirect addressing where no ArrayID is specified is
>> undefined :-)
>>
>> BR,
>> -R
>>
>> On Wed, Jun 24, 2015 at 6:17 PM, Marek Olšák <maraeo at gmail.com> wrote:
>>> Indirect addressing without the ArrayID is undefined in the general
>>> case. You need the ArrayID to be able to tell where the array
>>> declaration starts and what its semantic name is.
>>>
>>> Marek
>>>
>>> On Wed, Jun 24, 2015 at 8:35 PM, Rob Clark <robdclark at gmail.com> wrote:
>>>> On Wed, Jun 24, 2015 at 12:31 PM, Marek Olšák <maraeo at gmail.com> wrote:
>>>>> Yes, ArrayID != 0 means it's an array, otherwise it's just a compact
>>>>> way to add declarations.
>>>>
>>>> ok.. hmm, I guess tgsi.rst needs an update then..
>>>>
>>>>> I recently added the array support for inputs and outputs, we just
>>>>> need to enable it on non-radeon non-swrast drivers:
>>>>> http://cgit.freedesktop.org/mesa/mesa/commit/?id=b6ebe7eabf54936a02acc0968e718e0c264a73f5
>>>>
>>>> ok, in principle (after fixing ttn based on the assumption that we
>>>> won't get indirect access if ArrayID==0, and now that tgsi f/e is
>>>> dropped) freedreno should be ok for array in/out's..  I'll enable the
>>>> cap and see what happens after fixing ttn and debugging some indirect
>>>> issues (seems either there is something I don't understand about the
>>>> hw yet, or maybe an a4xx bug.. right now shaders that I think should
>>>> work aren't and I'm in android hell trying to get some more traces
>>>> from blob :-/)
>>>>
>>>> BR,
>>>> -R
>>>>
>>>>> It would be nice to enable the arrays on all drivers instead of
>>>>> working around it indefinitely.
>>>>>
>>>>> Marek
>>>>>
>>>>> On Wed, Jun 24, 2015 at 1:31 PM, Rob Clark <robdclark at gmail.com> wrote:
>>>>>> Ok, I *thought* we didn't get ArrayID on IN/OUT, but only TEMP?  If it
>>>>>> is safe to assume that we always get ArrayID that makes it much
>>>>>> easier.
>>>>>>
>>>>>> BR,
>>>>>> -R
>>>>>>
>>>>>> On Wed, Jun 24, 2015 at 5:39 AM, Marek Olšák <maraeo at gmail.com> wrote:
>>>>>>> It's not an array, because the ArrayID is 0. It's a valid non-array
>>>>>>> declaration. If any TGSI user doesn't understand it, that user should
>>>>>>> be fixed.
>>>>>>>
>>>>>>> Marek
>>>>>>>
>>>>>>> On Tue, Jun 23, 2015 at 3:20 PM, Rob Clark <robdclark at gmail.com> wrote:
>>>>>>>> From: Rob Clark <robclark at freedesktop.org>
>>>>>>>>
>>>>>>>> Ok, so actually there is a ttn issue here to fix as well.. but it
>>>>>>>> brought up a question in my mind.  When ttn sees something like
>>>>>>>>
>>>>>>>>   DCL IN[0..1]
>>>>>>>>
>>>>>>>> it will treat that as an array (which in the end will result in
>>>>>>>> constraints about where the registers get allocated.  Which is not
>>>>>>>> really ideal.
>>>>>>>>
>>>>>>>> With glsl we don't actually get input arrays (but instead a bunch
>>>>>>>> of MOV's to a TEMP array) currently.  So I'm not quite sure how
>>>>>>>> an actual input array should look.  (But my preference would be
>>>>>>>> IN[a..b] for arrays and IN[c] otherwise)
>>>>>>>> ---
>>>>>>>>  src/gallium/auxiliary/hud/hud_context.c | 3 ++-
>>>>>>>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>>>>>>>
>>>>>>>> diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c
>>>>>>>> index 6a124f7..2b6d3a7 100644
>>>>>>>> --- a/src/gallium/auxiliary/hud/hud_context.c
>>>>>>>> +++ b/src/gallium/auxiliary/hud/hud_context.c
>>>>>>>> @@ -1163,7 +1163,8 @@ hud_create(struct pipe_context *pipe, struct cso_context *cso)
>>>>>>>>     {
>>>>>>>>        static const char *vertex_shader_text = {
>>>>>>>>           "VERT\n"
>>>>>>>> -         "DCL IN[0..1]\n"
>>>>>>>> +         "DCL IN[0]\n"
>>>>>>>> +         "DCL IN[1]\n"
>>>>>>>>           "DCL OUT[0], POSITION\n"
>>>>>>>>           "DCL OUT[1], COLOR[0]\n" /* color */
>>>>>>>>           "DCL OUT[2], GENERIC[0]\n" /* texcoord */
>>>>>>>> --
>>>>>>>> 2.4.3
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> mesa-dev mailing list
>>>>>>>> mesa-dev at lists.freedesktop.org
>>>>>>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list