mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-10-01 12:30:00 +02:00
63f1663fa9
* Fix 8 and 16-bit STG * Fix 8 and 16-bit STS * Shader cache version bump
23 lines
No EOL
734 B
GLSL
23 lines
No EOL
734 B
GLSL
void Helper_StoreShared16(int offset, uint value)
|
|
{
|
|
int wordOffset = offset >> 2;
|
|
int bitOffset = (offset & 3) * 8;
|
|
uint oldValue, newValue;
|
|
do
|
|
{
|
|
oldValue = $SHARED_MEM$[wordOffset];
|
|
newValue = bitfieldInsert(oldValue, value, bitOffset, 16);
|
|
} while (atomicCompSwap($SHARED_MEM$[wordOffset], oldValue, newValue) != oldValue);
|
|
}
|
|
|
|
void Helper_StoreShared8(int offset, uint value)
|
|
{
|
|
int wordOffset = offset >> 2;
|
|
int bitOffset = (offset & 3) * 8;
|
|
uint oldValue, newValue;
|
|
do
|
|
{
|
|
oldValue = $SHARED_MEM$[wordOffset];
|
|
newValue = bitfieldInsert(oldValue, value, bitOffset, 8);
|
|
} while (atomicCompSwap($SHARED_MEM$[wordOffset], oldValue, newValue) != oldValue);
|
|
} |