Put GL to HLSL type string code to a separate helper function in ProgramBinary.
TRAC #23080
Signed-off-by: Nicolas Capens
Signed-off-by: Shannon Woods
Author: Jamie Madill
git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2399 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index fb1b438..9c3c3a9 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -36,6 +36,30 @@
return buffer;
}
+namespace gl_d3d
+{
+ std::string TypeString(GLenum type)
+ {
+ switch (type)
+ {
+ case GL_FLOAT: return "float";
+ case GL_FLOAT_VEC2: return "float2";
+ case GL_FLOAT_VEC3: return "float3";
+ case GL_FLOAT_VEC4: return "float4";
+ case GL_FLOAT_MAT2: return "float2x2";
+ case GL_FLOAT_MAT3: return "float3x3";
+ case GL_FLOAT_MAT4: return "float4x4";
+ case GL_FLOAT_MAT2x3: return "float2x3";
+ case GL_FLOAT_MAT3x2: return "float3x2";
+ case GL_FLOAT_MAT2x4: return "float2x4";
+ case GL_FLOAT_MAT4x2: return "float4x2";
+ case GL_FLOAT_MAT3x4: return "float3x4";
+ case GL_FLOAT_MAT4x3: return "float4x3";
+ default: UNREACHABLE(); return "invalid-gl-type";
+ }
+ }
+}
+
namespace
{
@@ -1125,24 +1149,7 @@
int semanticIndex = 0;
for (AttributeArray::iterator attribute = vertexShader->mAttributes.begin(); attribute != vertexShader->mAttributes.end(); attribute++)
{
- switch (TransposeMatrixType(attribute->type))
- {
- case GL_FLOAT: vertexHLSL += " float "; break;
- case GL_FLOAT_VEC2: vertexHLSL += " float2 "; break;
- case GL_FLOAT_VEC3: vertexHLSL += " float3 "; break;
- case GL_FLOAT_VEC4: vertexHLSL += " float4 "; break;
- case GL_FLOAT_MAT2: vertexHLSL += " float2x2 "; break;
- case GL_FLOAT_MAT3: vertexHLSL += " float3x3 "; break;
- case GL_FLOAT_MAT4: vertexHLSL += " float4x4 "; break;
- case GL_FLOAT_MAT2x3: vertexHLSL += " float2x3 "; break;
- case GL_FLOAT_MAT3x2: vertexHLSL += " float3x2 "; break;
- case GL_FLOAT_MAT2x4: vertexHLSL += " float2x4 "; break;
- case GL_FLOAT_MAT4x2: vertexHLSL += " float4x2 "; break;
- case GL_FLOAT_MAT3x4: vertexHLSL += " float3x4 "; break;
- case GL_FLOAT_MAT4x3: vertexHLSL += " float4x3 "; break;
- default: UNREACHABLE();
- }
-
+ vertexHLSL += " " + gl_d3d::TypeString(TransposeMatrixType(attribute->type)) + " ";
vertexHLSL += decorateAttribute(attribute->name) + " : TEXCOORD" + str(semanticIndex) + ";\n";
semanticIndex += AttributeRegisterCount(attribute->type);
@@ -1490,6 +1497,7 @@
}
std::string n = str(varying->reg + i * rows + j);
+
varyingHLSL += "float" + str(VariableColumnCount(transposedType)) + " v" + n + " : " + varyingSemantic + n + ";\n";
}
}