Re: [Piglit] [PATCH 3/3] arb_shader_image_load_store: call glMemoryBarrier() before reading an image written to by imageStore()

2015-12-11 Thread Francisco Jerez
Timothy Arceri  writes:

> On Thu, 2015-12-10 at 16:21 +0200, Francisco Jerez wrote:
>> Timothy Arceri  writes:
>> 
>> > I haven't been able to test if this fixes the bug as I cannot
>> > reproduce it.
>> > 
>> > Cc: Francisco Jerez 
>> > Cc: Jordan Justen 
>> > https://bugs.freedesktop.org/show_bug.cgi?id=92822
>> > ---
>> >  .../image_store/basic-imageStore-const-uniform-index.shader_test  
>> > | 2 ++
>> >  .../basic-imageStore-mixed-const-non-const-uniform
>> > -index.shader_test  | 2 ++
>> >  .../basic-imageStore-mixed-const-non-const-uniform
>> > -index2.shader_test | 2 ++
>> >  .../image_store/basic-imageStore-non-const-uniform
>> > -index.shader_test  | 4 
>> >  .../execution/basic-imageStore-from-uniform.shader_test   
>> > | 2 ++
>> 
>> There seem to be a bunch more shader_runner test cases where we're
>> missing barriers according to 'git grep -l "image texture "'.  The CS
>> cases currently rely on the hack in shader_runner.c:2778 and :2780
>> which
>> would be nice to clean up at some point, but I guess that could be
>> done
>> as a separate series if you don't feel like doing it now. 
>
> Yeah I noticed the CS hack. I'd rather land this change first and fix
> up the other cases when I have some free time, or someone else can do
> it if they are interested.

Sounds reasonable to me, but I think you've missed several cases that
don't use compute shaders so the hack won't help (have a look at the
output from git-grep), e.g.:

 
tests/spec/arb_shader_image_load_store/execution/gl45-imageAtomicExchange-float.shader_test
 
tests/spec/arb_shader_image_load_store/execution/load-from-cleared-image.shader_test

>
>>  Other than
>> that the general approach seems reasonable to me.
>> 
>> >  5 files changed, 12 insertions(+)
>> > 
>> > diff --git
>> > a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-const-uniform-index.shader_test
>> > b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-const-uniform-index.shader_test
>> > index af7d5d4..ed34b39 100644
>> > --- a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-const-uniform-index.shader_test
>> > +++ b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-const-uniform-index.shader_test
>> > @@ -45,6 +45,7 @@ fb tex 2d 1
>> >  draw rect -1 -1 2 2
>> >  
>> >  # Test the result of imageStore
>> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>> >  fb tex 2d 0
>> >  probe all rgba 1.0 0.0 0.0 1.0
>> >  
>> > @@ -54,5 +55,6 @@ fb tex 2d 1
>> >  draw rect -1 -1 2 2
>> >  
>> >  # Test the result of imageStore
>> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>> >  fb tex 2d 0
>> >  probe all rgba 0.0 1.0 0.0 1.0
>> > diff --git
>> > a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-mixed-const-non-const-uniform-index.shader_test
>> > b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-mixed-const-non-const-uniform-index.shader_test
>> > index 519ae0b..ebaeb5d 100644
>> > --- a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-mixed-const-non-const-uniform-index.shader_test
>> > +++ b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-mixed-const-non-const-uniform-index.shader_test
>> > @@ -52,6 +52,7 @@ fb tex 2d 2
>> >  draw rect -1 -1 2 2
>> >  
>> >  # Test the result of imageStore 0
>> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>> >  fb tex 2d 0
>> >  probe all rgba 1.0 0.0 0.0 1.0
>> >  
>> > @@ -62,5 +63,6 @@ fb tex 2d 2
>> >  draw rect -1 -1 2 2
>> >  
>> >  # Test the result of imageStore 1
>> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>> >  fb tex 2d 1
>> >  probe all rgba 0.0 1.0 0.0 1.0
>> > diff --git
>> > a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-mixed-const-non-const-uniform-index2.shader_test
>> > b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-mixed-const-non-const-uniform-index2.shader_test
>> > index 1d33d3f..6bd1467 100644
>> > --- a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-mixed-const-non-const-uniform-index2.shader_test
>> > +++ b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > -imageStore-mixed-const-non-const-uniform-index2.shader_test
>> > @@ -52,6 +52,7 @@ fb tex 2d 2
>> >  draw rect -1 -1 2 2
>> >  
>> >  # Test the result of imageStore 0
>> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>> >  fb tex 2d 0
>> >  probe all rgba 1.0 0.0 0.0 1.0
>> >  
>> > @@ -62,5 +63,6 @@ fb tex 2d 2
>> >  draw rect -1 -1 2 2
>> >  
>> >  # Test the result of imageStore 1
>> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>> >  fb tex 2d 1
>> >  probe all rgba 0.0 1.0 0.0 1.0
>> > diff --git
>> > a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
>> > 

Re: [Piglit] [PATCH 3/3] arb_shader_image_load_store: call glMemoryBarrier() before reading an image written to by imageStore()

2015-12-10 Thread Timothy Arceri
On Thu, 2015-12-10 at 16:21 +0200, Francisco Jerez wrote:
> Timothy Arceri  writes:
> 
> > I haven't been able to test if this fixes the bug as I cannot
> > reproduce it.
> > 
> > Cc: Francisco Jerez 
> > Cc: Jordan Justen 
> > https://bugs.freedesktop.org/show_bug.cgi?id=92822
> > ---
> >  .../image_store/basic-imageStore-const-uniform-index.shader_test  
> > | 2 ++
> >  .../basic-imageStore-mixed-const-non-const-uniform
> > -index.shader_test  | 2 ++
> >  .../basic-imageStore-mixed-const-non-const-uniform
> > -index2.shader_test | 2 ++
> >  .../image_store/basic-imageStore-non-const-uniform
> > -index.shader_test  | 4 
> >  .../execution/basic-imageStore-from-uniform.shader_test   
> > | 2 ++
> 
> There seem to be a bunch more shader_runner test cases where we're
> missing barriers according to 'git grep -l "image texture "'.  The CS
> cases currently rely on the hack in shader_runner.c:2778 and :2780
> which
> would be nice to clean up at some point, but I guess that could be
> done
> as a separate series if you don't feel like doing it now. 

Yeah I noticed the CS hack. I'd rather land this change first and fix
up the other cases when I have some free time, or someone else can do
it if they are interested.

>  Other than
> that the general approach seems reasonable to me.
> 
> >  5 files changed, 12 insertions(+)
> > 
> > diff --git
> > a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-const-uniform-index.shader_test
> > b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-const-uniform-index.shader_test
> > index af7d5d4..ed34b39 100644
> > --- a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-const-uniform-index.shader_test
> > +++ b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-const-uniform-index.shader_test
> > @@ -45,6 +45,7 @@ fb tex 2d 1
> >  draw rect -1 -1 2 2
> >  
> >  # Test the result of imageStore
> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
> >  fb tex 2d 0
> >  probe all rgba 1.0 0.0 0.0 1.0
> >  
> > @@ -54,5 +55,6 @@ fb tex 2d 1
> >  draw rect -1 -1 2 2
> >  
> >  # Test the result of imageStore
> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
> >  fb tex 2d 0
> >  probe all rgba 0.0 1.0 0.0 1.0
> > diff --git
> > a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-mixed-const-non-const-uniform-index.shader_test
> > b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-mixed-const-non-const-uniform-index.shader_test
> > index 519ae0b..ebaeb5d 100644
> > --- a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-mixed-const-non-const-uniform-index.shader_test
> > +++ b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-mixed-const-non-const-uniform-index.shader_test
> > @@ -52,6 +52,7 @@ fb tex 2d 2
> >  draw rect -1 -1 2 2
> >  
> >  # Test the result of imageStore 0
> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
> >  fb tex 2d 0
> >  probe all rgba 1.0 0.0 0.0 1.0
> >  
> > @@ -62,5 +63,6 @@ fb tex 2d 2
> >  draw rect -1 -1 2 2
> >  
> >  # Test the result of imageStore 1
> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
> >  fb tex 2d 1
> >  probe all rgba 0.0 1.0 0.0 1.0
> > diff --git
> > a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-mixed-const-non-const-uniform-index2.shader_test
> > b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-mixed-const-non-const-uniform-index2.shader_test
> > index 1d33d3f..6bd1467 100644
> > --- a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-mixed-const-non-const-uniform-index2.shader_test
> > +++ b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-mixed-const-non-const-uniform-index2.shader_test
> > @@ -52,6 +52,7 @@ fb tex 2d 2
> >  draw rect -1 -1 2 2
> >  
> >  # Test the result of imageStore 0
> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
> >  fb tex 2d 0
> >  probe all rgba 1.0 0.0 0.0 1.0
> >  
> > @@ -62,5 +63,6 @@ fb tex 2d 2
> >  draw rect -1 -1 2 2
> >  
> >  # Test the result of imageStore 1
> > +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
> >  fb tex 2d 1
> >  probe all rgba 0.0 1.0 0.0 1.0
> > diff --git
> > a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-non-const-uniform-index.shader_test
> > b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-non-const-uniform-index.shader_test
> > index 646ea3b..62f9861 100644
> > --- a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-non-const-uniform-index.shader_test
> > +++ b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic
> > -imageStore-non-const-uniform-index.shader_test
> > @@ -64,6 +64,7 @@ fb tex 2d 4
> >  draw rect -1 -1 2 2
> >  
> >  # Test the result of imageStore 0
> > +memory 

Re: [Piglit] [PATCH 3/3] arb_shader_image_load_store: call glMemoryBarrier() before reading an image written to by imageStore()

2015-12-10 Thread Francisco Jerez
Timothy Arceri  writes:

> I haven't been able to test if this fixes the bug as I cannot reproduce it.
>
> Cc: Francisco Jerez 
> Cc: Jordan Justen 
> https://bugs.freedesktop.org/show_bug.cgi?id=92822
> ---
>  .../image_store/basic-imageStore-const-uniform-index.shader_test  | 2 ++
>  .../basic-imageStore-mixed-const-non-const-uniform-index.shader_test  | 2 ++
>  .../basic-imageStore-mixed-const-non-const-uniform-index2.shader_test | 2 ++
>  .../image_store/basic-imageStore-non-const-uniform-index.shader_test  | 4 
> 
>  .../execution/basic-imageStore-from-uniform.shader_test   | 2 ++

There seem to be a bunch more shader_runner test cases where we're
missing barriers according to 'git grep -l "image texture "'.  The CS
cases currently rely on the hack in shader_runner.c:2778 and :2780 which
would be nice to clean up at some point, but I guess that could be done
as a separate series if you don't feel like doing it now.  Other than
that the general approach seems reasonable to me.

>  5 files changed, 12 insertions(+)
>
> diff --git 
> a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-const-uniform-index.shader_test
>  
> b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-const-uniform-index.shader_test
> index af7d5d4..ed34b39 100644
> --- 
> a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-const-uniform-index.shader_test
> +++ 
> b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-const-uniform-index.shader_test
> @@ -45,6 +45,7 @@ fb tex 2d 1
>  draw rect -1 -1 2 2
>  
>  # Test the result of imageStore
> +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>  fb tex 2d 0
>  probe all rgba 1.0 0.0 0.0 1.0
>  
> @@ -54,5 +55,6 @@ fb tex 2d 1
>  draw rect -1 -1 2 2
>  
>  # Test the result of imageStore
> +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>  fb tex 2d 0
>  probe all rgba 0.0 1.0 0.0 1.0
> diff --git 
> a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index.shader_test
>  
> b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index.shader_test
> index 519ae0b..ebaeb5d 100644
> --- 
> a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index.shader_test
> +++ 
> b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index.shader_test
> @@ -52,6 +52,7 @@ fb tex 2d 2
>  draw rect -1 -1 2 2
>  
>  # Test the result of imageStore 0
> +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>  fb tex 2d 0
>  probe all rgba 1.0 0.0 0.0 1.0
>  
> @@ -62,5 +63,6 @@ fb tex 2d 2
>  draw rect -1 -1 2 2
>  
>  # Test the result of imageStore 1
> +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>  fb tex 2d 1
>  probe all rgba 0.0 1.0 0.0 1.0
> diff --git 
> a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index2.shader_test
>  
> b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index2.shader_test
> index 1d33d3f..6bd1467 100644
> --- 
> a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index2.shader_test
> +++ 
> b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index2.shader_test
> @@ -52,6 +52,7 @@ fb tex 2d 2
>  draw rect -1 -1 2 2
>  
>  # Test the result of imageStore 0
> +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>  fb tex 2d 0
>  probe all rgba 1.0 0.0 0.0 1.0
>  
> @@ -62,5 +63,6 @@ fb tex 2d 2
>  draw rect -1 -1 2 2
>  
>  # Test the result of imageStore 1
> +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>  fb tex 2d 1
>  probe all rgba 0.0 1.0 0.0 1.0
> diff --git 
> a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-non-const-uniform-index.shader_test
>  
> b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-non-const-uniform-index.shader_test
> index 646ea3b..62f9861 100644
> --- 
> a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-non-const-uniform-index.shader_test
> +++ 
> b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-non-const-uniform-index.shader_test
> @@ -64,6 +64,7 @@ fb tex 2d 4
>  draw rect -1 -1 2 2
>  
>  # Test the result of imageStore 0
> +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>  fb tex 2d 0
>  probe all rgba 1.0 0.0 0.0 1.0
>  
> @@ -75,6 +76,7 @@ fb tex 2d 4
>  draw rect -1 -1 2 2
>  
>  # Test the result of imageStore 1
> +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>  fb tex 2d 1
>  probe all rgba 0.0 1.0 0.0 1.0
>  
> @@ -86,6 +88,7 @@ fb tex 2d 4
>  draw rect -1 -1 2 2
>  
>  # Test the result of imageStore 2
> +memory barrier GL_FRAMEBUFFER_BARRIER_BIT
>  fb tex 2d 2
>  probe all rgba 0.0 0.0 1.0 1.0
>  
> @@ -97,5 

[Piglit] [PATCH 3/3] arb_shader_image_load_store: call glMemoryBarrier() before reading an image written to by imageStore()

2015-12-09 Thread Timothy Arceri
I haven't been able to test if this fixes the bug as I cannot reproduce it.

Cc: Francisco Jerez 
Cc: Jordan Justen 
https://bugs.freedesktop.org/show_bug.cgi?id=92822
---
 .../image_store/basic-imageStore-const-uniform-index.shader_test  | 2 ++
 .../basic-imageStore-mixed-const-non-const-uniform-index.shader_test  | 2 ++
 .../basic-imageStore-mixed-const-non-const-uniform-index2.shader_test | 2 ++
 .../image_store/basic-imageStore-non-const-uniform-index.shader_test  | 4 
 .../execution/basic-imageStore-from-uniform.shader_test   | 2 ++
 5 files changed, 12 insertions(+)

diff --git 
a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-const-uniform-index.shader_test
 
b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-const-uniform-index.shader_test
index af7d5d4..ed34b39 100644
--- 
a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-const-uniform-index.shader_test
+++ 
b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-const-uniform-index.shader_test
@@ -45,6 +45,7 @@ fb tex 2d 1
 draw rect -1 -1 2 2
 
 # Test the result of imageStore
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 0
 probe all rgba 1.0 0.0 0.0 1.0
 
@@ -54,5 +55,6 @@ fb tex 2d 1
 draw rect -1 -1 2 2
 
 # Test the result of imageStore
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 0
 probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index.shader_test
 
b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index.shader_test
index 519ae0b..ebaeb5d 100644
--- 
a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index.shader_test
+++ 
b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index.shader_test
@@ -52,6 +52,7 @@ fb tex 2d 2
 draw rect -1 -1 2 2
 
 # Test the result of imageStore 0
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 0
 probe all rgba 1.0 0.0 0.0 1.0
 
@@ -62,5 +63,6 @@ fb tex 2d 2
 draw rect -1 -1 2 2
 
 # Test the result of imageStore 1
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 1
 probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index2.shader_test
 
b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index2.shader_test
index 1d33d3f..6bd1467 100644
--- 
a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index2.shader_test
+++ 
b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-mixed-const-non-const-uniform-index2.shader_test
@@ -52,6 +52,7 @@ fb tex 2d 2
 draw rect -1 -1 2 2
 
 # Test the result of imageStore 0
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 0
 probe all rgba 1.0 0.0 0.0 1.0
 
@@ -62,5 +63,6 @@ fb tex 2d 2
 draw rect -1 -1 2 2
 
 # Test the result of imageStore 1
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 1
 probe all rgba 0.0 1.0 0.0 1.0
diff --git 
a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-non-const-uniform-index.shader_test
 
b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-non-const-uniform-index.shader_test
index 646ea3b..62f9861 100644
--- 
a/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-non-const-uniform-index.shader_test
+++ 
b/tests/spec/arb_arrays_of_arrays/execution/image_store/basic-imageStore-non-const-uniform-index.shader_test
@@ -64,6 +64,7 @@ fb tex 2d 4
 draw rect -1 -1 2 2
 
 # Test the result of imageStore 0
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 0
 probe all rgba 1.0 0.0 0.0 1.0
 
@@ -75,6 +76,7 @@ fb tex 2d 4
 draw rect -1 -1 2 2
 
 # Test the result of imageStore 1
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 1
 probe all rgba 0.0 1.0 0.0 1.0
 
@@ -86,6 +88,7 @@ fb tex 2d 4
 draw rect -1 -1 2 2
 
 # Test the result of imageStore 2
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 2
 probe all rgba 0.0 0.0 1.0 1.0
 
@@ -97,5 +100,6 @@ fb tex 2d 4
 draw rect -1 -1 2 2
 
 # Test the result of imageStore 3
+memory barrier GL_FRAMEBUFFER_BARRIER_BIT
 fb tex 2d 3
 probe all rgba 0.0 1.0 1.0 1.0
diff --git 
a/tests/spec/arb_shader_image_load_store/execution/basic-imageStore-from-uniform.shader_test
 
b/tests/spec/arb_shader_image_load_store/execution/basic-imageStore-from-uniform.shader_test
index 7133593..f3e1084 100644
--- 
a/tests/spec/arb_shader_image_load_store/execution/basic-imageStore-from-uniform.shader_test
+++ 
b/tests/spec/arb_shader_image_load_store/execution/basic-imageStore-from-uniform.shader_test
@@ -43,6 +43,7 @@ fb tex 2d 1
 draw rect -1 -1 2 2
 
 # Test the result of imageStore
+memory barrier