On Fri, Apr 8, 2016 at 5:27 AM, Hans de Goede <hdego...@redhat.com> wrote: > Hi, > > On 07-04-16 15:58, Ilia Mirkin wrote: >> >> That's wrong. > > > It used to work with the old RES[] code and if one cannot specify > a source swizzle, then how can I do something like > > LOAD TEMP[0].y, MEMORY[0], address > > And get the data at absolute global memory address "address" into TEMP[0].y > ? > > This is a must-have for llvm to be able to generate working TGSI code, > I do not see any way around this. > > AFAIK this is exactly what src-swizzling is for. Also note that > this commit does not change anything if no src-swizzling is specified, > in that case things work exactly as before. > >> The spec for the instruction needs to be clarified... >> >> The current nouveau impl is correct - only the .x of the address >> should be loaded, with up to 16 bytes read into the destination. > > > Ah note this is not about swizzling on the address, that indeed > makes no sense given how the addressing works for BUFFERS / MEMORY, > no this is about adding a swizlling postfix to the buffer / memory > resource specification, for example: > > LOAD TEMP[0].y, MEMORY[0].xxxx, TEMP[0] > > See the swizzling is done on the resource, not on the address, so > the swizzling specifies swizzling of the up to 16 bytes read from > address, it does not influence the address handling at all. > > I now see I made an error in my commit msg, it gives the following > example: > > LOAD TEMP[0].y, MEMORY[0].xxxx, TEMP[0].x > > This clearly is wrong, the last TEMP[0].x is not even valid TGSI, > the correct example would be: > > LOAD TEMP[0].y, MEMORY[0].xxxx, TEMP[0]
I stand by my comment of "working as intended". But that doesn't mean the intent can't be changed :) For memory/buffers, LOAD takes the address at TEMP[0].x and loads 16 bytes (4 words), and sticks them into the destination's .xyzw. If you happen to have a writemask, then only some of those are written out. It seems that you're trying to add additional meaning to the swizzle on the "memory" argument. However I don't believe that such a thing is defined. (And definitely not used anywhere, at least not on purpose.) Why does this cause you issues with LLVM-generated TGSI? -ilia _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev