Use ShaderMap in Caps - Part II

This patch is the last one in the series of putting resource limits
on each shader stage into ShaderMap. With this patch, all such values
are organized in the corresponding ShaderMap.

This patch also cleans up all the related code by using this new
type of data structure.

BUG=angleproject:2169

Change-Id: I440643fe44ab63acf7da0a1611643beed1ba66d1
Reviewed-on: https://chromium-review.googlesource.com/1077748
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/Compiler.cpp b/src/libANGLE/Compiler.cpp
index a3eaebf..bd22734 100644
--- a/src/libANGLE/Compiler.cpp
+++ b/src/libANGLE/Compiler.cpp
@@ -97,9 +97,9 @@
     mResources.MaxProgramTextureGatherOffset    = caps.maxProgramTextureGatherOffset;
     mResources.MinProgramTextureGatherOffset    = caps.minProgramTextureGatherOffset;
     mResources.MaxImageUnits                    = caps.maxImageUnits;
-    mResources.MaxVertexImageUniforms           = caps.maxVertexImageUniforms;
-    mResources.MaxFragmentImageUniforms         = caps.maxFragmentImageUniforms;
-    mResources.MaxComputeImageUniforms          = caps.maxComputeImageUniforms;
+    mResources.MaxVertexImageUniforms           = caps.maxShaderImageUniforms[ShaderType::Vertex];
+    mResources.MaxFragmentImageUniforms         = caps.maxShaderImageUniforms[ShaderType::Fragment];
+    mResources.MaxComputeImageUniforms          = caps.maxShaderImageUniforms[ShaderType::Compute];
     mResources.MaxCombinedImageUniforms         = caps.maxCombinedImageUniforms;
     mResources.MaxCombinedShaderOutputResources = caps.maxCombinedShaderOutputResources;
     mResources.MaxUniformLocations              = caps.maxUniformLocations;
@@ -110,18 +110,21 @@
         mResources.MaxComputeWorkGroupSize[index]  = caps.maxComputeWorkGroupSize[index];
     }
 
-    mResources.MaxComputeUniformComponents = caps.maxComputeUniformComponents;
+    mResources.MaxComputeUniformComponents = caps.maxShaderUniformComponents[ShaderType::Compute];
     mResources.MaxComputeTextureImageUnits = caps.maxShaderTextureImageUnits[ShaderType::Compute];
 
-    mResources.MaxComputeAtomicCounters       = caps.maxComputeAtomicCounters;
-    mResources.MaxComputeAtomicCounterBuffers = caps.maxComputeAtomicCounterBuffers;
+    mResources.MaxComputeAtomicCounters = caps.maxShaderAtomicCounters[ShaderType::Compute];
+    mResources.MaxComputeAtomicCounterBuffers =
+        caps.maxShaderAtomicCounterBuffers[ShaderType::Compute];
 
-    mResources.MaxVertexAtomicCounters         = caps.maxVertexAtomicCounters;
-    mResources.MaxFragmentAtomicCounters       = caps.maxFragmentAtomicCounters;
+    mResources.MaxVertexAtomicCounters         = caps.maxShaderAtomicCounters[ShaderType::Vertex];
+    mResources.MaxFragmentAtomicCounters       = caps.maxShaderAtomicCounters[ShaderType::Fragment];
     mResources.MaxCombinedAtomicCounters       = caps.maxCombinedAtomicCounters;
     mResources.MaxAtomicCounterBindings        = caps.maxAtomicCounterBufferBindings;
-    mResources.MaxVertexAtomicCounterBuffers   = caps.maxVertexAtomicCounterBuffers;
-    mResources.MaxFragmentAtomicCounterBuffers = caps.maxFragmentAtomicCounterBuffers;
+    mResources.MaxVertexAtomicCounterBuffers =
+        caps.maxShaderAtomicCounterBuffers[ShaderType::Vertex];
+    mResources.MaxFragmentAtomicCounterBuffers =
+        caps.maxShaderAtomicCounterBuffers[ShaderType::Fragment];
     mResources.MaxCombinedAtomicCounterBuffers = caps.maxCombinedAtomicCounterBuffers;
     mResources.MaxAtomicCounterBufferSize      = caps.maxAtomicCounterBufferSize;
 
@@ -138,18 +141,20 @@
 
     // Geometry Shader constants
     mResources.EXT_geometry_shader              = extensions.geometryShader;
-    mResources.MaxGeometryUniformComponents     = caps.maxGeometryUniformComponents;
+    mResources.MaxGeometryUniformComponents = caps.maxShaderUniformComponents[ShaderType::Geometry];
     mResources.MaxGeometryUniformBlocks         = caps.maxShaderUniformBlocks[ShaderType::Geometry];
     mResources.MaxGeometryInputComponents       = caps.maxGeometryInputComponents;
     mResources.MaxGeometryOutputComponents      = caps.maxGeometryOutputComponents;
     mResources.MaxGeometryOutputVertices        = caps.maxGeometryOutputVertices;
     mResources.MaxGeometryTotalOutputComponents = caps.maxGeometryTotalOutputComponents;
     mResources.MaxGeometryTextureImageUnits = caps.maxShaderTextureImageUnits[ShaderType::Geometry];
-    mResources.MaxGeometryAtomicCounterBuffers = caps.maxGeometryAtomicCounterBuffers;
-    mResources.MaxGeometryAtomicCounters       = caps.maxGeometryAtomicCounters;
-    mResources.MaxGeometryShaderStorageBlocks  = caps.maxShaderStorageBlocks[ShaderType::Geometry];
-    mResources.MaxGeometryShaderInvocations    = caps.maxGeometryShaderInvocations;
-    mResources.MaxGeometryImageUniforms        = caps.maxGeometryImageUniforms;
+
+    mResources.MaxGeometryAtomicCounterBuffers =
+        caps.maxShaderAtomicCounterBuffers[ShaderType::Geometry];
+    mResources.MaxGeometryAtomicCounters      = caps.maxShaderAtomicCounters[ShaderType::Geometry];
+    mResources.MaxGeometryShaderStorageBlocks = caps.maxShaderStorageBlocks[ShaderType::Geometry];
+    mResources.MaxGeometryShaderInvocations   = caps.maxGeometryShaderInvocations;
+    mResources.MaxGeometryImageUniforms       = caps.maxShaderImageUniforms[ShaderType::Geometry];
 }
 
 Compiler::~Compiler()