Support sampler2DArray throughout the compiler.

TRAC #23377
Signed-off-by: Jamie Madill
Signed-off-by: Shannon Woods
Author: Nicolas Capens
diff --git a/src/compiler/BaseTypes.h b/src/compiler/BaseTypes.h
index 79f793b..c8fdeb5 100644
--- a/src/compiler/BaseTypes.h
+++ b/src/compiler/BaseTypes.h
@@ -76,12 +76,15 @@
     case EbtSamplerCube:       return "samplerCube";       break;
     case EbtSamplerExternalOES: return "samplerExternalOES"; break;
     case EbtSampler2DRect:     return "sampler2DRect";     break;
+    case EbtSampler2DArray:    return "sampler2DArray";    break;
     case EbtISampler2D:        return "isampler2D";        break;
     case EbtISampler3D:        return "isampler3D";        break;
     case EbtISamplerCube:      return "isamplerCube";      break;
+    case EbtISampler2DArray:   return "isampler2DArray";   break;
     case EbtUSampler2D:        return "usampler2D";        break;
     case EbtUSampler3D:        return "usampler3D";        break;
     case EbtUSamplerCube:      return "usamplerCube";      break;
+    case EbtUSampler2DArray:   return "usampler2DArray";   break;
     case EbtStruct:            return "structure";         break;
     case EbtInterfaceBlock:    return "interface block";   break;
     default:                   return "unknown type";
diff --git a/src/compiler/SymbolTable.cpp b/src/compiler/SymbolTable.cpp
index 8d3d76a..8e4636d 100644
--- a/src/compiler/SymbolTable.cpp
+++ b/src/compiler/SymbolTable.cpp
@@ -51,12 +51,15 @@
     case EbtSampler2D:          mangledName += "s2";     break;
     case EbtSampler3D:          mangledName += "s3";     break;
     case EbtSamplerCube:        mangledName += "sC";     break;
+    case EbtSampler2DArray:     mangledName += "s2a";    break;
     case EbtISampler2D:         mangledName += "is2";    break;
     case EbtISampler3D:         mangledName += "is3";    break;
     case EbtISamplerCube:       mangledName += "isC";    break;
+    case EbtISampler2DArray:    mangledName += "is2a";   break;
     case EbtUSampler2D:         mangledName += "us2";    break;
     case EbtUSampler3D:         mangledName += "us3";    break;
     case EbtUSamplerCube:       mangledName += "usC";    break;
+    case EbtUSampler2DArray:    mangledName += "us2a";   break;
     case EbtStruct:
         mangledName += "struct-";
         if (typeName)
diff --git a/src/compiler/VariableInfo.cpp b/src/compiler/VariableInfo.cpp
index a8dd472..cce5e36 100644
--- a/src/compiler/VariableInfo.cpp
+++ b/src/compiler/VariableInfo.cpp
@@ -96,13 +96,19 @@
               return SH_BOOL;
           }
       case EbtSampler2D: return SH_SAMPLER_2D;
+      case EbtSampler3D: return SH_SAMPLER_3D;
       case EbtSamplerCube: return SH_SAMPLER_CUBE;
       case EbtSamplerExternalOES: return SH_SAMPLER_EXTERNAL_OES;
       case EbtSampler2DRect: return SH_SAMPLER_2D_RECT_ARB;
+      case EbtSampler2DArray: return SH_SAMPLER_2D_ARRAY;
       case EbtISampler2D: return SH_INT_SAMPLER_2D;
+      case EbtISampler3D: return SH_INT_SAMPLER_3D;
       case EbtISamplerCube: return SH_INT_SAMPLER_CUBE;
+      case EbtISampler2DArray: return SH_INT_SAMPLER_2D_ARRAY;
       case EbtUSampler2D: return SH_UNSIGNED_INT_SAMPLER_2D;
+      case EbtUSampler3D: return SH_UNSIGNED_INT_SAMPLER_3D;
       case EbtUSamplerCube: return SH_UNSIGNED_INT_SAMPLER_CUBE;
+      case EbtUSampler2DArray: return SH_UNSIGNED_INT_SAMPLER_2D_ARRAY;
       default: UNREACHABLE();
     }
     return SH_NONE;