[Mesa-dev] [RFC] gallium/hud: fix issue w/ tgsi_to_nir
Marek Olšák
maraeo at gmail.com
Thu Jun 25 05:00:14 PDT 2015
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