Commit ce79dda1 by Jamie Madill

Change the varyings list type from a linked list to a vector type.

TRAC #23746 Signed-off-by: Nicolas Capens Signed-off-by: Shannon Woods
parent 1cb333eb
...@@ -932,8 +932,9 @@ int ProgramBinary::packVaryings(InfoLog &infoLog, const Varying *packing[][4], F ...@@ -932,8 +932,9 @@ int ProgramBinary::packVaryings(InfoLog &infoLog, const Varying *packing[][4], F
fragmentShader->resetVaryingsRegisterAssignment(); fragmentShader->resetVaryingsRegisterAssignment();
for (VaryingList::iterator varying = fragmentShader->mVaryings.begin(); varying != fragmentShader->mVaryings.end(); varying++) for (unsigned int varyingIndex = 0; varyingIndex < fragmentShader->mVaryings.size(); varyingIndex++)
{ {
Varying *varying = &fragmentShader->mVaryings[varyingIndex];
GLenum transposedType = TransposeMatrixType(varying->type); GLenum transposedType = TransposeMatrixType(varying->type);
int n = VariableRowCount(transposedType) * varying->size; int n = VariableRowCount(transposedType) * varying->size;
int m = VariableColumnCount(transposedType); int m = VariableColumnCount(transposedType);
...@@ -1141,12 +1142,14 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying ...@@ -1141,12 +1142,14 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying
vertexShader->resetVaryingsRegisterAssignment(); vertexShader->resetVaryingsRegisterAssignment();
for (VaryingList::iterator input = fragmentShader->mVaryings.begin(); input != fragmentShader->mVaryings.end(); input++) for (unsigned int fragVaryingIndex = 0; fragVaryingIndex < fragmentShader->mVaryings.size(); fragVaryingIndex++)
{ {
Varying *input = &fragmentShader->mVaryings[fragVaryingIndex];
bool matched = false; bool matched = false;
for (VaryingList::iterator output = vertexShader->mVaryings.begin(); output != vertexShader->mVaryings.end(); output++) for (unsigned int vertVaryingIndex = 0; vertVaryingIndex < vertexShader->mVaryings.size(); vertVaryingIndex++)
{ {
Varying *output = &vertexShader->mVaryings[vertVaryingIndex];
if (output->name == input->name) if (output->name == input->name)
{ {
if (output->type != input->type || output->size != input->size || output->interpolation != input->interpolation) if (output->type != input->type || output->size != input->size || output->interpolation != input->interpolation)
...@@ -1296,8 +1299,9 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying ...@@ -1296,8 +1299,9 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying
vertexHLSL += " output.gl_FragCoord = gl_Position;\n"; vertexHLSL += " output.gl_FragCoord = gl_Position;\n";
} }
for (VaryingList::iterator varying = vertexShader->mVaryings.begin(); varying != vertexShader->mVaryings.end(); varying++) for (unsigned int vertVaryingIndex = 0; vertVaryingIndex < vertexShader->mVaryings.size(); vertVaryingIndex++)
{ {
Varying *varying = &vertexShader->mVaryings[vertVaryingIndex];
if (varying->reg >= 0) if (varying->reg >= 0)
{ {
for (int i = 0; i < varying->size; i++) for (int i = 0; i < varying->size; i++)
...@@ -1494,8 +1498,9 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying ...@@ -1494,8 +1498,9 @@ bool ProgramBinary::linkVaryings(InfoLog &infoLog, int registers, const Varying
} }
} }
for (VaryingList::iterator varying = fragmentShader->mVaryings.begin(); varying != fragmentShader->mVaryings.end(); varying++) for (unsigned int varyingIndex = 0; varyingIndex < fragmentShader->mVaryings.size(); varyingIndex++)
{ {
Varying *varying = &fragmentShader->mVaryings[varyingIndex];
if (varying->reg >= 0) if (varying->reg >= 0)
{ {
for (int i = 0; i < varying->size; i++) for (int i = 0; i < varying->size; i++)
...@@ -1574,8 +1579,9 @@ std::string ProgramBinary::generateVaryingHLSL(FragmentShader *fragmentShader, c ...@@ -1574,8 +1579,9 @@ std::string ProgramBinary::generateVaryingHLSL(FragmentShader *fragmentShader, c
{ {
std::string varyingHLSL; std::string varyingHLSL;
for (VaryingList::iterator varying = fragmentShader->mVaryings.begin(); varying != fragmentShader->mVaryings.end(); varying++) for (unsigned int varyingIndex = 0; varyingIndex < fragmentShader->mVaryings.size(); varyingIndex++)
{ {
Varying *varying = &fragmentShader->mVaryings[varyingIndex];
if (varying->reg >= 0) if (varying->reg >= 0)
{ {
for (int i = 0; i < varying->size; i++) for (int i = 0; i < varying->size; i++)
......
...@@ -241,10 +241,11 @@ void Shader::parseVaryings(void *compiler) ...@@ -241,10 +241,11 @@ void Shader::parseVaryings(void *compiler)
void Shader::resetVaryingsRegisterAssignment() void Shader::resetVaryingsRegisterAssignment()
{ {
for (VaryingList::iterator var = mVaryings.begin(); var != mVaryings.end(); var++) for (unsigned int varyingIndex = 0; varyingIndex < mVaryings.size(); varyingIndex++)
{ {
var->reg = -1; Varying *varying = &mVaryings[varyingIndex];
var->col = -1; varying->reg = -1;
varying->col = -1;
} }
} }
...@@ -525,7 +526,7 @@ void FragmentShader::compile() ...@@ -525,7 +526,7 @@ void FragmentShader::compile()
compileToHLSL(mFragmentCompiler); compileToHLSL(mFragmentCompiler);
parseVaryings(mFragmentCompiler); parseVaryings(mFragmentCompiler);
mVaryings.sort(compareVarying); std::sort(mVaryings.begin(), mVaryings.end(), compareVarying);
const std::string &hlsl = getHLSL(); const std::string &hlsl = getHLSL();
if (!hlsl.empty()) if (!hlsl.empty())
......
...@@ -60,8 +60,6 @@ struct Varying ...@@ -60,8 +60,6 @@ struct Varying
int col; // First register element, assigned during link int col; // First register element, assigned during link
}; };
typedef std::list<Varying> VaryingList;
class Shader class Shader
{ {
friend class ProgramBinary; friend class ProgramBinary;
...@@ -111,7 +109,7 @@ class Shader ...@@ -111,7 +109,7 @@ class Shader
const rx::Renderer *const mRenderer; const rx::Renderer *const mRenderer;
VaryingList mVaryings; std::vector<Varying> mVaryings;
bool mUsesMultipleRenderTargets; bool mUsesMultipleRenderTargets;
bool mUsesFragColor; bool mUsesFragColor;
......
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