in the last week the glMemoryBarrier() OpenGL function drove me crazy! I am trying to write some data to a shader-storage-buffer in one compute shader and reading this data in a second compute shader. Between these shaders I call glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT) to ensure that the write operations are finished before starting any read operation. The shader-storage-buffer is declared as coherent in both compute shaders.
It seems that the glMemoryBarrier() function does not work, because the data read from the buffer in the second shader is partly random. If I do a synchronization on the host with glFinish() instead of calling glMemoryBarrier() everything works fine.
Does anyone else have noticed this behaviour too? Is this a known bug in the latest Catalyst driver?
Currently I am using the newest Version of the Catalyst Beta driver (14.7) with my R9 290.
Thanks for your help!