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();
399 float FloatLiteral::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
402 const VariableType& type = valueRange.getType();
405 float minVal = valueRange.getMin().asFloat();
406 float maxVal = valueRange.getMax().asFloat();
429 IntLiteral::IntLiteral (GeneratorState& state, ConstValueRangeAccess valueRange)
435 if (valueRange.getType() == VariableType(VariableType::TYPE_INT, 1))
437 minVal = valueRange.getMin().component(0).asInt();
438 maxVal = valueRange.getMax().component(0).asInt();
454 float IntLiteral::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
457 const VariableType& type = valueRange.getType();
460 int minVal = valueRange.getMin().asInt();
461 int maxVal = valueRange.getMax().asInt();
483 BoolLiteral::BoolLiteral (GeneratorState& state, ConstValueRangeAccess valueRange)
489 if (valueRange.getType() == VariableType(VariableType::TYPE_BOOL, 1))
491 minVal = valueRange.getMin().component(0).asBool() ? 1 : 0;
492 maxVal = valueRange.getMax().component(0).asBool() ? 1 : 0;
515 float BoolLiteral::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
518 const VariableType& type = valueRange.getType();
597 // Returns whether it is possible to convert some SrcType value range to given DstType valueRange
623 bool isConversionOk (ConstValueRangeAccess valueRange)
625 return isConversionOk<SrcType>(getValueAccessValue<DstType>(valueRange.getMin()), getValueAccessValue<DstType>(valueRange.getMax()));
659 bool isConversionOk (VariableType::Type srcType, VariableType::Type dstType, ConstValueRangeAccess valueRange)
668 return convTable[getBaseTypeConvNdx(srcType)][getBaseTypeConvNdx(dstType)](valueRange);
699 ConstructorOp::ConstructorOp (GeneratorState& state, ConstValueRangeAccess valueRange)
700 : m_valueRange(valueRange)
702 if (valueRange.getType().isVoid())
786 float ConstructorOp::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
788 if (valueRange.getType().isVoid())
791 if (!valueRange.getType().isFloatOrVec() && !valueRange.getType().isIntOrVec() && !valueRange.getType().isBoolOrVec())
794 if (state.getExpressionDepth() + getTypeConstructorDepth(valueRange.getType()) > state.getShaderParameters().maxExpressionDepth)
840 AssignOp::AssignOp (GeneratorState& state, ConstValueRangeAccess valueRange)
841 : m_valueRange (valueRange)
910 float AssignOp::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
912 if (!valueRange.getType().isVoid() &&
913 !canAllocateVariable(state, valueRange.getType()) &&
914 !state.getVariableManager().hasEntry(IsWritableIntersectingEntry(valueRange)))
917 if (!valueRange.getType().isVoid() && state.getExpressionDepth() + getTypeConstructorDepth(valueRange.getType()) + 1 >= state.getShaderParameters().maxExpressionDepth)
920 if (valueRange.getType().isVoid() &&
984 Variable* allocateNewVariable (GeneratorState& state, ConstValueRangeAccess valueRange)
986 Variable* variable = state.getVariableManager().allocate(valueRange.getType());
989 state.getVariableManager().setValue(variable, valueRange);
1002 float dynWeight = computeDynamicRangeWeight(valueRange);
1003 int numScalars = valueRange.getType().getScalarSize();
1005 bool shaderInOk = isShaderInOutSupportedType(valueRange.getType()) &&
1107 VariableRead::VariableRead (GeneratorState& state, ConstValueRangeAccess valueRange)
1109 if (valueRange.getType().isVoid())
1133 IsReadableIntersectingEntry::Iterator first = state.getVariableManager().getBegin(IsReadableIntersectingEntry(valueRange, state.getExpressionFlags()));
1134 IsReadableIntersectingEntry::Iterator end = state.getVariableManager().getEnd(IsReadableIntersectingEntry(valueRange, state.getExpressionFlags()));
1137 bool createVar = canAllocateVariable(state, valueRange.getType()) && (first == end || getWeightedBool(state.getRandom(), createOnReadWeight));
1141 m_variable = allocateNewVariable(state, valueRange);
1154 weights[ndx] = computeEntryReadWeight(availableVars[ndx]->getValueRange(), valueRange);
1162 ValueRange::computeIntersection(intersection, entry->getValueRange(), valueRange);
1173 float VariableRead::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1175 if (valueRange.getType().isVoid())
1184 if (!canAllocateVariable(state, valueRange.getType()) &&
1185 !state.getVariableManager().hasEntry(IsReadableIntersectingEntry(valueRange, state.getExpressionFlags())))
1191 VariableWrite::VariableWrite (GeneratorState& state, ConstValueRangeAccess valueRange)
1193 DE_ASSERT(!valueRange.getType().isVoid());
1196 IsWritableSupersetEntry::Iterator first = state.getVariableManager().getBegin(IsWritableSupersetEntry(valueRange));
1197 IsWritableSupersetEntry::Iterator end = state.getVariableManager().getEnd(IsWritableSupersetEntry(valueRange));
1200 bool createVar = canAllocateVariable(state, valueRange.getType()) && (first == end || getWeightedBool(state.getRandom(), createOnAssignWeight));
1204 m_variable = state.getVariableManager().allocate(valueRange.getType());
1234 float VariableWrite::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1236 if (!canAllocateVariable(state, valueRange.getType()) &&
1237 !state.getVariableManager().hasEntry(IsWritableSupersetEntry(valueRange)))
1248 ParenOp::ParenOp (GeneratorState& state, ConstValueRangeAccess valueRange)
1249 : m_valueRange (valueRange)
1283 float ParenOp::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1285 if (valueRange.getType().isVoid())
1289 int requiredDepth = 1 + getConservativeValueExprDepth(state, valueRange);
1296 SwizzleOp::SwizzleOp (GeneratorState& state, ConstValueRangeAccess valueRange)
1297 : m_outValueRange (valueRange)
1388 float SwizzleOp::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1396 if (!valueRange.getType().isFloatOrVec() &&
1397 !valueRange.getType().isIntOrVec() &&
1398 !valueRange.getType().isBoolOrVec())
1437 TexLookup::TexLookup (GeneratorState& state, ConstValueRangeAccess valueRange)
1444 DE_ASSERT(valueRange.getType() == VariableType(VariableType::TYPE_FLOAT, 4));
1445 DE_UNREF(valueRange); // Texture output value range is constant.
1622 float TexLookup::getWeight (const GeneratorState& state, ConstValueRangeAccess valueRange)
1636 if (valueRange.getType() != VariableType(VariableType::TYPE_FLOAT, 4))
1646 if (!valueRange.isSupersetOf(texOutputRange.asAccess()))