Fix varying relinking.

TRAC #15527 Issue=100 Signed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@560 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent b31f35ab
...@@ -1169,6 +1169,20 @@ bool Program::linkVaryings() ...@@ -1169,6 +1169,20 @@ bool Program::linkVaryings()
return false; return false;
} }
// Reset the varying register assignments
for (VaryingList::iterator fragVar = mFragmentShader->varyings.begin(); fragVar != mFragmentShader->varyings.end(); fragVar++)
{
fragVar->reg = -1;
fragVar->col = -1;
}
for (VaryingList::iterator vtxVar = mVertexShader->varyings.begin(); vtxVar != mVertexShader->varyings.end(); vtxVar++)
{
vtxVar->reg = -1;
vtxVar->col = -1;
}
// Map the varyings to the register file
const Varying *packing[MAX_VARYING_VECTORS_SM3][4] = {NULL}; const Varying *packing[MAX_VARYING_VECTORS_SM3][4] = {NULL};
int registers = packVaryings(packing); int registers = packVaryings(packing);
...@@ -1177,6 +1191,7 @@ bool Program::linkVaryings() ...@@ -1177,6 +1191,7 @@ bool Program::linkVaryings()
return false; return false;
} }
// Write the HLSL input/output declarations
Context *context = getContext(); Context *context = getContext();
const bool sm3 = context->supportsShaderModel3(); const bool sm3 = context->supportsShaderModel3();
const int maxVaryingVectors = context->getMaximumVaryingVectors(); const int maxVaryingVectors = context->getMaximumVaryingVectors();
...@@ -1213,7 +1228,7 @@ bool Program::linkVaryings() ...@@ -1213,7 +1228,7 @@ bool Program::linkVaryings()
if (!matched) if (!matched)
{ {
appendToInfoLog("Fragment varying varying %s does not match any vertex varying", input->name.c_str()); appendToInfoLog("Fragment varying %s does not match any vertex varying", input->name.c_str());
return false; return false;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment