Zastanawiam się nad użytecznością pamięci MemoryBarrierShared.glsl memoryBarrierShared usefulness
Rzeczywiście, kiedy szukam w dokumentacji funkcji bariery: Czytam:
Dla danego statycznego przykład bariery w cieniującego obliczeniowej, wszystkie wywołania w obrębie jednej grupy roboczej należy go wprowadzić, zanim którykolwiek są wolno kontynuować. Zapewnia to, że wartości zapisane przez jedno wywołanie przed danym statycznym instancją bariery mogą być bezpiecznie odczytane przez inne wywołania po ich wywołaniu do tego samego statycznego wystąpienia bariery. Ponieważ wywołania mogą być wykonywane w nieokreślonej kolejności między tymi wywołaniami bariery, wartości zmiennej wyjściowej na jeden wiersz lub na łatę lub dowolna zmienna współdzielona będą w wielu przypadkach niezdefiniowane.
Więc czy możemy bezpiecznie odczytać wartości po użyciu barierę, dlaczego widzimy w pewnym kodzie
memoryBarrierShared();
barrier();
lub coś nie tak jak
barrier();
memoryBarrierShared();
Więc moje pytanie brzmi: co jest celem memoryBarrier {Shared, ...} jeśli wystarczy użycie bariery?
Dla memoryBarrierBuffer/obrazu mogę zrozumieć, jeśli używamy wielu scenę, ale za wspólne, nie mam pojęcia ...