Atomic Variable Operations: Difference between revisions
Jump to navigation
Jump to search
Page for atomic operations on shader variables. Used for transclusions. |
Clarification |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
All of the atomic functions return the '''''original''''' value. The term "''n''int" can be {{code|int}} or {{code|uint}}. | All of the atomic functions return the '''''original''''' value. The term "''n''int" can be {{code|int}} or {{code|uint}}. | ||
{{funcdef|''n''int atomicAdd(inout ''n''int {{param|mem}}, ''n''int {{param|data}})}} | |||
Adds {{param|data}} to {{param|mem}}. | Adds {{param|data}} to {{param|mem}}. | ||
{{funcdef|''n''int atomicMin(inout ''n''int {{param|mem}}, ''n''int {{param|data}})}} | |||
The {{param|mem}}'s value is no lower than {{param|data}}. | The {{param|mem}}'s value is no lower than {{param|data}}. | ||
{{funcdef|''n''int atomicMax(inout ''n''int {{param|mem}}, ''n''int {{param|data}})}} | |||
The {{param|mem}}'s value is no greater than {{param|data}}. | The {{param|mem}}'s value is no greater than {{param|data}}. | ||
{{funcdef|''n''int atomicAnd (inout ''n''int {{param|mem}}, ''n''int {{param|data}})}} | |||
{{param|mem}} becomes the bitwise-and between {{param|mem}} and {{param|data}}. | {{param|mem}} becomes the bitwise-and between {{param|mem}} and {{param|data}}. | ||
{{funcdef|''n''int atomicOr(inout ''n''int {{param|mem}}, ''n''int {{param|data}})}} | |||
{{param|mem}} becomes the bitwise-or between {{param|mem}} and {{param|data}}. | {{param|mem}} becomes the bitwise-or between {{param|mem}} and {{param|data}}. | ||
{{funcdef|''n''int atomicXor(inout ''n''int {{param|mem}}, ''n''int {{param|data}})}} | |||
{{param|mem}} becomes the bitwise-xor between {{param|mem}} and {{param|data}}. | {{param|mem}} becomes the bitwise-xor between {{param|mem}} and {{param|data}}. | ||
{{funcdef|''n''int atomicExchange(inout ''n''int {{param|mem}}, ''n''int {{param|data}})}} | |||
Sets {{param|mem}}'s value to {{param|data}}. | Sets {{param|mem}}'s value to {{param|data}}. | ||
{{funcdef|''n''int atomicCompSwap(inout ''n''int {{param|mem}}, ''n''int {{param|compare}}, ''n''int {{param|data}})}} | |||
If the current value of {{param|mem}} is equal to {{param|compare}}, then {{param|mem}} is set to {{param|data}}. | If the current value of {{param|mem}} is equal to {{param|compare}}, then {{param|mem}} is set to {{param|data}}. Otherwise it is left unchanged. |
Latest revision as of 04:24, 24 January 2013
All of the atomic functions return the original value. The term "nint" can be int or uint.
nint atomicAdd(inout nint mem, nint data)
Adds data to mem.
nint atomicMin(inout nint mem, nint data)
The mem's value is no lower than data.
nint atomicMax(inout nint mem, nint data)
The mem's value is no greater than data.
nint atomicAnd (inout nint mem, nint data)
mem becomes the bitwise-and between mem and data.
nint atomicOr(inout nint mem, nint data)
mem becomes the bitwise-or between mem and data.
nint atomicXor(inout nint mem, nint data)
mem becomes the bitwise-xor between mem and data.
nint atomicExchange(inout nint mem, nint data)
Sets mem's value to data.
nint atomicCompSwap(inout nint mem, nint compare, nint data)
If the current value of mem is equal to compare, then mem is set to data. Otherwise it is left unchanged.