title: ARB_shader_image_load_store creates synchronization artefacts
body: <p>My glsl code:</p>
  
  <pre><code>    ivec2 readCoord = ivec2(gl_FragCoord);
      readCoord.x += int(sin(time) * 100);
      vec2 c = imageLoad(image, readCoord).rg;
      memoryBarrier();
      imageStore(image, ivec2(gl_FragCoord), vec4(c, 0, 0));
  </code></pre>
  
  <p><code>time</code> is an uniform of type float.</p>
  
  <p>A frame from the animation:</p>
  
  <p><a href="https://i.stack.imgur.com/MD5nI.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/MD5nI.png" alt=""></a></p>
  
  <p>And here's how it's supposed to look:</p>
  
  <p><a href="https://i.stack.imgur.com/y8cMZ.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/y8cMZ.png" alt=""></a></p>
  
  <p>Any idea what's going on? :)</p>
  
  <p>Note: In <a href="https://github.com/Erkaman/image-load-store-demo/blob/master/src/main.cpp" rel="nofollow noreferrer">this demo</a> they do the same thing as me, and they don't even use memoryBarrier(). Same in <a href="https://github.com/progschj/OpenGL-Examples/blob/master/12shader_image_load_store.cpp" rel="nofollow noreferrer">this example</a></p>