Disable large point rendering for DX11.
TRAC #22352
Signed-off-by: Geoff Lang
Signed-off-by: Daniel Koch
Author: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1690 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index 5de5d12..93102d0 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -1183,8 +1183,7 @@
}
// Write the HLSL input/output declarations
- const bool sm3 = (mRenderer->getMajorShaderModel() >= 3);
- const bool sm4 = (mRenderer->getMajorShaderModel() >= 4);
+ const int shaderModel = mRenderer->getMajorShaderModel();
Context *context = getContext();
const int maxVaryingVectors = context->getMaximumVaryingVectors();
@@ -1227,9 +1226,9 @@
}
mUsesPointSize = vertexShader->mUsesPointSize;
- std::string varyingSemantic = (mUsesPointSize && sm3) ? "COLOR" : "TEXCOORD";
- std::string targetSemantic = sm4 ? "SV_Target" : "COLOR";
- std::string positionSemantic = sm4 ? "SV_POSITION" : "POSITION";
+ std::string varyingSemantic = (mUsesPointSize && shaderModel >= 3) ? "COLOR" : "TEXCOORD";
+ std::string targetSemantic = (shaderModel >= 4) ? "SV_Target" : "COLOR";
+ std::string positionSemantic = (shaderModel >= 4) ? "SV_POSITION" : "POSITION";
vertexHLSL += "struct VS_INPUT\n"
"{\n";
@@ -1271,7 +1270,7 @@
vertexHLSL += " float4 gl_FragCoord : " + varyingSemantic + str(registers) + ";\n";
}
- if (vertexShader->mUsesPointSize && sm3)
+ if (vertexShader->mUsesPointSize && shaderModel >= 3)
{
vertexHLSL += " float gl_PointSize : PSIZE;\n";
}
@@ -1303,7 +1302,7 @@
" output.gl_Position.z = (gl_Position.z + gl_Position.w) * 0.5;\n"
" output.gl_Position.w = gl_Position.w;\n";
- if (vertexShader->mUsesPointSize && sm3)
+ if (vertexShader->mUsesPointSize && shaderModel >= 3)
{
vertexHLSL += " output.gl_PointSize = gl_PointSize;\n";
}
@@ -1402,17 +1401,17 @@
{
pixelHLSL += " float4 gl_FragCoord : " + varyingSemantic + str(registers) + ";\n";
- if (sm4)
+ if (shaderModel >= 4)
{
pixelHLSL += " float4 dx_VPos : SV_Position;\n";
}
- else if (sm3)
+ else if (shaderModel >= 3)
{
pixelHLSL += " float2 dx_VPos : VPOS;\n";
}
}
- if (fragmentShader->mUsesPointCoord && sm3)
+ if (fragmentShader->mUsesPointCoord && shaderModel == 3)
{
pixelHLSL += " float2 gl_PointCoord : TEXCOORD0;\n";
}
@@ -1436,12 +1435,12 @@
{
pixelHLSL += " float rhw = 1.0 / input.gl_FragCoord.w;\n";
- if (sm4)
+ if (shaderModel >= 4)
{
pixelHLSL += " gl_FragCoord.x = input.dx_VPos.x;\n"
" gl_FragCoord.y = input.dx_VPos.y;\n";
}
- else if (sm3)
+ else if (shaderModel >= 3)
{
pixelHLSL += " gl_FragCoord.x = input.dx_VPos.x + 0.5;\n"
" gl_FragCoord.y = input.dx_VPos.y + 0.5;\n";
@@ -1457,7 +1456,7 @@
" gl_FragCoord.w = rhw;\n";
}
- if (fragmentShader->mUsesPointCoord && sm3)
+ if (fragmentShader->mUsesPointCoord && shaderModel == 3)
{
pixelHLSL += " gl_PointCoord.x = input.gl_PointCoord.x;\n";
pixelHLSL += " gl_PointCoord.y = 1.0 - input.gl_PointCoord.y;\n";