i965/fs: Return result of image atomic in a register of the expected type.
authorFrancisco Jerez <currojerez@riseup.net>
Sun, 16 Aug 2015 22:52:19 +0000 (01:52 +0300)
committerFrancisco Jerez <currojerez@riseup.net>
Tue, 23 Feb 2016 03:57:09 +0000 (19:57 -0800)
So the result is of float type if we're implementing the float
overload of imageAtomicExchange.  This is the only back-end change
required to support OES_shader_image_atomic AFAICT.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp

index 081dbad..75734d2 100644 (file)
@@ -1125,7 +1125,7 @@ namespace brw {
          if (rsize && pred)
             set_predicate(pred, bld.SEL(tmp, tmp, brw_imm_d(0)));
 
-         return tmp;
+         return retype(tmp, src0.type);
       }
    }
 }