ES31: Implement glDispatchCompute for D3D backend

BUG=angleproject:1955
TESTCASE=angle_end2end_tests

Change-Id: I69b4df83d67017d39df67753d6d17fc15ececebf
Reviewed-on: https://chromium-review.googlesource.com/462067
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/compiler/translator/OutputHLSL.cpp b/src/compiler/translator/OutputHLSL.cpp
index 695a4d0..0ee29eb 100644
--- a/src/compiler/translator/OutputHLSL.cpp
+++ b/src/compiler/translator/OutputHLSL.cpp
@@ -639,13 +639,16 @@
     else  // Compute shader
     {
         ASSERT(mShaderType == GL_COMPUTE_SHADER);
+
+        out << "cbuffer DriverConstants : register(b1)\n"
+               "{\n";
         if (mUsesNumWorkGroups)
         {
-            out << "cbuffer DriverConstants : register(b1)\n"
-                   "{\n";
             out << "    uint3 gl_NumWorkGroups : packoffset(c0);\n";
-            out << "};\n";
         }
+        ASSERT(mOutputType == SH_HLSL_4_1_OUTPUT);
+        mUniformHLSL->samplerMetadataUniforms(out, "c1");
+        out << "};\n";
 
         // Follow built-in variables would be initialized in
         // DynamicHLSL::generateComputeShaderLinkHLSL, if they