Home | History | Annotate | Download | only in randomshaders

Lines Matching refs:ValueRange

66 	IsReadableIntersectingEntry (ConstValueRangeAccess valueRange, deUint32 exprFlags)
68 , m_valueRange (valueRange)
95 IsWritableIntersectingEntry (ConstValueRangeAccess valueRange)
96 : m_valueRange(valueRange)
116 IsWritableSupersetEntry (ConstValueRangeAccess valueRange)
117 : m_valueRange(valueRange)
164 void computeRandomValueRangeForInfElements (GeneratorState& state, ValueRangeAccess valueRange)
166 const VariableType& type = valueRange.getType();
178 if (valueRange.getMin().component(ndx).asScalar() != Scalar::min<int>() ||
179 valueRange.getMax().component(ndx).asScalar() != Scalar::max<int>())
190 valueRange.getMin().component(ndx).asInt() = minVal;
191 valueRange.getMax().component(ndx).asInt() = maxVal;
198 if (valueRange.getMin().component(ndx).asScalar() != Scalar::min<float>() ||
199 valueRange.getMax().component(ndx).asScalar() != Scalar::max<float>())
212 valueRange.getMin().component(ndx).asFloat() = minVal;
213 valueRange.getMax().component(ndx).asFloat() = maxVal;
223 void setInfiniteRange (ValueRangeAccess valueRange)
225 const VariableType& type = valueRange.getType();
232 valueRange.getMin().component(ndx) = Scalar::min<bool>();
233 valueRange.getMax().component(ndx) = Scalar::max<bool>();
240 valueRange.getMin().component(ndx) = Scalar::min<int>();
241 valueRange.getMax().component(ndx) = Scalar::max<int>();
248 valueRange.getMin().component(ndx) = Scalar::min<float>();
249 valueRange.getMax().component(ndx) = Scalar::max<float>();
272 template <class T> float getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange) { return T::getWeight(state, valueRange); }
273 template <class T> Expression* create (GeneratorState& state, ConstValueRangeAccess valueRange) { return new T(state, valueRange); }
277 float (*getWeight) (const GeneratorState& state, ConstValueRangeAccess valueRange);
278 Expression* (*create) (GeneratorState& state, ConstValueRangeAccess valueRange);
329 const ExpressionSpec* chooseExpression (GeneratorState& state, const ExpressionSpec* specs, int numSpecs, ConstValueRangeAccess valueRange)
337 weights[ndx] = specs[ndx].getWeight(state, valueRange);
349 Expression* Expression::createRandom (GeneratorState& state, ConstValueRangeAccess valueRange)
351 return chooseExpression(state, s_expressionSpecs, (int)DE_LENGTH_OF_ARRAY(s_expressionSpecs), valueRange)->create(state, valueRange);
354 Expression* Expression::createRandomLValue (GeneratorState& state, ConstValueRangeAccess valueRange)
356 return chooseExpression(state, s_lvalueSpecs, (int)DE_LENGTH_OF_ARRAY(s_lvalueSpecs), valueRange)->create(state, valueRange);
359 FloatLiteral::FloatLiteral (GeneratorState& state, ConstValueRangeAccess valueRange)
366 if (valueRange.getType() == VariableType(VariableType::TYPE_FLOAT, 1))
368 minVal = valueRange.getMin().component(0).asFloat();
369 maxVal = valueRange.getMax().component(0).asFloat();
387 float FloatLiteral::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
390 const VariableType& type = valueRange.getType();
393 float minVal = valueRange.getMin().asFloat();
394 float maxVal = valueRange.getMax().asFloat();
417 IntLiteral::IntLiteral (GeneratorState& state, ConstValueRangeAccess valueRange)
423 if (valueRange.getType() == VariableType(VariableType::TYPE_INT, 1))
425 minVal = valueRange.getMin().component(0).asInt();
426 maxVal = valueRange.getMax().component(0).asInt();
442 float IntLiteral::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
445 const VariableType& type = valueRange.getType();
448 int minVal = valueRange.getMin().asInt();
449 int maxVal = valueRange.getMax().asInt();
471 BoolLiteral::BoolLiteral (GeneratorState& state, ConstValueRangeAccess valueRange)
477 if (valueRange.getType() == VariableType(VariableType::TYPE_BOOL, 1))
479 minVal = valueRange.getMin().component(0).asBool() ? 1 : 0;
480 maxVal = valueRange.getMax().component(0).asBool() ? 1 : 0;
490 float BoolLiteral::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
493 const VariableType& type = valueRange.getType();
571 // Returns whether it is possible to convert some SrcType value range to given DstType valueRange
597 bool isConversionOk (ConstValueRangeAccess valueRange)
599 return isConversionOk<SrcType>(getValueAccessValue<DstType>(valueRange.getMin()), getValueAccessValue<DstType>(valueRange.getMax()));
633 bool isConversionOk (VariableType::Type srcType, VariableType::Type dstType, ConstValueRangeAccess valueRange)
642 return convTable[getBaseTypeConvNdx(srcType)][getBaseTypeConvNdx(dstType)](valueRange);
673 ConstructorOp::ConstructorOp (GeneratorState& state, ConstValueRangeAccess valueRange)
674 : m_valueRange(valueRange)
676 if (valueRange.getType().isVoid())
680 m_valueRange = ValueRange(computeRandomType(state, maxScalars));
716 ValueRange inValueRange(VariableType(inType, 1));
724 m_inputValueRanges.push_back(ValueRange(comp));
744 const ValueRange& inValueRange = m_inputValueRanges[m_inputValueRanges.size()-1-numChildren];
760 float ConstructorOp::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
762 if (valueRange.getType().isVoid())
765 if (!valueRange.getType().isFloatOrVec() && !valueRange.getType().isIntOrVec() && !valueRange.getType().isBoolOrVec())
768 if (state.getExpressionDepth() + getTypeConstructorDepth(valueRange.getType()) > state.getShaderParameters().maxExpressionDepth)
814 AssignOp::AssignOp (GeneratorState& state, ConstValueRangeAccess valueRange)
815 : m_valueRange (valueRange)
828 m_valueRange = ValueRange(computeRandomType(state, maxScalars));
836 m_valueRange = ValueRange(entry->getValueRange());
852 // Find all possible valueranges matching given type and intersecting with valuerange
873 ValueRange::computeIntersection(m_valueRange, m_valueRange, selectedRange);
884 float AssignOp::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
886 if (!valueRange.getType().isVoid() &&
887 !canAllocateVariable(state, valueRange.getType()) &&
888 !state.getVariableManager().hasEntry(IsWritableIntersectingEntry(valueRange)))
891 if (!valueRange.getType().isVoid() && state.getExpressionDepth() + getTypeConstructorDepth(valueRange.getType()) + 1 >= state.getShaderParameters().maxExpressionDepth)
894 if (valueRange.getType().isVoid() &&
912 // - variable valuerange is made unbound
958 Variable* allocateNewVariable (GeneratorState& state, ConstValueRangeAccess valueRange)
960 Variable* variable = state.getVariableManager().allocate(valueRange.getType());
963 state.getVariableManager().setValue(variable, valueRange);
976 float dynWeight = computeDynamicRangeWeight(valueRange);
977 int numScalars = valueRange.getType().getScalarSize();
979 bool shaderInOk = isShaderInOutSupportedType(valueRange.getType()) &&
1081 VariableRead::VariableRead (GeneratorState& state, ConstValueRangeAccess valueRange)
1083 if (valueRange.getType().isVoid())
1093 ValueRange newVarRange(computeRandomType(state, maxScalars));
1107 IsReadableIntersectingEntry::Iterator first = state.getVariableManager().getBegin(IsReadableIntersectingEntry(valueRange, state.getExpressionFlags()));
1108 IsReadableIntersectingEntry::Iterator end = state.getVariableManager().getEnd(IsReadableIntersectingEntry(valueRange, state.getExpressionFlags()));
1111 bool createVar = canAllocateVariable(state, valueRange.getType()) && (first == end || getWeightedBool(state.getRandom(), createOnReadWeight));
1115 m_variable = allocateNewVariable(state, valueRange);
1128 weights[ndx] = computeEntryReadWeight(availableVars[ndx]->getValueRange(), valueRange);
1135 ValueRange intersection(m_variable->getType());
1136 ValueRange::computeIntersection(intersection, entry->getValueRange(), valueRange);
1147 float VariableRead::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1149 if (valueRange.getType().isVoid())
1158 if (!canAllocateVariable(state, valueRange.getType()) &&
1159 !state.getVariableManager().hasEntry(IsReadableIntersectingEntry(valueRange, state.getExpressionFlags())))
1165 VariableWrite::VariableWrite (GeneratorState& state, ConstValueRangeAccess valueRange)
1167 DE_ASSERT(!valueRange.getType().isVoid());
1170 IsWritableSupersetEntry::Iterator first = state.getVariableManager().getBegin(IsWritableSupersetEntry(valueRange));
1171 IsWritableSupersetEntry::Iterator end = state.getVariableManager().getEnd(IsWritableSupersetEntry(valueRange));
1174 bool createVar = canAllocateVariable(state, valueRange.getType()) && (first == end || getWeightedBool(state.getRandom(), createOnAssignWeight));
1178 m_variable = state.getVariableManager().allocate(valueRange.getType());
1201 ValueRange infRange(m_variable->getType());
1208 float VariableWrite::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1210 if (!canAllocateVariable(state, valueRange.getType()) &&
1211 !state.getVariableManager().hasEntry(IsWritableSupersetEntry(valueRange)))
1222 ParenOp::ParenOp (GeneratorState& state, ConstValueRangeAccess valueRange)
1223 : m_valueRange (valueRange)
1252 float ParenOp::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1254 if (valueRange.getType().isVoid())
1258 int requiredDepth = 1 + getConservativeValueExprDepth(state, valueRange);
1265 SwizzleOp::SwizzleOp (GeneratorState& state, ConstValueRangeAccess valueRange)
1266 : m_outValueRange (valueRange)
1313 ValueRange inValueRange = ValueRange(inVarType);
1323 ValueRange::computeIntersection(inValueRange.asAccess().component(inElemNdx), inValueRange.asAccess().component(inElemNdx), m_outValueRange.asAccess().component(outElemNdx));
1357 float SwizzleOp::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1365 if (!valueRange.getType().isFloatOrVec() &&
1366 !valueRange.getType().isIntOrVec() &&
1367 !valueRange.getType().isBoolOrVec())
1406 TexLookup::TexLookup (GeneratorState& state, ConstValueRangeAccess valueRange)
1413 DE_ASSERT(valueRange.getType() == VariableType(VariableType::TYPE_FLOAT, 4));
1414 DE_UNREF(valueRange); // Texture output value range is constant.
1485 ValueRange lodRange(VariableType(VariableType::TYPE_FLOAT, 1));
1499 ValueRange coordRange(VariableType(VariableType::TYPE_FLOAT, 3));
1523 ValueRange coordRange(VariableType(VariableType::TYPE_FLOAT, coordScalarSize));
1591 float TexLookup::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1605 if (valueRange.getType() != VariableType(VariableType::TYPE_FLOAT, 4))
1608 ValueRange texOutputRange(VariableType(VariableType::TYPE_FLOAT, 4));
1615 if (!valueRange.isSupersetOf(texOutputRange))