Use SV_Target semantic for gl_Color when compiling for Shader Model 4+.

TRAC #22191
Signed-off-by: Shannon Woods
Signed-off-by: Daniel Koch
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1527 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index cb7f3aa..e73f7c7 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -1204,7 +1204,8 @@
     }
 
     // Write the HLSL input/output declarations
-    const bool sm3 = mRenderer->getMajorShaderModel() >= 3;
+    const bool sm3 = (mRenderer->getMajorShaderModel() >= 3);
+    const bool sm4 = (mRenderer->getMajorShaderModel() >= 4);
     Context *context = getContext();
     const int maxVaryingVectors = context->getMaximumVaryingVectors();
 
@@ -1248,6 +1249,7 @@
 
     mUsesPointSize = vertexShader->mUsesPointSize;
     std::string varyingSemantic = (mUsesPointSize && sm3) ? "COLOR" : "TEXCOORD";
+    std::string targetSemantic = sm4 ? "SV_Target" : "COLOR";
 
     vertexHLSL += "struct VS_INPUT\n"
                    "{\n";
@@ -1438,7 +1440,7 @@
                   "\n"
                   "struct PS_OUTPUT\n"
                   "{\n"
-                  "    float4 gl_Color[1] : COLOR;\n"
+                  "    float4 gl_Color[1] : " + targetSemantic + ";\n"
                   "};\n"
                   "\n"
                   "PS_OUTPUT main(PS_INPUT input)\n"