Add support for barriers in the compiler

The patch adds support for barriers in vertex, fragment and compute
shaders.

BUG:angleproject:1442
TEST:angle_unittests

Change-Id: Ic85c3337911851a93a3f56bd935774181600eddd
Reviewed-on: https://chromium-review.googlesource.com/380641
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/compiler/translator/OutputGLSLBase.cpp b/src/compiler/translator/OutputGLSLBase.cpp
index 839ceb6..9256faa 100644
--- a/src/compiler/translator/OutputGLSLBase.cpp
+++ b/src/compiler/translator/OutputGLSLBase.cpp
@@ -1113,7 +1113,27 @@
         case EOpMul:
             writeBuiltInFunctionTriplet(visit, "matrixCompMult(", useEmulatedFunction);
             break;
-
+        case EOpBarrier:
+            writeBuiltInFunctionTriplet(visit, "barrier(", useEmulatedFunction);
+            break;
+        case EOpMemoryBarrier:
+            writeBuiltInFunctionTriplet(visit, "memoryBarrier(", useEmulatedFunction);
+            break;
+        case EOpMemoryBarrierAtomicCounter:
+            writeBuiltInFunctionTriplet(visit, "memoryBarrierAtomicCounter(", useEmulatedFunction);
+            break;
+        case EOpMemoryBarrierBuffer:
+            writeBuiltInFunctionTriplet(visit, "memoryBarrierBuffer(", useEmulatedFunction);
+            break;
+        case EOpMemoryBarrierImage:
+            writeBuiltInFunctionTriplet(visit, "memoryBarrierImage(", useEmulatedFunction);
+            break;
+        case EOpMemoryBarrierShared:
+            writeBuiltInFunctionTriplet(visit, "memoryBarrierShared(", useEmulatedFunction);
+            break;
+        case EOpGroupMemoryBarrier:
+            writeBuiltInFunctionTriplet(visit, "groupMemoryBarrier(", useEmulatedFunction);
+            break;
         default:
             UNREACHABLE();
     }