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,
55 glu::SHADERTYPE_RAYGEN,
56 glu::SHADERTYPE_ANY_HIT,
57 glu::SHADERTYPE_CLOSEST_HIT,
58 glu::SHADERTYPE_MISS,
59 glu::SHADERTYPE_INTERSECTION,
60 glu::SHADERTYPE_CALLABLE,
62 glu::SHADERTYPE_TASK,
63 glu::SHADERTYPE_MESH,
67 DE_STATIC_ASSERT(DE_LENGTH_OF_ARRAY(s_shaderStageOrder) == glu::SHADERTYPE_LAST);
69 static bool containsMatchingSubtype (const glu::VarType& varType, bool (*predicate)(glu::DataType))
85 static bool containsMatchingSubtype (const std::vector<glu::VariableDeclaration>& decls, bool (*predicate)(glu::DataType))
93 static bool isOpaqueType (glu::DataType type)
95 return glu::isDataTypeAtomicCounter(type) ||
96 glu::isDataTypeImage(type) ||
97 glu::isDataTypeSampler(type);
100 static int getShaderStageIndex (glu::ShaderType stage)
102 const glu::ShaderType* const it = std::find(DE_ARRAY_BEGIN(s_shaderStageOrder), DE_ARRAY_END(s_shaderStageOrder), stage);
115 Shader::Shader (glu::ShaderType type, glu::GLSLVersion version)
125 static bool isIllegalVertexInput (const glu::VarType& varType)
130 if (glu::isDataTypeBoolOrBVec(varType.getBasicType()))
135 static bool isIllegalVertexOutput (const glu::VarType& varType, bool insideAStruct = false, bool insideAnArray = false)
141 const bool isOpaqueType = !glu::isDataTypeScalar(varType.getBasicType()) && !glu::isDataTypeVector(varType.getBasicType()) && !glu::isDataTypeMatrix(varType.getBasicType());
143 if (glu::isDataTypeBoolOrBVec(varType.getBasicType()))
176 static bool isIllegalFragmentInput (const glu::VarType& varType)
181 static bool isIllegalFragmentOutput (const glu::VarType& varType, bool insideAnArray = false)
187 const bool isOpaqueType = !glu::isDataTypeScalar(varType.getBasicType()) && !glu::isDataTypeVector(varType.getBasicType()) && !glu::isDataTypeMatrix(varType.getBasicType());
189 if (glu::isDataTypeBoolOrBVec(varType.getBasicType()) || isOpaqueType || glu::isDataTypeMatrix(varType.getBasicType()))
208 static bool isTypeIntegerOrContainsIntegers (const glu::VarType& varType)
211 return glu::isDataTypeIntOrIVec(varType.getBasicType()) || glu::isDataTypeUintOrUVec(varType.getBasicType());
236 containsMatchingSubtype(m_defaultBlock.variables[varNdx].varType, glu::isDataTypeAtomicCounter))
241 containsMatchingSubtype(m_defaultBlock.variables[varNdx].varType, glu::isDataTypeAtomicCounter))
246 if (m_defaultBlock.variables[varNdx].layout.matrixOrder != glu::MATRIXORDER_LAST)
249 if (containsMatchingSubtype(m_defaultBlock.variables[varNdx].varType, glu::isDataTypeSampler))
251 const glu::Layout layoutWithLocationAndBinding(m_defaultBlock.variables[varNdx].layout.location, m_defaultBlock.variables[varNdx].layout.binding);
279 if (m_shaderType == glu::SHADERTYPE_VERTEX)
283 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && isIllegalVertexInput(m_defaultBlock.variables[varNdx].varType))
285 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT && isIllegalVertexOutput(m_defaultBlock.variables[varNdx].varType))
287 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT && m_defaultBlock.variables[varNdx].interpolation != glu::INTERPOLATION_FLAT && isTypeIntegerOrContainsIntegers(m_defaultBlock.variables[varNdx].varType))
292 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN ||
293 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN ||
294 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
300 else if (m_shaderType == glu::SHADERTYPE_FRAGMENT)
304 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && isIllegalFragmentInput(m_defaultBlock.variables[varNdx].varType))
306 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && m_defaultBlock.variables[varNdx].interpolation != glu::INTERPOLATION_FLAT && isTypeIntegerOrContainsIntegers(m_defaultBlock.variables[varNdx].varType))
308 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT && isIllegalFragmentOutput(m_defaultBlock.variables[varNdx].varType))
313 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN ||
314 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_OUT ||
315 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
321 else if (m_shaderType == glu::SHADERTYPE_COMPUTE)
325 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN ||
326 m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_IN ||
327 m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT ||
328 m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_OUT)
335 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN ||
336 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN ||
337 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_OUT ||
338 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
344 else if (m_shaderType == glu::SHADERTYPE_GEOMETRY)
348 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_IN ||
349 m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_OUT)
354 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && !m_defaultBlock.variables[varNdx].varType.isArrayType())
359 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN ||
360 m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
365 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN && m_defaultBlock.interfaceBlocks[interfaceNdx].dimensions.empty())
369 else if (m_shaderType == glu::SHADERTYPE_TESSELLATION_CONTROL)
373 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_IN)
376 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && !m_defaultBlock.variables[varNdx].varType.isArrayType())
379 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_OUT && !m_defaultBlock.variables[varNdx].varType.isArrayType())
384 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_IN)
387 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN && m_defaultBlock.interfaceBlocks[interfaceNdx].dimensions.empty())
390 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_OUT && m_defaultBlock.interfaceBlocks[interfaceNdx].dimensions.empty())
394 else if (m_shaderType == glu::SHADERTYPE_TESSELLATION_EVALUATION)
398 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_PATCH_OUT)
401 if (m_defaultBlock.variables[varNdx].storage == glu::STORAGE_IN && !m_defaultBlock.variables[varNdx].varType.isArrayType())
406 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_PATCH_OUT)
409 if (m_defaultBlock.interfaceBlocks[interfaceNdx].storage == glu::STORAGE_IN && m_defaultBlock.interfaceBlocks[interfaceNdx].dimensions.empty())
427 static void collectStructPtrs (std::set<const glu::StructType*>& dst, const glu::VarType& type)
444 std::set<const glu::StructType*> structTypes;
456 for (std::set<const glu::StructType*>::iterator it = structTypes.begin(); it != structTypes.end(); ++it)
465 Shader* Program::addShader (glu::ShaderType type, glu::GLSLVersion version)
467 DE_ASSERT(type < glu::SHADERTYPE_LAST);
495 glu::ShaderType Program::getFirstStage (void) const
508 return glu::SHADERTYPE_LAST;
513 glu::ShaderType Program::getLastStage (void) const
526 return glu::SHADERTYPE_LAST;
531 bool Program::hasStage (glu::ShaderType stage) const
583 const bool isOpenGLES = (m_shaders.empty()) ? (false) : (glu::glslVersionIsES(m_shaders[0]->getVersion()));
607 case glu::SHADERTYPE_COMPUTE: computePresent = true; break;
608 case glu::SHADERTYPE_VERTEX: vertexPresent = true; break;
609 case glu::SHADERTYPE_FRAGMENT: fragmentPresent = true; break;
610 case glu::SHADERTYPE_TESSELLATION_CONTROL: tessControlPresent = true; break;
611 case glu::SHADERTYPE_TESSELLATION_EVALUATION: tessEvalPresent = true; break;
612 case glu::SHADERTYPE_GEOMETRY: geometryPresent = true; break;
651 if (!findProgramVariablePathByPathName(path, this, m_xfbVaryings[ndx], VariableSearchFilter::createShaderTypeStorageFilter(getProgramTransformFeedbackStage(this), glu::STORAGE_OUT)))