Simplify the gl::Varying struct to be more like sh::Varying.
The subsequent patches will remove gl::Varying entirely.
TRAC #23746
Signed-off-by: Nicolas Capens
Signed-off-by: Shannon Woods
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index 0a768b0..116cc94 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -936,7 +936,7 @@
{
Varying *varying = &fragmentShader->mVaryings[varyingIndex];
GLenum transposedType = TransposeMatrixType(varying->type);
- int n = VariableRowCount(transposedType) * varying->size;
+ int n = VariableRowCount(transposedType) * varying->elementCount();
int m = VariableColumnCount(transposedType);
bool success = false;
@@ -959,8 +959,8 @@
if (available)
{
- varying->reg = r;
- varying->col = 0;
+ varying->registerIndex = r;
+ varying->elementIndex = 0;
for (int y = 0; y < n; y++)
{
@@ -993,8 +993,8 @@
if (available)
{
- varying->reg = r;
- varying->col = 2;
+ varying->registerIndex = r;
+ varying->elementIndex = 2;
for (int y = 0; y < n; y++)
{
@@ -1037,7 +1037,7 @@
{
if (!packing[r][column])
{
- varying->reg = r;
+ varying->registerIndex = r;
for (int y = r; y < r + n; y++)
{
@@ -1048,7 +1048,7 @@
}
}
- varying->col = column;
+ varying->elementIndex = column;
success = true;
}
@@ -1152,15 +1152,15 @@
Varying *output = &vertexShader->mVaryings[vertVaryingIndex];
if (output->name == input->name)
{
- if (output->type != input->type || output->size != input->size || output->interpolation != input->interpolation)
+ if (output->type != input->type || output->arraySize != input->arraySize || output->interpolation != input->interpolation)
{
infoLog.append("Type of vertex varying %s does not match that of the fragment varying", output->name.c_str());
return false;
}
- output->reg = input->reg;
- output->col = input->col;
+ output->registerIndex = input->registerIndex;
+ output->elementIndex = input->elementIndex;
matched = true;
break;
@@ -1302,15 +1302,15 @@
for (unsigned int vertVaryingIndex = 0; vertVaryingIndex < vertexShader->mVaryings.size(); vertVaryingIndex++)
{
Varying *varying = &vertexShader->mVaryings[vertVaryingIndex];
- if (varying->reg >= 0)
+ if (varying->registerAssigned())
{
- for (int i = 0; i < varying->size; i++)
+ for (unsigned int elementIndex = 0; elementIndex < varying->elementCount(); elementIndex++)
{
- int rows = VariableRowCount(TransposeMatrixType(varying->type));
+ int variableRows = VariableRowCount(TransposeMatrixType(varying->type));
- for (int j = 0; j < rows; j++)
+ for (int row = 0; row < variableRows; row++)
{
- int r = varying->reg + i * rows + j;
+ int r = varying->registerIndex + elementIndex * variableRows + row;
vertexHLSL += " output.v" + str(r);
bool sharedRegister = false; // Register used by multiple varyings
@@ -1343,16 +1343,16 @@
}
}
- vertexHLSL += " = " + varying->name;
+ vertexHLSL += " = _" + varying->name;
- if (varying->array)
+ if (varying->isArray())
{
- vertexHLSL += arrayString(i);
+ vertexHLSL += arrayString(elementIndex);
}
- if (rows > 1)
+ if (variableRows > 1)
{
- vertexHLSL += arrayString(j);
+ vertexHLSL += arrayString(row);
}
vertexHLSL += ";\n";
@@ -1501,25 +1501,25 @@
for (unsigned int varyingIndex = 0; varyingIndex < fragmentShader->mVaryings.size(); varyingIndex++)
{
Varying *varying = &fragmentShader->mVaryings[varyingIndex];
- if (varying->reg >= 0)
+ if (varying->registerAssigned())
{
- for (int i = 0; i < varying->size; i++)
+ for (unsigned int elementIndex = 0; elementIndex < varying->elementCount(); elementIndex++)
{
GLenum transposedType = TransposeMatrixType(varying->type);
- int rows = VariableRowCount(transposedType);
- for (int j = 0; j < rows; j++)
+ int variableRows = VariableRowCount(transposedType);
+ for (int row = 0; row < variableRows; row++)
{
- std::string n = str(varying->reg + i * rows + j);
- pixelHLSL += " " + varying->name;
+ std::string n = str(varying->registerIndex + elementIndex * variableRows + row);
+ pixelHLSL += " _" + varying->name;
- if (varying->array)
+ if (varying->isArray())
{
- pixelHLSL += arrayString(i);
+ pixelHLSL += arrayString(elementIndex);
}
- if (rows > 1)
+ if (variableRows > 1)
{
- pixelHLSL += arrayString(j);
+ pixelHLSL += arrayString(row);
}
switch (VariableColumnCount(transposedType))
@@ -1582,23 +1582,23 @@
for (unsigned int varyingIndex = 0; varyingIndex < fragmentShader->mVaryings.size(); varyingIndex++)
{
Varying *varying = &fragmentShader->mVaryings[varyingIndex];
- if (varying->reg >= 0)
+ if (varying->registerAssigned())
{
- for (int i = 0; i < varying->size; i++)
+ for (unsigned int elementIndex = 0; elementIndex < varying->elementCount(); elementIndex++)
{
GLenum transposedType = TransposeMatrixType(varying->type);
- int rows = VariableRowCount(transposedType);
- for (int j = 0; j < rows; j++)
+ int variableRows = VariableRowCount(transposedType);
+ for (int row = 0; row < variableRows; row++)
{
switch (varying->interpolation)
{
- case Smooth: varyingHLSL += " "; break;
- case Flat: varyingHLSL += " nointerpolation "; break;
- case Centroid: varyingHLSL += " centroid "; break;
+ case sh::INTERPOLATION_SMOOTH: varyingHLSL += " "; break;
+ case sh::INTERPOLATION_FLAT: varyingHLSL += " nointerpolation "; break;
+ case sh::INTERPOLATION_CENTROID: varyingHLSL += " centroid "; break;
default: UNREACHABLE();
}
- std::string n = str(varying->reg + i * rows + j);
+ std::string n = str(varying->registerIndex + elementIndex * variableRows + row);
std::string typeString = gl_d3d::TypeString(UniformComponentType(transposedType)) + str(VariableColumnCount(transposedType));
varyingHLSL += typeString + " v" + n + " : " + varyingSemantic + n + ";\n";