D3D: Small optimizations to uniform updates.

Uses more of the type info table for updates.
Also special-case clamping when uniform count == 1.

Improves the speed of the d3d11 uniform stress test by ~20%.

BUG=angleproject:1390

Change-Id: I6707c67db84c94a28b1519b0bbee5d28fe38b189
Reviewed-on: https://chromium-review.googlesource.com/646828
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Program.cpp b/src/libANGLE/Program.cpp
index 4916ecf..fc39b40 100644
--- a/src/libANGLE/Program.cpp
+++ b/src/libANGLE/Program.cpp
@@ -2982,6 +2982,9 @@
                                    int vectorSize,
                                    const T *v)
 {
+    if (count == 1)
+        return 1;
+
     const LinkedUniform &linkedUniform = mState.mUniforms[locationInfo.index];
 
     // OpenGL ES 3.0.4 spec pg 67: "Values for any array element that exceeds the highest array