Lines Matching defs:varying

101 static bool packVarying(PackedVarying *varying, const int maxVaryingVectors, VaryingPacking packing)
103 GLenum transposedType = TransposeMatrixType(varying->type);
105 // matrices within varying structs are not transposed
106 int registers = (varying->isStruct() ? HLSLVariableRegisterCount(*varying) : VariableRowCount(transposedType)) * varying->elementCount();
107 int elements = (varying->isStruct() ? 4 : VariableColumnCount(transposedType));
128 varying->registerIndex = r;
129 varying->columnIndex = 0;
135 packing[r + y][x] = &*varying;
162 varying->registerIndex = r;
163 varying->columnIndex = 2;
169 packing[r + y][x] = &*varying;
206 varying->registerIndex = r;
207 varying->columnIndex = column;
211 packing[y][column] = &*varying;
226 // Packs varyings into generic varying registers, using the algorithm from [OpenGL ES Shading Language 1.00 rev. 17] appendix A section 7 page 111
227 // Returns the number of used varying registers, or -1 if unsuccesful
243 PackedVarying *varying = &fragmentVaryings[varyingIndex];
246 if (varying->isBuiltIn() || !varying->staticUse)
251 if (packVarying(varying, maxVaryingVectors, packing))
253 packedVaryings.insert(varying->name);
257 infoLog.append("Could not pack varying %s", varying->name.c_str());
270 PackedVarying *varying = &vertexVaryings[varyingIndex];
271 if (transformFeedbackVarying == varying->name)
273 if (!packVarying(varying, maxVaryingVectors, packing))
275 infoLog.append("Could not pack varying %s", varying->name.c_str());
286 infoLog.append("Transform feedback varying %s does not exist in the vertex shader.", transformFeedbackVarying.c_str());
315 const PackedVarying &varying = varyings[varyingIndex];
316 if (varying.registerAssigned())
318 ASSERT(!varying.isBuiltIn());
319 GLenum transposedType = TransposeMatrixType(varying.type);
320 int variableRows = (varying.isStruct() ? 1 : VariableRowCount(transposedType));
322 for (unsigned int elementIndex = 0; elementIndex < varying.elementCount(); elementIndex++)
327 // For example, if there are N registers, and we have N vec3 varyings and 1 float varying, then D3D will pack them into N registers.
328 // If the float varying has the 'nointerpolation' modifier on it then we would need N + 1 registers, and D3D compilation will fail.
330 switch (varying.interpolation)
338 unsigned int semanticIndex = elementIndex * variableRows + varying.columnIndex * mRenderer->getRendererCaps().maxVaryingVectors + varying.registerIndex + row;
343 if (varying.isStruct())
347 typeString = decorateVariable(varying.structName);
650 const PackedVarying &varying = varyings[varyingIndex];
652 if (varying.registerAssigned())
654 ASSERT(!varying.isBuiltIn());
655 GLenum transposedType = TransposeMatrixType(varying.type);
656 int variableRows = (varying.isStruct() ? 1 : VariableRowCount(transposedType));
658 linkedVaryings->push_back(LinkedVarying(varying.name, varying.type, varying.elementCount(),
659 varyingSemantic, varying.registerIndex,
660 variableRows * varying.elementCount()));
710 infoLog.append("No varying registers left to support gl_FragCoord/gl_PointCoord");
766 const PackedVarying &varying = vertexVaryings[vertVaryingIndex];
767 if (varying.registerAssigned())
769 for (unsigned int elementIndex = 0; elementIndex < varying.elementCount(); elementIndex++)
771 int variableRows = (varying.isStruct() ? 1 : VariableRowCount(TransposeMatrixType(varying.type)));
775 int r = varying.registerIndex + varying.columnIndex * mRenderer->getRendererCaps().maxVaryingVectors + elementIndex * variableRows + row;
778 vertexHLSL += " = _" + varying.name;
780 if (varying.isArray())
913 const PackedVarying &varying = fragmentVaryings[varyingIndex];
914 if (varying.registerAssigned())
916 ASSERT(!varying.isBuiltIn());
917 for (unsigned int elementIndex = 0; elementIndex < varying.elementCount(); elementIndex++)
919 GLenum transposedType = TransposeMatrixType(varying.type);
920 int variableRows = (varying.isStruct() ? 1 : VariableRowCount(transposedType));
923 std::string n = Str(varying.registerIndex + varying.columnIndex * mRenderer->getRendererCaps().maxVaryingVectors + elementIndex * variableRows + row);
924 pixelHLSL += " _" + varying.name;
926 if (varying.isArray())
936 if (varying.isStruct())
956 ASSERT(varying.isBuiltIn() || !varying.staticUse);