Add support for EXT_YUV_target

Add new sampler type "__samplerExternal2DY2YEXT"
to sample a YUV texture image and output color value
without any color conversion,
new additional type to specify color space standard formula and
built-in functions for yuv to rgb transformation.

Change-Id: I1780650fe84cd75191c1ca1e4118e89d585bfd92
Reviewed-on: https://chromium-review.googlesource.com/454697
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/compiler/translator/ConstantUnion.h b/src/compiler/translator/ConstantUnion.h
index dbec67e..870acb6 100644
--- a/src/compiler/translator/ConstantUnion.h
+++ b/src/compiler/translator/ConstantUnion.h
@@ -46,20 +46,29 @@
         type   = EbtBool;
     }
 
+    void setYuvCscStandardEXTConst(TYuvCscStandardEXT s)
+    {
+        yuvCscStandardEXTConst = s;
+        type                   = EbtYuvCscStandardEXT;
+    }
+
     int getIConst() const { return iConst; }
     unsigned int getUConst() const { return uConst; }
     float getFConst() const { return fConst; }
     bool getBConst() const { return bConst; }
+    TYuvCscStandardEXT getYuvCscStandardEXTConst() const { return yuvCscStandardEXTConst; }
 
     bool operator==(const int i) const;
     bool operator==(const unsigned int u) const;
     bool operator==(const float f) const;
     bool operator==(const bool b) const;
+    bool operator==(const TYuvCscStandardEXT s) const;
     bool operator==(const TConstantUnion &constant) const;
     bool operator!=(const int i) const;
     bool operator!=(const unsigned int u) const;
     bool operator!=(const float f) const;
     bool operator!=(const bool b) const;
+    bool operator!=(const TYuvCscStandardEXT s) const;
     bool operator!=(const TConstantUnion &constant) const;
     bool operator>(const TConstantUnion &constant) const;
     bool operator<(const TConstantUnion &constant) const;
@@ -97,6 +106,7 @@
         unsigned int uConst;  // used for uvec, scalar uints
         bool bConst;          // used for bvec, scalar bools
         float fConst;         // used for vec, mat, scalar floats
+        TYuvCscStandardEXT yuvCscStandardEXTConst;
     };
 
     TBasicType type;