Support multiple destination operands on shader IR and shuffle predicates (#1964)
* Support multiple destination operands on shader IR and shuffle predicates * Cache version change
This commit is contained in:
parent
dcce407071
commit
4b7c7dab9e
16 changed files with 199 additions and 79 deletions
|
@ -1,9 +1,10 @@
|
|||
float Helper_ShuffleDown(float x, uint index, uint mask)
|
||||
float Helper_ShuffleDown(float x, uint index, uint mask, out bool valid)
|
||||
{
|
||||
uint clamp = mask & 0x1fu;
|
||||
uint segMask = (mask >> 8) & 0x1fu;
|
||||
uint minThreadId = gl_SubGroupInvocationARB & segMask;
|
||||
uint maxThreadId = minThreadId | (clamp & ~segMask);
|
||||
uint srcThreadId = gl_SubGroupInvocationARB + index;
|
||||
return (srcThreadId <= maxThreadId) ? readInvocationARB(x, srcThreadId) : x;
|
||||
valid = srcThreadId <= maxThreadId;
|
||||
return valid ? readInvocationARB(x, srcThreadId) : x;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue