Я не совсем понял, как классификатор coherent
и атомарные операции работают вместе.
Я выполняю некоторую операцию накопления в том же месте SSBO с этим кодом:
uint prevValue, newValue;
uint readValue = ssbo[index];
do
{
prevValue = readValue;
newValue = F(readValue);
}
while((readValue = atomicCompSwap(ssbo[index], prevValue, newValue)) != prevValue);
Этот код прекрасно работает для меня, но все же, нужно ли мне в этом случае объявлять SSBO (или изображение) с квалификатором coherent
?
И нужно ли мне использовать coherent
в случае, когда я звоню только atomicAdd
?
Когда именно мне нужно использовать квалификатор coherent
? Нужно ли использовать его только в случае прямой записи : ssbo[index] = value;
?