Home | History | Annotate | Download | only in functional

Lines Matching refs:glu

45 static const glu::ShaderType s_shaderStageOrder[] =
47 glu::SHADERTYPE_COMPUTE,
49 glu::SHADERTYPE_VERTEX,
50 glu::SHADERTYPE_TESSELLATION_CONTROL,
51 glu::SHADERTYPE_TESSELLATION_EVALUATION,
52 glu::SHADERTYPE_GEOMETRY,
53 glu::SHADERTYPE_FRAGMENT
57 DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(s_shaderStageOrder) == glu::SHADERTYPE_LAST);
59 static bool containsMatchingSubtype (const glu::VarType& varType, bool (*predicate)(glu::DataType))
75 static bool containsMatchingSubtype (const std::vector<glu::VariableDeclaration>& decls, bool (*predicate)(glu::DataType))
83 static bool isOpaqueType (glu::DataType type)
85 return glu::isDataTypeAtomicCounter(type) ||
86 glu::isDataTypeImage(type) ||
87 glu::isDataTypeSampler(type);
90 static int getShaderStageIndex (glu::ShaderType stage)
92 const glu::ShaderType* const it = std::find(DE_ARRAY_BEGIN(s_shaderStageOrder), DE_ARRAY_END(s_shaderStageOrder), stage);
105 Shader::Shader (glu::ShaderType type, glu::GLSLVersion version)
115 static bool isIllegalVertexInput (const glu::VarType& varType)
120 if (glu::isDataTypeBoolOrBVec(varType.getBasicType()))
125 static bool isIllegalVertexOutput (const glu::VarType& varType, bool insideAStruct = false, bool insideAnArray = false)
131 const bool isOpaqueType = !glu::isDataTypeScalar(varType.getBasicType()) && !glu::isDataTypeVector(varType.getBasicType()) && !glu::isDataTypeMatrix(varType.getBasicType());
133 if (glu::isDataTypeBoolOrBVec(varType.getBasicType()))
166 static bool isIllegalFragmentInput (const glu::VarType& varType)
171 static bool isIllegalFragmentOutput (const glu::VarType& varType, bool insideAnArray = false)
177 const bool isOpaqueType = !glu::isDataTypeScalar(varType.getBasicType()) && !glu::isDataTypeVector(varType.getBasicType()) && !glu::isDataTypeMatrix(varType.getBasicType());
179 if (glu::isDataTypeBoolOrBVec(varType.getBasicType()) || isOpaqueType || glu::isDataTypeMatrix(varType.getBasicType()))
198 static bool isTypeIntegerOrContainsIntegers (const glu::VarType& varType)
201 return glu::isDataTypeIntOrIVec(varType.getBasicType()) || glu::isDataTypeUintOrUVec(varType.getBasicType());
226 containsMatchingSubtype(m_defaultBlock.variables[varNdx].varType, glu::isDataTypeAtomicCounter))
231 containsMatchingSubtype(m_defaultBlock.variables[varNdx].varType, glu::isDataTypeAtomicCounter))
236 if (m_defaultBlock.variables[varNdx].layout.matrixOrder != glu::MATRIXORDER_LAST)
239 if (containsMatchingSubtype(m_defaultBlock.variables[varNdx].varType, glu::isDataTypeSampler))
241 const glu::Layout layoutWithLocationAndBinding(m_defaultBlock.variables[varNdx].layout.location, m_defaultBlock.variables[varNdx].layout.binding);
269 if (m_shaderType == glu::SHADERTYPE_VERTEX)
273 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && isIllegalVertexInput(m_defaultBlock.variables[varNdx].varType))
275 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT && isIllegalVertexOutput(m_defaultBlock.variables[varNdx].varType))
277 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT && m_defaultBlock.variables[varNdx].interpolation != glu::INTERPOLATION_FLAT && isTypeIntegerOrContainsIntegers(m_defaultBlock.variables[varNdx].varType))
282 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN ||
283 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN ||
284 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
290 else if (m_shaderType == glu::SHADERTYPE_FRAGMENT)
294 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && isIllegalFragmentInput(m_defaultBlock.variables[varNdx].varType))
296 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && m_defaultBlock.variables[varNdx].interpolation != glu::INTERPOLATION_FLAT && isTypeIntegerOrContainsIntegers(m_defaultBlock.variables[varNdx].varType))
298 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT && isIllegalFragmentOutput(m_defaultBlock.variables[varNdx].varType))
303 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN ||
304 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_OUT ||
305 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
311 else if (m_shaderType == glu::SHADERTYPE_COMPUTE)
315 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN ||
316 m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_IN ||
317 m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT ||
318 m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_OUT)
325 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN ||
326 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN ||
327 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_OUT ||
328 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
334 else if (m_shaderType == glu::SHADERTYPE_GEOMETRY)
338 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_IN ||
339 m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_OUT)
344 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && !m_defaultBlock.variables[varNdx].varType.isArrayType())
349 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN ||
350 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
355 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN && m_defaultBlock.interfaceBlocks[interfaceNdx].dimensions.empty())
359 else if (m_shaderType == glu::SHADERTYPE_TESSELLATION_CONTROL)
363 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_IN)
366 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && !m_defaultBlock.variables[varNdx].varType.isArrayType())
369 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT && !m_defaultBlock.variables[varNdx].varType.isArrayType())
374 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN)
377 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN && m_defaultBlock.interfaceBlocks[interfaceNdx].dimensions.empty())
380 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_OUT && m_defaultBlock.interfaceBlocks[interfaceNdx].dimensions.empty())
384 else if (m_shaderType == glu::SHADERTYPE_TESSELLATION_EVALUATION)
388 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_OUT)
391 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && !m_defaultBlock.variables[varNdx].varType.isArrayType())
396 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
399 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN && m_defaultBlock.interfaceBlocks[interfaceNdx].dimensions.empty())
417 static void collectStructPtrs (std::set<const glu::StructType*>& dst, const glu::VarType& type)
434 std::set<const glu::StructType*> structTypes;
446 for (std::set<const glu::StructType*>::iterator it = structTypes.begin(); it != structTypes.end(); ++it)
455 Shader* Program::addShader (glu::ShaderType type, glu::GLSLVersion version)
457 DE_ASSERT(type < glu::SHADERTYPE_LAST);
485 glu::ShaderType Program::getFirstStage (void) const
498 return glu::SHADERTYPE_LAST;
503 glu::ShaderType Program::getLastStage (void) const
516 return glu::SHADERTYPE_LAST;
521 bool Program::hasStage (glu::ShaderType stage) const
573 const bool isOpenGLES = (m_shaders.empty()) ? (false) : (glu::glslVersionIsES(m_shaders[0]->getVersion()));
597 case glu::SHADERTYPE_COMPUTE: computePresent = true; break;
598 case glu::SHADERTYPE_VERTEX: vertexPresent = true; break;
599 case glu::SHADERTYPE_FRAGMENT: fragmentPresent = true; break;
600 case glu::SHADERTYPE_TESSELLATION_CONTROL: tessControlPresent = true; break;
601 case glu::SHADERTYPE_TESSELLATION_EVALUATION: tessEvalPresent = true; break;
602 case glu::SHADERTYPE_GEOMETRY: geometryPresent = true; break;
641 if (!findProgramVariablePathByPathName(path, this, m_xfbVaryings[ndx], VariableSearchFilter::createShaderTypeStorageFilter(getProgramTransformFeedbackStage(this), glu::STORAGE_OUT)))