On 02.08.2012 11:21, Michel Dänzer wrote:
On Don, 2012-08-02 at 11:05 +0200, Christian König wrote:
On 02.08.2012 07:51, Michel Dänzer wrote:
On Mit, 2012-08-01 at 23:28 +0200, Christian König wrote:
Using the writemask in the sampler results in packet
VGPRS.
What does that mean?
The instructions with a destination mask are packing their results, e.g.
when you sample RGBA you get:
R in VGPR0
G in VGPR1
B in VGPR2
A in VGPR3

But when you for example mask G&B you get:
R in VGPR0
G masked
B masked
A in VGPR1

So your image sample instruction is only writing 2 VGPRS then.
Ah, so that should be spelled 'packed' then.
Oh, going to fix that.


[SNIP]
Couldn't this incorrectly clobber components of the destination which
were supposed to be masked?
No cause it is just an optimization of not fetching unwanted components,
and not masking anything.
Hmm, but can't it happen that LLVM assigns destination GPRs containing
previous values that need to be preserved according to the TGSI
writemask?
Not currently, as far as I can see, in opposition to the R600 target it always seems to allocate a new set of 4 registers and then picks the elements we wanted for the writemask separately.

By the way I don't think vectors of VGPR registers needs to be aligned to their size, e.g. you can also do something like VGPR1_128 in LLVM and it should work fine. But I'm not 100% sure about that.

Christian.

_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to